A játékprogramozó az a személy, aki a designer látomását megvalósítja a játék motorjában, amit használunk. Én a Kwalee mobil játékprogramozó csapatában dolgozom, így számunkra főként a Unity a téma. Például, ha a dizájner azt szeretné, hogy egy dobókocka egy adott módon guruljon, én írom meg a logikát kezelő szkriptet. Együttműködünk a játék művészekkel is, hogy biztosítsuk, hogy a játékaink nem csak lenyűgözően néznek ki, de jól is teljesítenek az eszközökön.
Ebben a blogban öt évem tapasztalataira támaszkodva megosztok néhány alapvető betekintést és tanácsot a játékprogramozóként való létről. Végigvezetlek néhány nyelven, eszközön és elven, amiket használunk, karrier tanácsaimon, valamint kezdő és haladó tippeken.
Mit Csinál Egy Játékprogramozó?
Mi írjuk a kódot, és segítünk a játéknak valósággá válni. Míg a játék dizájnerek a koncepciókat, a játék művészek az eszközöket készítik el, a programozó a működőképes, játszható élményt hozza létre. Megalkotjuk és optimalizáljuk a játék teljesítményét és megoldjuk az azonosított problémákat.
Biztosítjuk, hogy egy játék nagyszerű érzést nyújtson és magas teljesítménnyel fusson. Ehhez meg kell biztosítanunk, hogy a kód maga tiszta és bővíthető legyen, ami nehezebb, mint hinnéd. Kódolási szabványokat használunk, hogy fenntartsuk a következetes minőséget az összes csapatunkban - ez egy dokumentum, amely tartalmazhat elnevezési szabványokat, formázást stb. Azonban néha a dolgok nem mindig annyira egyszerűek, és időről időre szükséges „kilépni a dobozból”, hogy időben végezzünk.
Felelősségeink közé tartozik, hogy a játék jól fusson az end-user hardverén is. Például a mobil játékaink esetében el kell kerülnünk, hogy a régebbi eszközök túlmelegedjenek, így művészekkel dolgozunk együtt, hogy optimalizáljuk a draw call-ok számát. A draw call egy utasítás, amelyet a Központi Feldolgozó Egység (CPU) küld a Grafikus Feldolgozó Egységnek (GPU), hogy megjelenítsen egy objektumot a képernyőn - a GPU-t képanyagok, hálók vagy shaderek megjelenítésére utasítja. Minimalizálni kell az ilyen draw call-ok számát a játékunkban, mert a túl sok ilyen okozhat keret csökkenést vagy akadást. Sokféle módon megoldható ez, de például több objektum egyetlen draw call-ba való csoportosítása vagy a használt egyedi textúrák és anyagok számának csökkentése is segíthet. Ez különösen fontos mobilra, mivel rengeteg különböző eszköz van a piacon, mind más technikai specifikációkkal.
Melyek A Főbb Játékprogramozási Nyelvek?
A napi játékprogramozói munkánk nagy része egy sor programozási nyelv egyikében való szkriptezésből áll - végül is, szoftverfejlesztők vagyunk, más típusúak. Sok nyelv közül lehet választani. Néhány könnyebbnek tűnik másoknál, de ha egyszer megtanultál és elsajátítottál egyet, biztosan megtanulhatod a többit is - a fő kihívás az ajtón belépni.
Íme néhány bevezető a legnépszerűbb játékprogramozási nyelvekhez:
- C# - egy sokoldalú és népszerű programozási nyelv, amelyet széles körben használnak a játékfejlesztésben. Egyik legjobb tulajdonsága az automatikus szemétgyűjtés - így kezeli a memória allokációt helyetted - nagyon hasznos a nálunk is elfoglalt programozók számára.
- C++ - ezzel szemben ez egy nem felügyelt nyelv, így manuálisan kell kezelni a memória allokációt és felszabadítást, ami bonyolultabb és nehezebb feladatot jelent. Azonban nagyobb sebességet, ellenőrzést és teljesítményt biztosít.
- Java - hasonlóan a C#-hez, a Java is rendelkezik saját memória kezelésével és szemétgyűjtésével, megkönnyítve a fejlesztők számára a memória kezelését anélkül, hogy a részletekben eltévednének. Széles körben alkalmazzák webfejlesztésben és vállalati alkalmazásokban, és bár talán (vélemény szerint) nem a legjobb választás a játékfejlesztéshez, továbbra is szilárd opció a skálázható és hatékony alkalmazások létrehozására.
- Swift - ez az Apple saját nyelve az iOS és macOS alkalmazások és játékok fejlesztéséhez. Azonban ez azt is jelenti, hogy kevésbé hasznos a platformok közötti fejlesztéshez - mivel mindig célunk, hogy a mobil játékainkat mind Androidra, mind iOS-re kiadjuk.
Hogyan Válhatsz Játékprogramozóvá?
Számos különböző út létezik, hogy játékprogramozóvá válj. Az én utam elég konvencionális - a Staffordshire-i Egyetemen tanultam Játék Dizájn és Programozást. Eredetileg azt gondoltam, hogy játék művészeti irányba megyek - gyermekkorom óta nagyon rajongtam a művészetért, plusz nagyon élveztem az egyetemi művészeti modulokat, de ott rájöttem, hogy igazán élvezem a játékmechanika létrehozását. Több napba is telhetett, hogy készítsek egyetlen nagy poligon modellt, de egy kacsát fele idő alatt tudtam repíteni és felrobbantani. A prototípuskialakítás lehetővé tette, hogy az eredményt gyorsan lássam magam előtt.
Azonban a játékprogramozás szépsége, hogy hozzáférhető a legtöbb ember számára még akkor is, ha nem a hagyományos úton érkezik. Az egyetemen voltak idősebb, 50 év feletti barátaim is - sosem késő valami újat kipróbálni. A Kwalee-nál még olyan embert is felvettünk, aki főként YouTube videókból tanult és szórakozásból készített egy játékot. Napjainkban rengeteg lehetőség van a friss és lelkes tehetségek számára. Az új tanulók portfólióját végignézve elképesztő, mennyi mindent tudnak már helyben. Fantasztikus tehetségeket látunk felbukkanni, és izgalmas időket élünk az iparágban.
Valószínűleg egy kérdés, amelyet szeretnél feltenni - vajon az AI befolyásolja-e a programozást, mint karriert? Rendkívül hasznos lehet, és egyre jobb. Tökéletes, ha valamit meg kell magyarázni vagy meg vagy ragadva egy probléma közepén. Használhatod a hibák elhárítására vagy a kódod újrafaktorálására (tisztábbá tételére) az aktuális ChatGPT segítségével. Azonban amikor portfóliókat nézünk, látni akarjuk az általad elvégzett munkát, amelyre büszke vagy, az AI használata rendben van, de próbálj nem az saját képességeid helyettesítésére használni.
Mi Egy Játékprogramozó Tipikus Napja?
Hadd adjak egy példát az életem alapján. Vezető programozó vagyok (álommunkámnak hívom), így nagyszerű keveréke van az aktív programozásnak és más programozók menedzselésének!
Egy tipikus nap nálam az, hogy bemegyek, szerzek egy lattét, majd kétszer átnézem a QA csapat hibákat vagy akadályokat. Ellenőrzöm a csapatot, hogy bárki szüksége van-e valamire, hogy megoldjam az elakadásokat. Aztán indul a zene, és felkerül a feladatlista. Előrehaladási videókat osztunk meg a slacken, hogy gyors visszajelzést kapjunk, miközben 2-3 projekt között ugrálunk, hogy támogassuk a csapattagjainkat. Sok időt töltünk el az osztott rendszerekbe való befektetéssel, hogy programozásunk hatékonyabb legyen - mindazt karban kell tartani, frissíteni és rendszeresen javítani, hogy minden zökkenőmentesen fusson.
Kezdő Játékprogramozói Tippek
Ha most kezded és teljes jogú programozó szeretnél lenni, itt vannak a kezdő tippjeim!
- Olyan sok mindent lehet tanulni online, YouTube-on, és számtalan példajáték létezik, így nincs mentséged arra, hogy ne tanulj! A népszerű motorok ingyenesek és nagyon szórakoztatóak használni!
- A spektrum teljesen másik végén, bár lehet 30 éves, de próbáld meg elolvasni az „Design Patterns: Elements of Reusable Object-Oriented Software” című befolyásos könyvet a Gang of Four szerzőktől, amely bevezette néhány alapját a mindennapok játék mintázataiknak a programozásban.
- Lehet, hogy saját ötleteid vannak, de győződj meg róla, hogy egyszerűen kezdj, hogy megalapozd az alapokat.
- Amikor nem vagy kereskedelmi projektbe kötve, annyi kódot írj, amennyit csak tudsz, így rengeteget szórakozhatsz az őrült dolgok létrehozásával.
- A portfólió építése igazán kulcsfontosságú (és ez az, ahogyan megszereztem a munkámat). De légy nagyon óvatos, hogy ne csak ugyanazt a régi egyetemi munkát töltsd fel, mert rengeteg ilyen alkalmazást látunk. Még ha egy plusz napot is tölt az új skin-el vagy funkciók hozzáadásával, kiemelhet.
- Saját valós játék létrehozása is okos ötlet - nagyon olcsó felrakni egy játékot a Google Play-re, így mutasd meg a toborzóknak/eladóknak/családnak/kedvenceknek a telefonodon. Még néhány ezer dollárt is kereshetsz évente, amíg nem kapsz egy kizárólagos, teljes munkaidős gig-et, ami bónusz! Vagy akár saját teljes körű játékot is készítenél és egy kiadóval partnerséget köthetsz.
- Ne csak a programozásról tanulj - tanulj a művészetről, dizájnról, QA-ról és más területekről, amelyekkel dolgozni fogsz. Például érdemes megérteni a QA módszereket, mert beleeshetsz abba a csapdába, hogy feltételezed, valami működik, de meg kell játszanod mint egy felhasználó, nem pedig mint aki megírta a kódot, és pontosan tudja, hogy hogyan kellene játszani. Légy pusztító, próbálkozz a véletlen dolgokkal, amiket az emberek tehetnének, nyomogass véletlenszerű gombokat és más furcsa viselkedést.
Haladó Programozói Tippek
Itt van néhány tipp, amely segített nekem az juniortól a programozón, majd senioron keresztül a vezetőig jutni.
- Mindig profitálhatsz a tanulásból, és ne felejtsd el, hogy hibák nélkül nem tanulhatunk!
- Ha valójában szenvedélyesen szeretsz valamit - szakosodhatsz. Például, ha szeretsz shader-ekkel és render pipeline-okkal játszani, tanuld meg, hogyan használd a grafikus shader-eket, hogy kibővítsd képességeidet komplex vizuális effektek renderelésére, és használd ki a render pipeline-okat a teljesítmény optimalizálására vagy nagyszerű effektek készítésére.
- Valami nagyon menőt is készíthetsz, például egy komplex rendszert, feltöltheted egy eszköztárba, ha a szerződésed engedi, és mutogasd meg a haladó munkádat. Niche-t fejleszthetsz ki magadnak, mint egy bizonyos típusú programozó, például játékmenet programozó, szerver programozó, grafikus programozó vagy multiplayer programozó.
- Alternatívaként elindulhatsz a vezetés útján, mint én, és mentorálhatsz embereket. Az én taktikám, hogy elnyertem új felelősségeket a karrierem előrehaladásához. Először kisebb dolgokat javítottam, például kisebb munkamenet változásokat. Majd sablonokat használtam, hogy időt takarítsak meg új projektek létrehozásakor, majd ráéreztem a mentorálás és menedzselés ízére, amely segített több önbizalmat szerezni, és most részt veszek a társ értékelésekben, kódértékelésekben, workshopok szervezésében és csapatok vezetésében a projekteken.
Akár csapat tagjaként, akár menedzserként dolgozol, ugyanolyan fontos dicséretet adni, mint konstrukciós kritikát. Amikor kódot értékelsz, jó, ha hype-ot adsz az embereknek!
Mik A Játékprogramozás Alapvető Elvei?
Vannak kulcsfontosságú témák, amelyek egyszerűen bele kellene kerüljenek egy játékprogramozásról szóló blogba. Ezek a legfontosabb dolgok, amiket figyelembe veszünk.
Forráskezelés/Verziókezelés
Ahogy a játékokban mentési pontok vannak, úgy a projektfejlesztés során is vannak mentési pontok. Ezek általános tárolásként működnek a projekt számára, és lehetővé teszik, hogy három vagy négy programozó egyszerre dolgozzon egy rendszeren, változtatást hozzon létre, és azt felülírja a szerverre. Ez lehetővé teszi a változtatások nyomon követését, és könnyen vissza lehet térni, ha valami elromolna. Ha két fejlesztő ugyanazon a fájlon dolgozik, az a fájl összeolvadás részévé válik, és ha vannak konfliktusok, akkor ezeket manuálisan megoldhatjuk, vagy kiválaszthatunk egy adott személy változásait, hogy alkalmazzuk. Ez gyakran előfordul a Prefab-ok vagy a Unity Scene-ek használatába.
Ezek a kifejezések néha átfedhetik egymást, de általában a forráskezelés a kódra fókuszál, míg a verziókezelés magába foglalja az összes projektfájlt, eszközt és dokumentációt.
Amikor először kezded el használni a Forráskezelést, kezdetben kissé ijesztőnek tűnhet, nagyon nyomasztónak tűnhet és amikor konfliktusok vannak, az lehetséges, hogy bizonytalanná tesz. De a verziókezelés természete lehetővé teszi az időközi mentést, így ha gyakran frissítesz és részletes commit üzeneteket használsz, hihetetlenül hasznos és biztos. Több pontra visszavehetsz, több ággal stb. Tekintsd a fejlesztők biztonsági hálójaként, hogy elkerülhessük a Pixar Toy Story 2-es verzióját - véletlenül törölték és az utána felépülő egy őtárolókról az ő technikai igazgatójuk otthonában, helyette minden biztonságosan ott van a szerveren.
Objektumorientált programozás
Ez az a programozási típus, amit elsősorban a Kwalee-nál használunk. Tárgyakat használ, hogy valós dolgokat, vagy absztrakt fogalmaket ábrázoljanak, és a kódbázis megszervezésére törekszik olyan alapelvek alapján, amelyek tükrözik, hogyan látjuk és kölcsönhatunk tárgyakkal a valós világban. Segít fenntartani a komplex rendszerek szervezését kód különböző osztályokba való szervezésével, amelyeket könnyen újrahasználhatsz, skálázhatsz és fenntarthatsz.
Természetesen vita tárgya, hogy jó-e vagy sem. Bár nem a legnagyobb teljesítményű, jól működik. Ahogy a nyelveknél is, mindegyiknek megvannak a maga előnyei és hátrányai, és egyet kell megtanulnod, hogy elindulj, és hogy megértsd, hogyan működnek a nyelvek és a fordítók (az én kódom emberi kódgépbemegfejtői). Megfontolhatod más típusokat is, mint például a funkcionális programozást, amely inkább matematikaként kezeli a dolgokat, a logikai programozást, amely tényekre és szabályokra épít, vagy a procedurális programozást, amely az adatokat lépésekből állóan kezeli.
Programozási Minták
Ezek csodálatosan hasznos dolgok - újrahasználható megoldások, amelyek segítenek a szoftver tervezése közben fellépő gyakori problémák megoldásában. Sablonokat adnak neked egy probléma megoldására, így nem kell pénzt keresselni a kerék minden egyes alkalommal, és követheted a bevált megoldásokat.
Például a Singleton tervezési minta segít biztosítani, hogy csak egy példány legyen egy osztályból, például egy játékbeállítás-kezelő az egész játék során, és globális hozzáférési pontot ad hozzá. A kód ehhez a mintához azt jelenti, hogy csak egy példánya van a SettingsManager osztálynak, így nem kell újra megalkotnod vagy megkettőznöd minden alkalommal, amikor szükséged van rá.
Létezik még a Factory Pattern is, amely segíthet objektumokat szervezettebb és rugalmasabb módon létrehozni. Meghatározhatsz módszereket konkrét típusú objektumok generálására, például karakterek vagy tárgyak, bemeneti paraméterek alapján, lehetővé téve, hogy könnyen több hasonló típusú objektumot hozz létre anélkül, hogy mindent az alapokról újra kellene kezdened.
Remélem, ez a blog ízelítőt adott a játékprogramozásból, legyen akár új belépő a területre, akár tapasztalt programozó vagy! Ha szorgalmas, de vidám ember vagy, illenél a csapatunkba, így tudj meg többet a Kwalee karrierről. Ellenkező esetben, tanulhatsz mobil játékainkról mobile games vagy publishing, és ismeretesedhet meg arról, amit kiadunk fejlesztőként és kiadóként.








