A naive BYTEPATH implementation as a final project for CS50’s Introduction to Game Development based on BYTEPATH Tutorial.
This game it's a small, replayable, arcade score-chaser where the only goal is beat every enemy and survive.
The Stage
state is responsible for managing the entire game and controlling the Director
and Area
game objects.
The Director
is responsible for spawning enemies and resources, and count the game round to increase the difficulty by spawning more enemies.
The Area
controls, renders and check collisions in the game world like enemies, resources and the Player
.
The Player
controls a ship that navigate in the Stage
where enemies and resources appears, enemies can be beaten and resources can be collected.
The resources can be:
Boost
: increase boost gauge,Player
uses boost to make ship faster or slower;Health
: increase health gauge,Player
uses health to keep alive and enemies and enemy project reduce this gauge;Ammo
: increase ammo gauge,Player
uses ammo to shoot special attacks;Attack
: change attack type,Player
use different types of attacks:Back
: shoot front and back;Double
: double shoot;Rapid
: shoot faster;Side
: shoot front and from both sides;Spread
: shoot faster and randomly;Triple
: triple shoot.
The enemies can be:
Rock
: common rock, just float around;Shooter
: ship that spawns projectiles.
The game scenes are:
Console
: manage game start by showing a console where player can type commands:start
: attachStage
scene to start game;resolution
: change game resolution;exit
: exit game;
Stage
: formelly game loop wherePlayer
plays around, provides some sub-states:pause
: pause the game;game over
: show game over screen while game still running in background.
Console
inputs:
- The own keyabord to execute console commands;
- [Enter] to run command.
Scene
inputs:
- in-game sub-state:
- [Arrow Up] to accelarate ship;
- [Arrow Down] to deaccelarate ship;
- [Arrow Left] to turn ship left;
- [Arrow Right] to turn ship right;
- [Escape] toggles pause menu;
- pause or game over sub-state:
- [Q] return to
Console
; - [R] restart
Stage
;
- [Q] return to
From the tutorial, those features are not implemented for lack of time:
- Player passives to provide in-game features and make the game more enjoyable;
- Skill tree to provide passive structures;
- Playable different ships;
- Shaders and visual effects;
- Achivements; and
- Save states.
Built with LÖVE2D 11.5 and Lua
- Sheepolution/classic for objects
- xiejiangzhi/input for input handling
- vrld/hump for timer, vector creation and camera handling
- Yonaba/Moses for table utils
- Ulydev/push for resolution management
- idbrii/love-windfield for advanced box2D utils
- utf8 for utf8 string handling in LuaJIT
git clone --recursive https://github.com/jusqua/bytepath
love .
Thanks to a327ex for the incredible source of learning.