Technology stack
What it's built on.
C++17 and SFML 3. C++17's std::unique_ptr, std::optional,
and move semantics enabled clean ownership transfer throughout the codebase - especially
in the NPCBehaviour swap and PhaseManager factory method. SFML 3's sf::View
system provided the mechanism for the photo zoom sequence without affecting game world logic.
C++17
RAII, std::unique_ptr, std::optional, std::vector, move semantics, Rule of Zero
SFML 3
Windowing, 2D rendering, audio, input. sf::View for dual-view camera system and photo zoom.
STL
std::vector for NPC and Button collections. std::unique_ptr for all owned components. std::string throughout.
CMake
Build configuration and cross-platform dependency management.
Visual Studio
IDE and debugger used throughout development. Used to identify the simultaneous move-and-scream bug in AngryNPCBehavior.
Strategy Pattern AI
NPCBehaviour hierarchy. Wander, Flee, Flock, AngryNPC, Journalist - all implementing calculateMovement().
Factory Method
PhaseManager::createSpecialEntity() constructs phase-specific entities and returns ownership via unique_ptr.
Sprite Sheets
3-frame horizontal sprite sheets for all NPCs. Custom Animation class manages playback at 0.1s per frame.