BACK to menu
GDD
play as a Lizard or gecko trying to get home through a dangerous environment.
being cold blooded the speed of movement is based on the amount of light or shadow you are exposed too. (shadows theme)
enemies hide in shadows (cocaroaches?). Some are limited to move only in shady areas. (shadows theme)
stopping and waiting in lighter/sunny areas increases blood temperature.
bathing on rocks raises temperature faster.
blood temperature is tracked and displayed through a blood temp meter
there is a mechanic to change color/colour to allowing sneaking past some enimes when the colour/color matches(alchemy theme).
Mechanics
Initial mechanics
- tail detachment and posible growing back
- speed based on blood temp
- changing light conditions for environment
- faster charge areas: flat rocks
- plants with berries for health
- crystal that when sunny make a light patch that can be used to change colour
- plants with berries for colour change
- colour change fade or some reset mechanic
- overheating mechanic
- enemies: other coloured lizards, roaches, snails
- enemies can patrol an area/path
Game engine
Does a browser count as an engine?
All html, javascript and canvas.
UI and controls
minimal UI and simple keyboard controls
- Hit points
- blood temp
- WASD or arrow key moves
Art
Can't draw, could use emoji and fonts. use colourblind chart for colour selection or grey scale to check contrast.
- No art
- No images
- All code
Audio
Investiagte below list as all are code based, or get free ambient sounds library as time runs out. If possible no sound files other than midi or text that can be embedded in game.
- 8bit chip tunes
- MIDI eg short chorus "la cucaracha" when roaches appear
- tome generators and white noise like olf arcade machines explosions etc
Misc
Additional documents, instructions, alternative language files
Development timeline
* items took most of the time outside looking up JavaScript and canvas functions on MDN.
** this took 12+ hours, crash progress loss, missed *-1, post revocery and test canvas visual tracing took 1 hour. lesson create tools and visualisations for anything math related.
- create html page
- add canvas
- map mouse to canvas coords
- learn how to draw procedural animations
- create vector class*
- create chain/spine class*
- draw snake
- move snake
- keyboard controls are bad. make mouse controls
- move snake
- learn how to seperate timing from animation*
- draw static object eg plant
- initial click detection on plants and non-accessable areas
- draw enemy
- make enemy class
- rotate enemy
- move enemy
- make enemy detect player
- make enemy move towards player
- make enemy have moving legs*
- add background canvas
- generate noise texture
- learn offscreen canvas and copy to background canvas*
- colision detection
- add canvas for UI
- Hitpoints
- colour change on hit
- end game when 0 HP
- add lang file and move strings externally
- Blood temperature
- rocks to increase temperature
- colour change on heating
- add timers
- pickups
- heal on pick up
- immunity after collision and healing
- immunity recode as conflicts with multiple timers
- colour change on pick up (for theme)
- add timers
- colour change recode as removes multiple timers
- environment light/shadow tracking
- add hearing to side of enemies
- enemies turn on hearing
- game loop if enemies sees player dont check hearing or they twitch about
- Missed: scroll screen which cant be done with current canvas and coord system*
- add viewwport canvas and move most other canvas to offscreen at full x10 play area*
- dynamically add debug canvas at 1/10 size*
- move debug canvas to side. almost make mini map
- add debug on off options to hide all debug div tags and new canvas
- redo all position code with scrolling
- add game clock
- added touch event support. in theory as cannot test
- add shadow overlay static needs linking to function (for theme)
- add class for drawing and animating home/goal area
- add final destination so can finish as win condition
- link shadow to layer, plus improved from random change to sine (for theme)
- function to read pixel data from a canvas
- made canvas filled white and render plants onto it in colour. works as click map
- add {willReadFrequently:true} to click map canvas as reads up to 1000 per second and browser generates warning/error
- click map canvas first read is x16 slower than previous then x2 faster. total time 1ms +- 0.2ms in edge, 8% cpu 8c//16t 4GHz
- html meta tags added for viewport etc to clear broswer info, warning
- added alpha false to context2D on those that are filled
- colourblind simulation greyscale filter added
- colourblind palettes added
- linked debug and colourblind simulation greyscale to URL parameters.
this shows item outlines are too similar and current colour selection contrast sometime overlaps.
- created texture for terrain. using niose and no image files simialr to BG texture.
- fix timer replacements to only set lonnger times
- add collision/terrain canvas and draw plants and terrain to in for click map canvas
- created function to check path from position A to B on collision map. **
current location to mouse for player and checks every pixel along path for collisions
- terrain
- fixed plants spikes expanding x4 expected range using lineJoin = "round"
- fixed charge on rock area, added lightning bolt symbol
- tested first enemy. updated vision to be fixed distance na not scale with creature size
- recover colopurblind files. set potion colour changes to array picked from colourblind palettes
- change player outline to lighter colour as shadow increases to make easier to see snake.
made inverse to shadow tint, remove outline from colour change and hit functions
- snail added
- make enemies ignore player if the correct colour (for theme)
snail mechanic to watch but not follow if snake matches shell colour
- randmonise start lighting
- snail trails added
- snail trials dry up over time
- make enemies patrol or move along paths
- find first isPathVaild getImageData take 20ms skips 2 frames att 144Hz. Cannot get this to other than first read so not an issue.
- tracked down bug in isPathValid when LX or LX = 0
- added more terrain ~50% done
- fixed path finding bug
- add roach attack and timeout after attack
- multiple changes to item can colour pickups
- added noise audio. has bug where gain doesnt apply first 1-2 times but code is correct.
- added audio notes. added ADSR envelope. Disabled all audio. too harsh and not enough time to complete
- click to pass through terrain now debug only
- finish and populate level
- make itch page
- upload to itch
- test
- sumbit entry
To do
- add shadow areas to limit enemies (for theme)
- make enemies type that reduce temp to slow player down? (low)
- stop enemies walking based on click map canvas. use same function as player in external js file
- stop enemies seeing or hearing through walls eg ray cast and check in class vision function (likely not time)
- find a way to stop timers from patrol system at game end (low)
- add more plant shapes (low)
- add rock shapes to rocks to replace placeholder circles (low)
- make title screen
- make intro screen
- add quit to menu or restart option, so dont have to refresh page. possible addchild()ahref on win/lose
- change player colour options to be greyscale friendly. may have to read current tint and adjust colours (low)
- copy debug canvas as mini map and remove enemies so it just shows player and terrain (low)
- move each offscreen canvas to its own .js as those will run in thread with canvas not main tab thread (low)
- dynamically add and remove enemies to render when close rather than constant (low)
- isPointInPath() method could replace isClickValid() is all terrain was stored in var or const. would remove first pixal reads before validating path
- redo snake draw/render function, still original testing version with straight lines and when looped the outline disappears in the overlap
Realisations
For more theme
should have inverted system hot is baad, cool is good.
Swap snake a worm and black rocks for water.
BACK to menu