A modern C++20 game engine implementing QBert with advanced architecture
Nocturne is a modern C++20 game engine that recreates the classic QBert gameplay with contemporary architecture. It features a component-based design, sophisticated AI, and advanced game programming patterns.
GameObjects with modular components for rendering, physics, and gameplay logic
Advanced enemy AI with state transitions for Coily (Spawning, Egg, Snake states)
Utilizes ranges, concepts, lambdas, and other modern C++ features
Classic pyramid tile navigation with color-changing mechanics
Coily, Slick, Sam, Ugg, and Wrongway with distinct behaviors
Persistent storage of top 10 scores with player name entry
Sound effects for jumps, hits, and level completion
Nocturne Engine follows a strict component-based architecture with minimal coupling between systems. The design prioritizes extensibility, allowing new features to be added with minimal impact on existing code.
Components communicate through events (OnTileColored, OnHealthChanged) to reduce dependencies
Level configurations loaded from external files for easy modification
Code designed to avoid trivial accessors, focusing on behavior instead
GameObjects composed of reusable components (LevelComponent, PlayerDataComponent)
Input handling via Command classes (MoveCommand, NameEntryUpCommand)
QBert states (Idle, Dead) and Coily states (Egg, Snake, Dying)
Event subscriptions for UI updates (ScoreDisplayObserver)
Enemy creation via factory methods (CreateCoily, CreateSlick)
SoundServiceLocator for decoupled audio access
Clean data processing with std::ranges::filter in Level::CheckForCompletion
Implicit template constraints for type safety in generic code
Concise event subscriptions and menu callbacks
Clean tuple unpacking in range-based loops
Compile-time evaluation for constants and arrays
Automatic memory management for game objects