Dynamo is an endless top-down shmup, with the goal of getting the highest score. If a score is high enough it's placed on the online score board (still WIP, don't have online highscore board, but I have a local one).
- Flow
- Sound
- Game mechanics
- Tech stack
- Roadmap
- v0.2.0 (basics)
- v0.3.0 (enemies)
- v0.4.0 (menu)
- v0.5.0 (game over screen)
- v0.5.1 (feedback from andrew + other stuff)
- v0.6.0 (game feel and pacing fixes)
- v0.7.0 Place highscore on a server
- v0.7.1 Extras from v0.6.0
- v0.8.0 (Loading Screen fix up)
- v0.9.0 (new plane: Meandering plane)
- v0.10.0 (audio)
- v0.x.0 (polishing)
- Game startup is when we show the loading bar as we load all the assets. No boot stage or showing of logo during loading.
- Loading bar is a light gray background with black bar being filled. Use PIXI Graphics
-
When this is done, we'll show the audio prompt, which is always going to be "yes".
- After assets have loaded and the user has been forced to play audio we show the
main-menu
.- This will be built using PIXI's components and not HTML.
- The main menu will have it's logo and play button on the left side.
- Highscore list in the middle (or middle-right) section.
- There will be a video playing in the background with footage from WW2 and an editted version of Edith Piaf's "Non je ne regrette rien" playing in the background.
- Check to make sure that there's good contrast between bg and foreground.
- When player presses the start button, the music quickly fades out (use 520ms) and they are taken into the game itself.
- The plane will be placed a few pixels above the bottom border and horizontally centered.
- The spawner will have a certain number of seconds setup for spawning units.
- This number of seconds will change based on how long the player has been playing (e.g. it will take 5 minutes for the player to reach the most difficult point of game).
- The spawner will also only start spawning certain units after certain points are hit within that 5 minute span.
- Wave types:
- Have first wave be just fighters, flying down.
- Planes can fly in formation if needed.
- In wave two, have fighters like the previous wave but they shoot down and need x3 the damage to destroy.
-
Wave three, fighters that move to make sure they are in front of you as they shoot. (x5 needed. Comparing with wave 1 fighters)-
A cool trick would be to put them in a formation as bomber escort
-
-
Wave four, bombers show up. They can't hit you from far but can be tricky at close range (bombers take x9 fighter damage)
- Have first wave be just fighters, flying down.
- Damage types:
- Normal damage is how much damage a plane takes from one player shoot
- Critical damage occurs when the Critical damage multiplier is greater than 1. Critical damage multiplier is a number multiplied by the plane's damage to get the new damage.
- This can happen when a plane is hit on a critical area (cockpit, engines). Smoke can come out of these areas.
- Enemy types:
- normal plane: it's a fighter plane but for some unknown reason it just doesn't shoot at you. It's also lightly armored (defense: 1; Critical: 1; Critical_areas: 0)
- fighter plane: this plane shoots downwards as it moves (defense: 3; Critical: 1; Critical_areas: 0)
- 4 shot bomber plane: this plane shoots in 4 directions (defense: 9; Critical: 2; Critical_areas: 3)
- 8 shot bomber plane: this plane shoots in 8 directions (defense: 9; Critical: 2; Critical_areas: 3)
- meandering planes: this plane shoots whilst meandering (defense: 6; Critical: 1.5; Critical_areas: 3)
- Getting hit takes out one of your 9 lives.
- Hitting an enemy can cause fumes to come out
- Also, destroying an enemy plane has the chance of dropping a parachuted pilot.
- Honestly I don't know how easy it will be to get the asset for this, but maybe we can do a simple parachute without trying to show a human body. Then do a point vs circle comparison
- Two Player (co-op) mode:
- Players share score
- Players can quick revive each other for free if they grab the dog tag. But this can be done only once per life.
- The "Game Over" title at the top
- Show score right below that
- Can have a "new record" text top right of it
- Lastly, place the
"Play Again""Shoot to Play Again" button
- Main Menu
- Button hover
- Button press
- Game
- Move
- Shoot
- Hit enemy
- Enemy shoot
- Enemy explode
- *Enemy Swoop in
- *Pick up other player's dog tag
- Player lost life
- Player lost life because tag not picked
- Player can move up, down, left, and right
- Use
WASD
for movement. - As time passes you lose fuel. The lower your fuel is the less you can move forward and backwards. But with lower levels comes nimbleness and thus you'll be able to fly left and right with greater speed (this will in turn make it easier to catch any dropping fuel)
- You shoot with the
N
key on the keyboard. - Bullets will always have a short range, so they'll die out at some point. You can't snipe a plane from one end of the screen to the other
- If your bullet hits the enemy plane, hit plane will flash white.
- When a hit enemy's health drops below 50% then it switches to being in a damaged state.
- Smoke should start coming out.
- Whenever the health drops below 40%/30%/20%/10% a new smoke blume is created where the crippling bullet hit (this could look messy)
- I like my controller/keyboard with all the buttons intact and working for as long as is possible. 1 issue with this genre is people hold the shoot button the whole time. What I'm going to do instead is add a meter that fills up as your gun fires.
The game looks fine on mobile, with a few exceptions, the formations might have to be tweaked in order to have the right type of pacing. That's not the only thing though:
- The text needs to be responsive.
- The game needs to have different formations for different device types, we can't have the same formations for mobile and desktop.
- Overheat feature should be disabled.
- The player's hit box will be smaller than the other planes who have full body (normal) hit boxes. The player will only have a hit box around it's cockpit.
- This should give the player more breathing room.
- Hitpoints: you have 1
- Lives: you have 9 (This is to show the player that this will not be easy)
- Fuel: Starts out at 100 drops as time goes by.
- Overheat meter: starts at 0, maxes out at 100%. Increases the longer you hold the trigger. amountIncrease < amountDecrease.
- Pixi.js as renderer
- Howler.js for audio
- Keycon for handling keyboard input
- Custom Gamepad input handler
- Pixi-Tween for animations
- Add the loader bar into the game
- Load plane
- Then move on to movement for plane
- Followed by plane shooting (alternating fire)
- Add scrolling background using tiledSprite
- Basic enemy spawning
- Add collision (see if you'll need a quad tree for this, usually do for shmups anyways)
- Add custom collision for player
- Spawning in formations
- Spawning in waves (Timed waves just like in Game Maker 8 tut)
- Show UI, show score
- Place Score top left
- Add menu elements (title and button)
- For the initial setup use only the white text and white button with
- For now avoid showing highscore section
- Add title
- Add Score
- Add "Play Again" button
- Implement arrows+spacebar control combo into game.
- 4 point bomber should have different smaller sprite
- Easier way to kill bombers.
- Implement Gamepad
- Implement gamepad vibration
- When shooting
- When things blow up
- Vibrate when things blow up
- Intensity based on how player is to explosion
- Screen responsiveness
- Make menu responsive
- Make game-over screen responsive
- Planes that spawn should have their value moved closer to the player's position
- When a plane spawns it should only shoot when it's on the screen
- Create
server.js
file for serving game on node server. - Launch game onto heroku.
- Update: Wave 1 planes should move faster
- This will be a wave 1 alternate, so pick between the 2, the standard version should have a higher likelihood of spawning.
- Screen shake when things blow up
- The closer you are to an explosion the more the screen shakes.
- Blow up shockwave filter
- Add flash anim for hit enemies
- Fix responsiveness of video on menu page
- Game (Create sound manager for this. Also add blur event for game audio to be muted)
- Shoot
- Hit enemy
- Kill Confirmed
- Enemy explode
- Game over music
- Water must wiggle
- Switch to parcel 2
- Add the version number (place javascript code into the
src/index.html
that creates a VERSION_TAG value and sets it to our package.json file's version. This way we always have the version update to date with the game code.)
- BUG: Allow user to switch control schemes during game (post using gamepad)
- NEW: Analog controls
- UPDATE: Move the "Click ME to start Game" to after assets load
- UPDATE: Make game over scene background translucent
- UPDATE: Allow user to move past input prompt and menu scene by pressing spacebar or controller buttons
-
UPDATE: Change "click on THIS..." to an audio prompt instead. - NEW: Add a way for controller to pick between the two options (A for yes and B for no)
- NEW: Added firebase analytics to measure session time.
- NEW: Add explosion animations
- NEW: Add a plane falling from the sky on game over screen
- Place highscore on a server
- Have points fly to the score
- Pulse score when receiving score
- Game audio
-
Enemy shoot(Too much noise, will have to be implemented a bit differently) - Player lost life
-
- Add blur event for SoundController
- Add system to load different formations depending on whether we are on mobile or not.
- Update: add system for multiple critical areas
- NEW: Add a help page with instructions on playing the game (Controls and such)
- Fix?: Apparently enemies can't shoot from outside the game's border.
- Update: Move click prompt to loading screen
- Loading text and loader should disappear and "Press an key" text should show centre of the screen
- Add touch controls. Disable overheat feature when touch is enabled.
- Add code to disable controller controls when the keyboard is used.
- New: Add instructions on how to play
- WASD or Arrow keys to move player (put this on the left side)
- N or Spacebar to fire (put this on the right side)
- New: Plane that meanders
- Add text localisation
- Main Menu
- Button hover
- Button press
- Game
- Move -->
- *Enemy Swoop in
- *Pick up other player's dog tag
- Player lost life because tag not picked
- Add video background for menu
- Don't forget the music
- Add smoke trails
- Add bullet trails
- Add "dynamic" music
- Damage signs
- Add lives right below score in UI
- Pick ups
- Fuel speed change
- Parachuting enemies
- Add a second player in a sort of co-op mode
- Add settings
- Audio control
- controller deadzone, mapping, vibration toggle, etc.
- Screen shake toggle