În acest post, voi explica inima fiecărui joc: joc bucla! Tot codul care face jocul interactiv și dinamic merge în bucla de joc, dar este separat în diferite piese. Buclele jocului în sine sunt o buclă infinită controlată care face ca jocul să funcționeze în continuare; este locul în care toate piesele dvs. mici vor fi actualizate și desenate pe ecran.
Buclele jocului reprezintă codul central al jocului dvs., împărțit în diferite părți. În general, acestea sunt: inițializa, Actualizați și a desena.
inițializa faza este folosită pentru a face orice setare necesară a jocului și pentru a pregăti mediul pentru etapele de actualizare și desenare. Aici trebuie să vă creați entitățile principale, să pregătiți meniul, să detectați capabilitățile hardware implicite și așa mai departe.
Scopul principal al Actualizați faza este de a pregăti toate obiectele care urmează să fie desenate, deci aici se află toate codurile de fizică, actualizările coordonate, modificările punctelor de sănătate, actualizările de caractere, distrugerile afectate și alte operații similare. Aceasta este și locul în care datele vor fi captate și procesate.
Când totul este actualizat și gata corect, intrăm a desena în care toate aceste informații sunt puse pe ecran. Această funcție ar trebui să conțină tot codul pentru a gestiona și desena nivelurile, straturile, caracterele, HUD și așa mai departe.
Buclele vor continua să ruleze mereu și repede pe tot parcursul jocului, deci trebuie să vă asigurați că rulează părțile corecte ale codului pentru fiecare parte a jocului. A mașină de stat este în general utilizat pentru această sarcină; aceasta gestionează o stare globală pentru bucla de joc și redirecționează fluxul către partea corectă a codului bazat pe acesta.
Un exemplu simplu urmând imaginea de mai sus: începe un joc nou și trece la starea principală. Aceasta va încărca meniul jocului și apoi va continua să ruleze și să execute logica meniului până când primește un eveniment de intrare (un clic pe mouse, apăsarea tastaturii sau ceva similar).
Acest eveniment declanșează apoi o schimbare în starea principală a jocului, mutând fluxul de execuție spre scena intro, astfel încât codul de meniu al jocului nu mai este executat. Bucla de joc continuă să ruleze, dar execută o altă parte a codului - partea corespunzătoare scenei intro.
Acum că aveți toate stările sub control, va trebui să interacționați cu toate entitățile dvs. (caractere, obiecte, NPC-uri și așa mai departe) și să actualizați proprietățile (starea, sănătatea, poziția ...) pentru a muta obiectele și jucătorii jocul tău.
Deci, pe lângă executarea părții specifice a codului pe baza stării actuale, bucla de joc are, de asemenea, o bucla interioară care execută partea specifică a codului pentru fiecare entitate în starea actuală.
Același comportament se întâmplă în a desena faza, în care fiecare entitate este trasată.
Buclele jocului sunt inima jocului și nu este prea greu să înțelegi conceptul său dacă vin din orice ramură de dezvoltare software diferită. Există mult mai multe despre acest lucru, dar sper că acest post vă ajută să începeți să înțelegeți esența a ceea ce este vorba!