Ghid de Programare a Jocurilor - Sfaturi, Instrumente și Cariere

de Connor Taylor

Un programator de jocuri este persoana care preia viziunea designerului și o face să funcționeze efectiv în motorul de joc pe care îl folosim. Lucrez în echipa de programare a jocurilor mobile la Kwalee, deci pentru noi este în principal Unity. De exemplu, dacă designerul vrea ca un zar să se rostogolească într-un anumit mod, voi scrie scriptul pentru a gestiona logica. De asemenea, colaborăm cu artiștii de jocuri pentru a ne asigura că jocurile noastre arată uimitor, dar și că au performanțe excelente pe dispozitive.

În acest blog, mă voi baza pe cei cinci ani ai mei lucrând la Kwalee pentru a împărtăși informații esențiale și sfaturi despre a fi un programator de jocuri. Voi parcurge unele dintre limbajele, instrumentele și principiile pe care le folosim, sfaturile mele de carieră, precum și sfaturi pentru începători și avansați.

Ce Face Un Programator De Jocuri?

Scriem codul și ajutăm jocul să devină realitate. În timp ce designerii de jocuri creează concepte și artiștii de jocuri creează activele, un programator va crea experiența funcțională și jucabilă. Creăm și optimizăm performanța jocului și rezolvăm orice probleme identificate.

Ne asigurăm că un joc se simte grozav și rulează cu performanțe înalte. Pentru a face acest lucru, trebuie să ne asigurăm că codul în sine este curat și extensibil, ceea ce este mai dificil decât credeți. Folosim standarde de codare pentru a menține o calitate constantă în toate echipele noastre - un document care poate conține standarde de denumire, formatare etc. Însă, uneori lucrurile nu sunt întotdeauna clare și din când în când trebuie să gândești în afara cutiei pentru a termina lucrurile la timp.

Responsabilitățile noastre includ, de asemenea, asigurarea că jocul rulează bine pe hardware-ul utilizatorului final. De exemplu, în jocurile noastre mobile, trebuie să evităm ca dispozitivele mai vechi să se încălzească prea tare, așa că lucrăm cu artiștii pentru a optimiza numărul de apeluri de desenare. Un apel de desenare este o comandă trimisă de la Unitatea Centrală de Procesare (CPU) la Unitatea de Procesare Grafică (GPU) pentru a reda un obiect pe ecran - spune GPU să deseneze elemente grafice precum texturi, meșe sau șabloane. Trebuie să minimizăm numărul acestor apeluri de desenare în jocul nostru, deoarece având prea multe poate provoca probleme, cum ar fi scăderi ale ratei cadrelor sau sacadări. Există multe moduri de a rezolva acest lucru, dar lucruri precum gruparea mai multor obiecte într-un singur apel de desenare sau reducerea numărului de texturi și materiale unice pot ajuta. Acest lucru este deosebit de important pentru mobil, deoarece există atât de multe dispozitive diferite pe piață, toate cu specificații tehnice variate.

Care Sunt Principalele Limbaje De Programare A Jocurilor?

Majoritatea timpului nostru ca programatori de jocuri zi de zi este petrecut în scriptare în unul dintre o gamă de limbaje de programare - suntem până la urmă dezvoltatori de software de alt tip. Există multe limbaje din care să alegi. Unele par mai ușoare decât altele, dar odată ce ai învățat și ai stăpânit unul, cu siguranță poți învăța altele - provocarea principală este să pui piciorul la ușă.

Iată o introducere în unele dintre cele mai populare limbaje de programare a jocurilor:

  • C# - un limbaj de programare versatil și popular, folosit pe scară largă în dezvoltarea de jocuri. Este unul dintre cele mai ușoare de învățat dacă ești un începător. Una dintre cele mai bune caracteristici ale sale este colectarea automată a memoriei - deci gestionează alocarea memoriei pentru tine - foarte util pentru programatorii ocupați ca noi.
  • C++ - în contrast, acesta este un limbaj neadministrat, astfel încât trebuie să aloci și să dealoci manual memoria, ceea ce îl face un pas mai mare în complexitate și dificultate. Cu toate acestea, permite o viteză, control și performanță mai mari.
  • Java - la fel ca C#, Java are propria sa gestionare a memoriei și colectare a memoriei, făcând mai ușor pentru dezvoltatori să gestioneze memoria fără să se complice în detalii. Este folosit pe scară largă în dezvoltarea web și aplicații enterprise, și, deși nu este (probabil) cea mai bună alegere pentru dezvoltarea de jocuri, rămâne o opțiune solidă pentru crearea de aplicații scalabile și eficiente.
  • Swift - acesta este limbajul nativ Apple pentru construirea de aplicații și jocuri pentru iOS și macOS. Cu toate acestea, aceasta înseamnă că este mai puțin util pentru dezvoltarea multiplatformă - deoarece ne propunem să publicăm mereu jocurile noastre mobile pe ambele platforme Android și iOS.

