Gameplay project
Vampire Survivors Like
A C++17 top-down survival action game with escalating combat, automatic attacks, four enemy archetypes, power-ups, fixed and seeded infinite maps, and multi-slot save/load.
Project overview
Architecture design
The runtime is layered so the frame loop coordinates systems without depending on their concrete implementations.
- 01
Lifecycle and composition: Main composes long-lived services; GameManager owns Menu, Save List, Playing, Victory, and Defeat transitions; GEGameSession coordinates one run.
- 02
Provider boundaries: MapProvider, PlayerProvider, EnemyProvider, ProjectileProvider, and PowerUpProvider keep session orchestration independent from concrete managers.
- 03
Runtime lifecycle: managers maintain active views while GEObjectPool reuses enemies, projectiles, and power-ups; collision, drops, and cleanup stay with their owning systems.
- 04
Snapshot persistence: versioned state captures the map seed and camera, session timer, player combat and buffs, and every active entity before the repository atomically replaces a save slot.
Engineering highlights
- 01
Structured a complete 120-second survival session across menu, gameplay, save, victory, and defeat states, with provider interfaces separating gameplay systems.
- 02
Built nearest-target automatic fire and a player-triggered AOE that prioritizes high-HP enemies, alongside four enemy archetypes and time-based spawn scaling.
- 03
Managed high-churn enemies, projectiles, and power-ups through reusable object pools, active-object views, collision handling, and off-screen cleanup.
- 04
Implemented fixed and seeded infinite tile maps plus a versioned, multi-slot snapshot system that restores the player, world, combat timers, enemies, projectiles, and power-ups.