Architecting Games in Nim: A Pragmatic Guide
1. The Core Recommendation Start simple. Stay simple. Most games never need ECS. To test this claim, I built a top-down survival shooter in Nim using raylib. The player controls a blue circle in a 4000×3000 arena, moving with WASD and auto-firing at the nearest enemy. Red enemies spawn in waves, up to 500 at once, chasing the player on contact. Projectiles streak across the screen, particles burst on every hit and death, a spatial hash grid resolves collisions, and a camera follows the action. It is the kind of game that, on paper, sounds like it might need a real architecture. It runs in a fraction of a millisecond per frame using nothing more exotic than seq[Agent] , seq[Projectile] , and a handful of parallel arrays for particles. The entire codebase is plain Nim: types, arrays, and procs. There is no framework, no query layer, no entity manager, no component registration, no archetype migration. This is not a compromise. It is the optimal answer for the vast majority of ga...