Cum Devii Un Programator De Jocuri?

Există o gamă variată de moduri prin care poți deveni un programator de jocuri. Traseul meu este destul de convențional - am studiat Design și Programare de Jocuri la Universitatea din Staffordshire. Inițial, credeam că voi intra în arta jocurilor - întotdeauna am fost foarte pasionat de artă în copilărie, plus că mi-au plăcut foarte mult modulele de artă de la universitate, dar acolo am descoperit că îmi place foarte mult să creez gameplay. Mi-ar putea lua câteva zile să creez un singur model high poly, dar aș putea face o rață să zboare și să explodeze în jumătate din timp. Prototiparea îmi permite să văd rezultatul rapid chiar în fața mea.

Cu toate acestea, frumusețea programării jocurilor este că este accesibilă majorității oamenilor chiar dacă nu vine pe un traseu tradițional. Am avut prieteni la universitate în vârstă de 50+ - nu este niciodată prea târziu să experimentezi ceva nou. La Kwalee, am angajat chiar și pe cineva care a învățat în principal prin intermediul videoclipurilor YouTube și a creat un joc pentru distracție. Există atât de multe oportunități pentru talente noi și dornice astăzi. Privind portofoliile noilor studenți, au acumulat foarte mult sub centură. Vedem talente fantastice care vin și este o perioadă palpitantă în industrie.

O întrebare pe care probabil dorești să o pui - va afecta IA programarea ca carieră? Poate fi extrem de utilă și se îmbunătățește. Perfect dacă ai nevoie de ceva explicat sau ești blocat într-o problemă. Poți folosi-o pentru a rezolva bug-uri sau pentru a refactoriza („curăța”) codul tău lipindu-l în cel mai recent ChatGPT. Cu toate acestea, când ne uităm la portofolii dorim să vedem munca pe care ai făcut-o și de care ești mândru, IA este ok de utilizat, dar încearcă să nu o folosești ca un substitut pentru propriile tale abilități.

Cum Arată O Zi Obișnuită Din Viața Unui Programator De Jocuri?

Permite-mi să ofer un exemplu bazat pe viața mea. Sunt un Lead Programmer (îi spun slujba mea de vis) așa că este o combinație extraordinară de muncă practică și gestionarea altor programatori!

O zi obișnuită în lumea mea este să intru, să iau un latte, apoi să verific dublu bug-uri sau blocaje pentru echipa QA. Verific cu echipa pentru a vedea dacă cineva are nevoie să fac ceva pentru a debloca munca lor. Apoi, muzica pornește și lista de sarcini se încarcă. Vom împărtăși videoclipuri de progres prin slack pentru a obține feedback rapid, în timp ce sărind între 2-3 proiecte pentru a sprijini membrii echipei mele. De asemenea, petrecem mult timp investind în sisteme comune pentru a face programarea noastră mai eficientă - toate acestea trebuie să fie întreținute, actualizate și reparate regulat pentru a păstra lucrurile să funcționeze fără probleme.

Sfaturi Pentru Programarea Jocurilor Pentru îNcepători

