Shape Defense
Shape Defense is a top-down tower-defense-based game written solely with C++
and SDL2. It's partly an exercise in game engine architecture design; partly an exercise in optimization; and partly an exercise in game construction :)
Feel free to contribute; just send me a message (preferably), or a pull request directly.
Dependencies List:
Tools Used:
- valgrind
- gdb
- CLion
- CMake
- gnuprof
Feature List:
done, [n] future work
- Game
- Main Menu
- Gameplay
- Towers
- Can build towers
- [n] can repair towers
- [n] can destroy towers
- Resource system
- Can have and spend resources
- [n] can have buildings that modify resource usage / storage
- [n] Upgrade system
- Balancing
- Has a few types of towers, one type of enemy
- [n] More types of towers and enemies
- Engine (very roughly an Entity-Component-System design)
- Physics
- efficient quadtree-based collision system
- Graphics
- Can render entities efficiently
- [n] Can render entity types
- [n] Can move the camera around smoothly
-
- [n] Audio
- Basic AI
- Enemies go towards closest player entity and will attack
- [n] "heuristic grid" of best places to go towards, i.e. around walls
- [n] Advanced AI
- [n] Limited enemy view range
- [n] "Alive" enemies
- [n] I/O
- [n] serialization / deserialization
- UI
- Have buttons, menus, etc.
- Supports drawing from text files
- [n] Easily supports drawing from images
- Misc
- [n] Write Wiki / Documentation
- [n] Plan out game design and engine design
- [n] write unit testing system
Known bugs:
- [n] no unit testing system: whoops, this is pretty important actually
- [n] Quadtree: sometimes, the quadtree system seems to "lose" elements, where
elements don't seem to be where we expect them to
- [n] entity lifetimes: needs checking