Shape Shooters · 2020 · universitetsprojekt
Shape Shooters – spelmotor i C++
Ett universitetsprojekt: ett arkadskjutspel för flera spelare och den lilla motorn under det, skrivet från grunden i C++ med SFML. Min första riktiga lektion i spelloopar, timing och varför kollisionsdetektering aldrig blir riktigt klar.
- Lager
- gränssnitt, applikation
- Byggt med
- C++ · SFML · OOP · UML · Game Development
- Länkar
- källkod på GitHub
- 1Entitet · position, hastighet, omslutande låda
- 2Rumsligt rutnät · bara grannar testas
- 3Hastighet · integreras varje bildruta med dt
- 4Bildrutebudget · 16,7 ms, mätt varje varv
- 5Klasshierarki · Entity, sedan Ship, Enemy, Bullet
Problemet
Ett universitetsprojekt med en vidöppen uppgift och ett hårt villkor: bygg ett spel, men bygg motorn också, i C++ med SFML och utan något spelramverk att luta sig mot.
Vad jag byggde
Ett arkadskjutspel för flera spelare där allt är geometriska former, och den lilla motorn under det: en spelloop med riktig timing, en entitetsmodell byggd på objektorienterade designmönster, kollisionsdetektering med omslutande lådor, poäng- och tillståndssystem, power-ups och flera fiendetyper med eget beteende. Jag ritade arkitekturen i UML först och höll motorn skild från spelet som körs på den.
Vad jag lärde mig
Spelloopar lär en om tid på ett sätt webbarbete aldrig gör: allt händer var sextonde millisekund, annars händer det inte. Jag lärde mig att kollisionsdetektering aldrig blir riktigt klar, att en ren entitetsmodell betalar sig i samma stund som man lägger till den tredje fiendetypen, och att det inte är byråkrati att rita designen innan man skriver den.