Dacă ești la început și aspiră să devii un programator adevărat, iată sfaturile mele pentru începători!

  • Există atât de mult de învățat online, pe YouTube și există atât de multe jocuri exemplu încât nu ai nicio scuză să nu înveți! Motoarele populare sunt gratuite și sunt foarte distractive de folosit!
  • La polul opus, poate avea 30 de ani, dar ar trebui să încerci să citești influentă carte „Design Patterns: Elements of Reusable Object-Oriented Software” de autorii așa-numiți Gang of Four, care au introdus unele dintre fundamentele modelelor de jocuri pe care le folosim zilnic în programare.
  • Poți avea propriile idei, dar asigură-te că începi simplu, astfel încât să fii ancorat cu elementele de bază.
  • Când nu ești legat de un proiect comercial, poți scrie cât de mult cod dorești, așadar bucură-te să creezi lucruri nebunești.
  • Construirea unui portofoliu este cu adevărat importantă (și așa mi-am găsit eu slujba). Dar fii foarte atent să nu încarci doar aceeași lucrare de universitate banală, deoarece vom vedea multe aplicații cu acestea. Chiar și petrecerea unei zile în plus pentru re-skin-are și adăugarea mai multor funcționalități te va ajuta să te evidențiezi.
  • Crearea propriului joc real este, de asemenea, o idee inteligentă - este foarte ieftin să obții un joc pe Google Play, așa că obține ceva lansat pe care să îl poți arăta recrutorilor/editorilor/familiei/animalelor de companie pe telefonul tău. Poți chiar și să faci câteva mii de dolari pe an până când ești angajat cu normă întreagă exclusivă, asta e un bonus! Sau ar putea să te tenteze să faci propriul tău joc complet și să colaborezi cu un editor.
  • Nu învăța doar despre programare - învață despre artă, design, QA și alte discipline cu care vei interacționa. De exemplu, merită să înțelegi metodele QA pentru că poți cădea în capcana de a presupune că ceva funcționează, dar trebuie să îl joci ca un utilizator, nu ca cineva care a scris codul și are o viziune definită despre cum ar trebui să fie jucat. Fii distructiv, încearcă lucrurile aleatorii pe care oamenii le-ar putea face, apăsând butoanele random și alt comportament bizar.

Sfaturi Avansate Pentru Programatori

Iată câteva dintre sfaturile care m-au ajutat să trec de la junior la programator, la senior la lider.

  • Poți beneficia întotdeauna de mai multă învățare și amintește-ți că fără greșeli nu putem învăța!
  • Dacă ești cu adevărat pasionat de ceva - ai putea deveni mai specializat. De exemplu, dacă îți place să te joci cu shade-uri și pipeline-uri de redare, află mai multe despre cum să folosești shade-urile grafice pentru a-ți extinde capacitatea de a reda efecte vizuale complexe și folosește pipeline-uri de redare pentru a optimiza performanța sau pentru a face efecte grozave.
  • Ai putea crea ceva cu adevărat interesant, cum ar fi un sistem complex, să-l încarci într-un magazin de active pentru al prezenta dacă contractul îți permite și să îți arăți munca avansată. Ai putea dezvolta o nișă ca un tip particular de programator, cum ar fi un programator de gameplay, programator server, programator grafic sau programator multiplayer.
  • Alternativ, poți urma ruta managementului ca mine și să mentorizezi oameni. Tactica mea pentru a-mi progresa cariera a fost să absorb noi responsabilități. Întâi, am început îmbunătățind lucruri mai mici, adică schimbări mici ale fluxului de lucru. Apoi am făcut procesele mai ușoare folosind șabloane pentru a economisi timp la crearea de noi proiecte. Apoi, mi-am făcut debutul în mentorat și management, ceea ce m-a ajutat să câștig mai multă încredere și acum particip la recenzii de colegi, recenzii de cod, organizez ateliere și conduc echipe pe proiecte.

Indiferent dacă lucrezi ca parte a unei echipe sau ca manager, este la fel de important să dai laude cum este să oferi critici constructive. Când revizuiești codul, este bine să entuziasmezi oamenii!

Care Sunt Principiile Cheie Ale Programării Jocurilor?

Există câteva subiecte cheie care pur și simplu trebuie incluse într-un blog despre programarea jocurilor. Acestea sunt unele dintre cele mai importante lucruri pe care le luăm în considerare.

Controlul sursei/Controlul versiunii

