u/web_sculpt

Looking for C++20 feedback on a small SDL3 game

I’ve been working on a small Defender-style arcade game, mostly as a learning project to improve my C++ skills.

My main question is: does this look like reasonably idiomatic modern C++ for a small SDL game, or are there design/ownership issues I should fix before building future projects from this style?

GitHub: https://github.com/nathan-websculpt/sdl3-defender-v3

The game itself is intentionally small, but I’ve tried to treat the codebase as more than a throwaway prototype. I’m trying to make the structure, contracts, tooling, and resource ownership as professional as possible.

I would appreciate C++-focused feedback on things like:

  • Whether the project structure and responsibility boundaries make sense
  • Whether my ownership/resource-management patterns are idiomatic C++20
  • Whether the SDL3-specific code is isolated cleanly from the game/simulation logic
  • Whether the public APIs, naming, and contracts are clear
  • Whether anything looks overengineered, underengineered, brittle, or hard to maintain
  • Whether the CMake/vcpkg/tooling setup looks reasonable from a C++ project perspective

Some context about the project:

  • SDL3 renderer/window/audio/input integration
  • Fixed-step simulation loop
  • Mostly SDL-free simulation layer
  • RAII-style ownership for SDL resources
  • High-score persistence
  • CMake/vcpkg build setup
  • Debug/Release scripts
  • Tests and Windows release smoke checks
  • Packaged Windows release artifacts

I realize that reviewing a full repository is a big ask, so feedback on even one subsystem, one ownership pattern, one header/API, or one build/test pattern would be useful.

reddit.com
u/web_sculpt — 1 day ago

Looking for review of my C++20/SDL3 Defender-style arcade game

The game itself is intentionally small, but I’ve been using the repo as a way to practice writing a more polished C++/SDL codebase.

GitHub: https://github.com/nathan-websculpt/sdl3-defender-v3

I would appreciate a code review focused on:

  • Overall project structure and separation of responsibilities
  • C++20 ownership/resource-management patterns
  • SDL3 boundaries: whether the simulation/game logic is separated cleanly enough from platform/rendering code
  • Naming, contracts, and API clarity
  • Build/tooling structure, especially the Windows release-gate
  • Anything that looks overengineered, underengineered, fragile, or hard to maintain

Some technical context:

  • SDL3 renderer/window/audio/input integration
  • Fixed-step simulation loop
  • SDL-free simulation layer where practical
  • RAII-style ownership for SDL resources
  • High-score persistence
  • CMake/vcpkg build setup
  • Debug/Release scripts
  • Tests and release smoke checks
  • Packaged Windows release artifacts

I’m especially interested in feedback from people with experience in modern C++, SDL, small-game architecture, or CMake-based project structure.

I know reviewing an entire repo is a large ask, so even feedback on one subsystem or one pattern would be helpful.

Also tagging u/mredding because they reviewed an earlier version of this project and gave very helpful feedback. mredding, I didn't change all manual loops to algos yet, but I believe I addressed all of your other notes.

reddit.com
u/web_sculpt — 1 day ago