Gamedev Woordenlijst Wat is de Game Loop?

In dit bericht zal ik het hart van elke game uitleggen: de game loop! Alle code die het spel interactief en dynamisch maakt, gaat in de loop van het spel, maar is in verschillende stukken onderverdeeld. De spellus zelf is een gecontroleerde oneindige lus waardoor je spel blijft draaien; het is de plek waar al je kleine stukjes worden bijgewerkt en getekend op het scherm.


Initialiseren, bijwerken en tekenen

De spellus is de centrale code van je spel, opgesplitst in verschillende delen. Over het algemeen zijn dit: initialiseren, bijwerken en trek.

De initialiseren fase wordt gebruikt om de nodige spelinstellingen uit te voeren en de omgeving voor te bereiden voor de update- en trekkingsfasen. Hier moet u uw hoofdentiteiten maken, het menu voorbereiden, standaard hardwaremogelijkheden detecteren, enzovoort.

Het hoofddoel van de bijwerken fase is om alle te tekenen objecten voor te bereiden, dus dit is waar alle fysica code, coördinaat updates, gezondheidspunten veranderingen, char upgrades, schade behandeld en andere soortgelijke operaties bij horen. Dit is ook de plaats waar de invoer zal worden vastgelegd en verwerkt.

Wanneer alles correct is bijgewerkt en gereed is, gaan we naar de trek fase waarin al deze informatie op het scherm wordt geplaatst. Deze functie moet alle code bevatten om de niveaus, lagen, tekens, HUD enzovoort te beheren en te tekenen.


Staten beheren

De lus blijft gedurende het spel steeds opnieuw lopen, dus je moet ervoor zorgen dat het de juiste delen van je code uitvoert voor elk deel van je spel. EEN state machine wordt over het algemeen gebruikt voor deze taak; dit beheert een globale status voor je gamelus en stuurt de stroom naar het juiste deel van de code op basis daarvan.


Typische toestandsmachine

Een eenvoudig voorbeeld dat volgt op de afbeelding hierboven: een nieuw spel begint en gaat verder naar de hoofdstaat. Hierdoor wordt het gamemenu geladen en blijft het lopen en voert het de logica van het menu uit totdat het een invoergebeurtenis ontvangt (een muisklik, toetsenbordpers of iets dergelijks).

Deze gebeurtenis activeert dan een verandering in de hoofdgame-toestand, waarbij de uitvoeringsstroom naar de intro-scène wordt verplaatst, zodat de spelmenupode niet meer wordt uitgevoerd. De gamelus blijft actief, maar voert een ander deel van de code uit - het gedeelte dat overeenkomt met de intro-scène.


Entiteiten binnen het spel

Nu je al je staten onder controle hebt, moet je communiceren met al je entiteiten (tekens, objecten, NPC's, enzovoort) en hun eigenschappen (status, gezondheid, positie, ...) bijwerken om objecten en spelers daadwerkelijk te verplaatsen jouw spel.

Dus naast het uitvoeren van het specifieke deel van de code op basis van de huidige status, heeft de gamelus ook een binnenste lus die het specifieke deel van de code voor elk uitvoert entiteit in de huidige staat.


Interactie met entiteiten

Hetzelfde gedrag gebeurt in de trek fase, waarin elke entiteit wordt getekend.


Conclusie

De game-loop is het hart van het spel en het is niet zo moeilijk om het concept te begrijpen als je uit een andere tak voor softwareontwikkeling komt. Er kan nog veel meer over gezegd worden, maar ik hoop dat dit bericht je helpt om de kern te begrijpen van waar het over gaat!