The game I'll be working on is Explosion Golf. My current dev plan is:
- basic screen regions laid out
- all game elements represented by simple shapes (square or disc/filled-circle) of varying colors
- course / hole has a simple BG image
- can zoom in / out (center of course / hole as anchor)
- avatar can run around the course / hole and view remains centered on avatar
- inventory shows the ball and 4 sizes of bombs, 100 each for now
- can drop the ball on the course by dragging and releasing
- can drop bombs on the course by dragging and releasing
- dropping a bomb adds it to the detonation queue
- bombs only dropped when in reach of the avatar
- if bomb dropped outside of reach, return it to the inventory (and remove it from the detonation queue)
- highlight any bomb (or other item) in reach of the avatar
- bombs in reach of the avatar may be picked up
- when ball is dropped a countdown timer starts
- pause button
- when timer ends a scoring event is triggered
- when bombs are dropped they give the timer UI, but times are all just 0
- detonate button sets off all dropped bombs
- expanding circle animation for dropped bombs
- timer UI allows actual delays to be set
- once detonate is pressed, can’t place any more bombs until all queued ones have exploded
- explosions that touch /cover the ball cause a ‘pushed’ event on it
- ball has simple movement data that animates the ball: direction, speed
- ball movement decays towards 0 velocity / null vector in stages (each stage has a start loc, a target loc, and a speed; next stage is calced from speed and dir of previous stage)
- a ball that goes out of bounds re-appears still near the place it left, and 3 strokes are added to the score
- pushed events alter ball movement data
- course has a target flag (add to course object definition and use a screen designation)
- scoring event calculates a score and displays it
- course has a tee area (add to course object definition and use a screen designation)
- avatar starts in center of the tee area when play start
- avatar cannot leave the tee area and cannot drop bombs (all except the ball are inactive)
- 1 ball, dropped on a tee area (rect) - allows avatar to wander freely and to drop bombs
- course has regions that are basic rect shapes: fairway, rough, green, sand trap (add to course definition and use screen designations)
- speed of avatar movement affected by region
- ball movement decay affected by region of each end stage
- course has static obstacles: trees, shrubs which are circles
- ball that hits an obstacle gets a bounce event
- bounce event affects the ball movement data (random deflection and speed decrease)
- different obstacles have different bounce effects (chance to happen, and effect when it does)
- obstacles may be solid, in which case the avatar cannot pass through them, or passable in which case it slows the avatar down a lot
- course has wall obstacles which are solid and have an angle
- walls bounce the ball predictably
- define several holes
- when one hole is complete go on to the next
- track hole scores across whole game
- present summary of total score
- use real avatar sprite - animate movement (vary by speed) and stationary; no directionality
- directionality to avatar animation
- use static images for bombs and ball
- use explosion sprite (single animated sprite, scaled appropriately)
- use bg images for regions? not sure if I can do this in JS...
- use image for detonate button
- use fuse image for ball timer
- use image for flag
- use image for obstacles
- pretty title screen
- pretty help / how-to screen
- help button on play screen; pauses game, play button closes the screen and resumes play / unpauses
- sounds placeholder / hook : avatar movement
- sounds placeholder / hook : avatar movement on terrain / regions (tee, fairway, rough, green)
- sounds placeholder / hook : ball drop
- sounds placeholder / hook : bomb drop
- sounds placeholder / hook : timer set
- sounds placeholder / hook : bomb pickup
- sounds placeholder / hook : detonate pressed
- sounds placeholder / hook : bomb explodes (4 sizes)
- sounds placeholder / hook : ball explodes / scoring
- sounds placeholder / hook : ball hits bush obstacle
- sounds placeholder / hook : ball hits tree obstacle
- sounds placeholder / hook : ball hits wall obstacle
- sounds placeholder / hook : ball ends movement stage
- sounds placeholder / hook : ball hits flag
- sounds placeholder / hook : golf clap
- sounds placeholder / hook : button clicked
- can find additional bombs on the course (drawn above terrain and below obstacles) (add to course definition)
- explosions leave scorch marks on the course
- obstacles have hit points
- obstacles take damage from explosions
- obstacles can be destroyed
- avatar has a stun counter
- avatar moves slower the more stunned it is
- avatar loses stun over time
- explosions that impact the avatar add stun
- explosions that impact the avatar move it
- explosions leave behind sand trap regions (size depends on size of the explosion)
- in new sand trap regions bushes and walls are destroyed, then trees are turned into bushes
- actual sounds in/at sound hooks
- can find additional items around the course: extra time on the ball, temporary faster movement (energy drinks), permanent movement bonus (cleats), bonus points (???)
- model ball height during movement to determine whether obstacles could be hit
- model cumulative terrain damage to create sand trap regions instead of basic bomb->trap approach
- and on and on and on and on...
Based on past experience I expect to get off track somewhere around step 2.
I will write a 92-point evaluation of it when you're finished :)
ReplyDelete