Așa cum ai puncte de salvare în jocuri, există puncte de salvare în dezvoltarea proiectelor. Acestea acționează ca o stocare generală pentru proiect și înseamnă că trei sau patru programatori pot lucra simultan la un sistem, pot crea o schimbare și o împing pe server. Ne permite să urmărim acele schimbări și să ne întoarcem cu ușurință dacă ceva ar funcționa defectuos. Dacă doi dezvoltatori lucrează la același fișier, acel fișier va deveni parte dintr-o îmbinare, dacă există conflicte putem atunci să le rezolvăm manual sau să alegem schimbările unui individ pe care să le aplicăm. Acest lucru se va întâmpla frecvent atunci când folosim Prefaburi sau Scene în Unity.

Acești termeni se suprapun uneori, dar în general, controlul sursei se concentrează pe cod, iar controlul versiunii include toate fișierele proiectului, activele și documentația.

Când începi să folosești Controlul Sursă poate părea puțin înspăimântător la început, poate părea foarte copleșitor și când vine vorba de conflicte te poți simți nesigur despre ce trebuie să faci. Dar natura controlului versiunii te ajută să salvezi momente în timp, așa că dacă faci update frecvent și folosești mesaje de commit detaliate, este incredibil de util și sigur. Poți reveni la mai multe puncte, poți avea mai multe ramuri etc. Gândește-te la el ca la plasa de siguranță a dezvoltatorului, astfel încât să putem evita o versiune a lui Pixar Toy Story 2 - distrus accidental și apoi restaurat de pe un hard drive acasă la Directorul Tehnic al acestora, în schimb este totul în siguranță acolo pe server.

Programare Orientată pe Obiecte

Aceasta este tipul de programare pe care o folosim în principal la Kwalee. Folosește obiecte pentru a reprezenta lucrurile reale sau concepte abstracte și își propune să organizeze codul folosind principii care oglindesc modul în care vedem și interacționăm cu obiectele în lumea reală. Ajută la menținerea sistemelor complexe prin organizarea codului în clase distincte pe care le poți reutiliza, scala și menține mai ușor.

Desigur, există dezbateri privind cât de bine funcționează. Deși nu este cel mai performant, funcționează bine. La fel ca și limbajele, fiecare are propriile sale argumente pro și contra și ar trebui să înveți unul pentru a începe și să îți faci o idee despre cum funcționează limbajele și compilatoarele (traducătorii codului uman în codul mașină). Poți considera și alte tipuri, precum programarea funcțională care o tratează mai mult ca matematica, programarea logică care folosește fapte și reguli sau programarea procedurală care folosește date pas cu pas.

Patioane de Programare

Acestea sunt lucruri minunat de utile - soluții reutilizabile care te pot ajuta cu probleme comune pe care le vei întâlni în designul tău software. Îți oferă un șablon pentru a remedia o problemă, așa că nu trebuie să reinventezi roata de fiecare dată și poți urma soluții dovedite.

De exemplu, modelul de design Singleton te ajută să te asiguri că există doar o instanță a unei clase, cum ar fi un manager de setări de joc, pe parcursul întregului tău joc și îți oferă un punct de acces global la ea. Codul pentru acest model înseamnă că există doar o singură instanță a clasei SettingsManager, așa că nu trebuie să o recreezi sau să o dupliquezi de fiecare dată când ai nevoie de ea.

Există, de asemenea, modelul Fabrică care te poate ajuta să creezi obiecte într-un mod mai organizat și flexibil. Poți defini metode pentru generarea de tipuri specifice de obiecte, cum ar fi personaje sau obiecte, pe baza parametrilor de intrare, permițându-ți să creezi cu ușurință mai multe obiecte de un tip similar fără a începe de la zero de fiecare dată.

Sper că acest blog ți-a oferit o introducere în programarea jocurilor, fie că ești nou în domeniu sau un programator experimentat! Dacă ești o persoană muncitoare dar distrată, s-ar potrivi echipei noastre așa că află mai multe despre carierele la Kwalee. În caz contrar, poți afla despre jocurile noastre mobile sau despre editură și să afli mai multe despre ce lansăm ca dezvoltator și editor.

Despre autor:

Connor Taylor, Programator Principal de Jocuri la Kwalee, se bucură de crearea jocurilor și de a cultiva o echipă de sprijin, plină de distracție. Cu peste 5 ani de experiență, a creat succese precum Jetpack Jump și îndrumă pe alții în dezvoltarea cu Unity.

Distribuie acest articol: