Shadow fight is an action game where the player is matched up against an AI and must defeat them by whittling down their health. Inspired by numerous fighting games, the fundamental game logic will be extremely similar to the more popular and well known games.
Users will take control of an avatar with basic movement, jump and crouch, and have the ability to attack the enemy. The model hitbox will change depending on the avatar position, as well as if they are crouching, and whenever an attack lands (simple collision won't count), damage is done. The AI will perform random movement/attacks, but may implement algorithmic combos.
Shadow Fight will have basic MVPs that must be met:
- User's avatar can move back and forth, and can jump/crouch
- Avatar can basic attack and deal damage
- Charge up attack causes CC (Crowd control)
- Sprite will decrease hitbox on crouch
- Basic AI will be implemented to 'fight back'
- Randomized background
In addition, some QoL or extra features:
- Variety of avatars to choose from, with different moves
- Allow for chain CC combos
- Changing keybinds
- Timer
- Finishing moves
The game itself should take up most of the screen, with a basic menu screen as an introduction, with links to my Github and LinkedIn in a separate section. Upon starting, the game should bring you into a screen typical of most fighting games, a basic 2D 'arena' with health bars displayed at the top, and a timer (potentially). The game should be able to be paused mid fight and continued whenever.
Basic technologies used in the project will be:
- Vanilla JS for overall coding and game logic
- HTML5 Canvas for DOM manipulation and rendering
- Webpack for script bundling
- Web Audio API for sprite associated sound effects (if time permits)
Custom technologies in the form of scrips will include:
- Arena.js
- This will handle the background of the game, potentially an animated background setting
- Status.js
- This will handle the health bars, timers, and pause menu
- Avatar.js
- This will handle an instance of the player avatar, as well as the AI avatar
- Audio.js
- this will handle the audio effects from actions, and/or background music
- Flesh out README and proposal
- Complete prepare file structure, brainstorm ideas
- Implement page structure
- Set up Node modules and webpack
- Create a starting screen
- Implement basic movement for player avatar
- Add a basic background
- Add basic health bars and timer
- Add static enemy AI
- Implement attacking and dealing damage (reducing health)
- Fully style sprite animations and background
- Implement second attack that causes CC
- Implement CC-ed status to allow for combo chaining
- Implement basic AI
- Fix bugs
- Finish styling
- Implement complicated AI
- Implement different avatars with different attacks
- Implement mana bar for CC attack (May be basic MVP instead)