Emil SundmanEnglish

SDL-Spacegame

Ett tidigt engine-independent C++-projekt med SDL2, manuell game loop och ECS-baserad representation av enemies.

Projektkontext

SDL-Spacegame var ett tidigt C++-projekt från min Futuregames-period där jag arbetade direkt med SDL2 i stället för en spelmotor. Projektet användes för att utforska en manuell application/game loop, input, rendering, enkla gameplay-system och data-oriented design-koncept.

Den bevarade implementationen är ett mindre Space-Invaders-liknande spel med player movement, shooting, enemy waves, collision handling och manuell rendering via SDL.

Vad jag implementerade

Jag implementerade SDL setup och shutdown, main application/game loop, keyboard input, player movement, shooting/projectile behaviour, enemy-wave spawning, rendering, enemy movement och collision systems.

Koden använder direkt SDL event handling och en accelerated renderer. Enemy- och projectile-lifecycle hanteras explicit, och loopen innehåller manuell frame-rate limiting med SDL performance counters och SDL_Delay.

ECS-experiment

Som en del av projektet experimenterade jag med att flytta enemy-data och behaviour till ett Entity Component System-upplägg. Implementation innehåller entities, packed component arrays, signatures, systems samt coordinator/manager-strukturer som används för enemy movement och collision.

ECS-implementationen var till stor del inspirerad av Austin Morlans publika ECS-artikel. Jag vet inte längre hur mycket av den underliggande ECS-implementationen som skrevs självständigt respektive adapterades, därför presenterar jag den inte som en original ECS-arkitektur eller som ett ECS byggt från scratch.

Source

Den historiska implementationen finns i det publika GitHub-repot.