Perform a second, deeper audit and hardening pass on Sky Circuit to make the game feel less like a raw developer build and more like a complete local arcade cabinet experience: clearer onboarding, familiar menu navigation for non-technical users, robust state transitions, cleaner terminology, stricter compiler checks, and verified builds.
- Some user-facing text undersold the procedural art/audio direction. The implementation already uses real procedural vector art and generated tones, so user-facing copy should present those as the game's production style.
- Navigation was too developer-centric: the title screen only offered an instant start prompt with controls compressed into one line. Non-technical users benefit from familiar menu patterns: highlighted choices, arrow-key navigation, a dedicated How To Play screen, and explicit back/confirm prompts.
- Exit flow was implicit through the window close button. A menu Exit option backed by a
shouldExit_flag makes the path clear. - Build quality should include common warning flags on Clang/GCC/MSVC, not just a successful default compile.
- Gameplay rules in
Player,Enemy,Bullet,Powerup,StageDirector, andEffectsremain deterministic and simple. - DOMAIN probe: no new disk/network I/O is introduced; the added navigation does not alter pure gameplay rules.
Gamestate machine expands from Title/Playing/Paused/StageClear/GameOver to include HowTo and menu selection.- CORE probe:
Game.cppcoordinates state transitions and input; it must avoid burying game mechanics in menu code.
- Existing raylib window/audio/build integrations remain the only infrastructure layer.
- INFRASTRUCTURE probe: CMake remains simple; no new external assets, engines, accounts, or services. Warning flags improve build hygiene without changing runtime behavior.
- Title menu, How To Play screen, and pause instructions are user-facing UI improvements.
- UI probe: non-technical users should be able to discover start/help/exit and controls from inside the game without reading README.
- Add menu selection and How To Play state to
Game. - Replace underconfident wording in user-facing copy with procedural-asset terminology.
- Update README with clearer non-technical quick start, controls, menu navigation, and honest limitations.
- Add common compiler warnings for Clang/GCC/MSVC.
- Re-run residue search and CMake build.
Most vulnerable boundary is Game.cpp, where UI navigation and core state machine live together. Keep the change focused on state transitions and rendering; do not move weapon/enemy/collision rules into the menu implementation. File paths: Game.h, Game.cpp, README.md, CMakeLists.txt.
Assumption: users understand arrow-key menu navigation and Enter/Escape patterns. Harden by rendering explicit prompts on every non-gameplay screen and keeping Start Mission selected by default for immediate play.
If a patch fails mid-pass, recovery is to restore the small edited set (Game.h, Game.cpp, README.md, CMakeLists.txt, scratchpad.md) and rebuild. No persistent saves, migrations, or external assets are introduced, so rollback is source-only and build artifacts remain disposable under build/.
Mantra: Double down on this concept, audit and revise in its entirety.