Příručka pro programování her - Tipy, nástroje a kariéra

od Connor Taylor

Herní programátor je osoba, která přebírá vizi designéra a uvádí ji do funkční podoby v herním enginu, který používáme. Pracuji v týmu pro programování mobilních her ve společnosti Kwalee, takže pro nás je to především Unity. Například, pokud designér chce, aby se kostka otáčela určitým způsobem, já napíšu skript pro logiku. Spolupracujeme také s herními umělci, aby naše hry nejen vypadaly skvěle, ale také dobře běžely na zařízení.

V tomto blogu čerpám z mých pěti let práce ve společnosti Kwalee, abych sdílel klíčové poznatky a rady o tom, jaké to je být herním programátorem. Provedu vás některými z jazyků, nástrojů a principů, které používáme, moje kariérní rady, stejně jako tipy pro začátečníky a pokročilé.

Co Dělá Herní Programátor?

Píšeme kód a pomáháme, aby se hra stala realitou. Zatímco herní designéři vytvářejí koncepty a herní umělci vytvářejí aktiva, programátor vytvoří funkční, hratelný zážitek. Vytváříme a optimalizujeme výkon hry a řešíme jakékoliv problémy, které se objeví.

Zajišťujeme, aby hra byla skvělá a běžela s vysokým výkonem. Abychom toho dosáhli, musíme zajistit, aby samotný kód byl čistý a rozšiřitelný, což je těžší, než si myslíte. Používáme kódovací standardy, abychom udrželi konzistentní kvalitu v celém našem týmu - dokument, který může obsahovat standardy pojmenování, formátování atd. Nicméně, někdy není vše tak jednoduché a občas musíte myslet mimo rámec, abyste něco zvládli včas.

Naše povinnosti také zahrnují zajištění, že hra dobře běží na koncovém uživatelském zařízení. Například, v našich mobilních hrách se musíme vyhnout tomu, aby starší zařízení příliš hřála, takže spolupracujeme s umělci na optimalizaci počtu vykreslovacích volání. Vykreslovací volání je příkaz, který je zaslán z centrálního procesoru (CPU) do grafického procesoru (GPU), aby vykreslil objekt na obrazovce - říká GPU, aby vykresloval grafické prvky jako textury, sítě nebo shadery. Potřebujeme minimalizovat počet těchto vykreslovacích volání v naší hře, protože příliš mnoho z nich může způsobit problémy jako poklesy snímkové frekvence nebo trhání. Existuje mnoho způsobů, jak to řešit, ale věci jako batchování více objektů do jednoho vykreslovacího volání nebo redukování počtu unikátních textur a materiálů mohou pomoci. To je obzvláště důležité pro mobilní zařízení, protože na trhu je tolik různých zařízení, všech s různorodými technickými specifikacemi.

Jaké Jsou Hlavní Programovací Jazyky Pro Hry?

Většinu našeho času jako každodenní herní programátoři strávíme skriptováním v některém z řady programovacích jazyků - koneckonců jsme softwaroví vývojáři jiného druhu. Existuje spousta jazyků, ze kterých si lze vybrat. Některé se zdají být jednodušší než jiné, ale jakmile se naučíte a ovládnete jeden, můžete se určitě naučit i další - hlavní výzva je dostat se do branže.

Zde je úvod do některých z nejpopulárnějších herních programovacích jazyků:

  • C# - univerzální a populární programovací jazyk široce používaný ve vývoji her. Je to jeden z nejsnadnějších pro nováčky. Jednou z jeho nejlepších vlastností je automatické sbírání odpadu - tedy správa alokace paměti za vás - velmi užitečné pro zaneprázdněné programátory jako my.
  • C++ - naopak, toto je nespravovaný jazyk, takže musíte ručně přidělovat a uvolňovat paměť, což znamená větší komplexnost a obtížnost. Umožňuje však vyšší rychlost, kontrolu a výkon.
  • Java - podobně jako C#, Java má vlastní správu paměti a sbírání odpadu, což programátorům usnadňuje práci s pamětí, aniž by se příliš zabývali detaily. Je široce používána ve webovém vývoji a podnikových aplikacích, ačkoli možná (sporně) není nejlepší volbou pro vývoj her, stále zůstává solidní možností pro tvorbu škálovatelných a efektivních aplikací.
  • Swift - jedná se o nativní jazyk Apple pro vytváření aplikací a her pro iOS a macOS. To však znamená, že je méně užitečný pro multiplatformový vývoj - jelikož se snažíme vždy publikovat naše mobilní hry jak pro Android tak i iOS.

Jak Se Stát Herním Programátorem?

Existuje několik různých způsobů, jak se stát herním programátorem. Moje cesta je poměrně konvenční - studoval jsem Design a programování her na University of Staffordshire. Původně jsem si myslel, že se budu věnovat hernímu umění - vždy jsem měl velkou vášeň pro umění jako dítě, a také jsem si opravdu užíval umělecké moduly na univerzitě, ale současně jsem objevil, že mě skutečně baví vytváření herní hratelnosti. Mohlo mi trvat několik dní vytvořit jediný model s vysokou polygonovou hustotou, ale mohl jsem udělat kachnu létající a explodující v polovičním čase. Prototypování mi umožnilo vidět výsledek rychle přímo před sebou.

Nicméně, krása programování her je, že je přístupná většině lidí, i když nechodíte tradiční cestou. Měl jsem přátele na univerzitě ve věku 50+ - nikdy není pozdě na něco nového. V Kwalee jsme dokonce přijali někoho, kdo se hlavně učil skrz YouTube videa a vytvořil hru pro zábavu. Dneska je nespočet příležitostí pro čerstvé a nadšené talenty. Když se podíváme na portfolia novějších studentů, mají toho na sobě mnohem víc. Vidíme přicházet skvělý talent a je to vzrušující doba v průmyslu.

Otázka, kterou se pravděpodobně ptáte - ovlivní AI programování jako kariéru? Může být nesmírně užitečná a zlepšuje se. Skvělé, pokud něco potřebujete vysvětlit nebo vás něco zaseklo. Můžete ji použít k opravě chyb nebo přeformátování (stylingu) vašeho kódu dáte-li ho do nejnovější verze ChatGPT. Nicméně, když se podívám na portfolia, chceme vidět práci, kterou jste udělali a jste na ni pyšní. AI je v pořádku použít, ale snažte se ji nepoužívat jako náhradu za vaše vlastní dovednosti.

Jak Vypadá Typický Den Herního Programátora?

Nechal bych vás nahlédnout do mého vlastního života. Jsem vedoucí programátor (nazývám to svou vysněnou prací), takže je to skvělá kombinace praktické práce a vedení ostatních programátorů!

Typický den v mém světě je vstát, dát si latte a pak dvakrát zkontrolovat jakékoliv chyby nebo překážky pro QA tým. Zkontrolovat s týmem, jestli někdo potřebuje něco, co by mu uvolnilo práci. Pak hudba začne hrát a seznam úkolů jde nahoru. Sdílíme videa o pokroku prostřednictvím Slacku, abychom získali rychlou zpětnou vazbu, stále se přebíhá mezi 2-3 projekty na podporu členů mého týmu. Také trávíme spoustu času investováním do sdílených systémů, abychom zvýšili naši programovací efektivitu - všechno to musí být pravidelně udržováno, aktualizováno a opravováno, aby vše běželo hladce.

Tipy Pro Začátečníky V Herním Programování

Pokud začínáte a toužíte stát se plnohodnotným programátorem, zde jsou mé tipy pro začátečníky!

  • Je toho tolik, co se dá naučit online, na YouTube, a je tolik vzorových her, že nemáte výmluvu se neučit! Populární enginy jsou zdarma a jsou skvělou zábavou pro používání!
  • Na opačném konci spektra, možná je to 30 let staré, ale měli byste se pokusit přečíst vlivnou knihu "Design Patterns: Elements of Reusable Object-Oriented Software" od tzv. autorů Gang of Four, která představila některé základy herních vzorců, které každý den v programování používáme.
  • Možná máte své vlastní myšlenky, ale ujistěte se, že začínáte jednoduše, aby vás základy uzemnily.
  • Když nejste vázáni na komerční projekt, můžete napsat tolik kódu, kolik chcete, takže si mnohé užijete vytvářením šílených věcí.
  • Budování portfolia je skutečně klíčové (a je to, jak jsem získal svou práci). Ale buďte velmi opatrní, abyste neodeslali stejnou starou školní práci, protože uvidíme spoustu aplikací s těmito. Dokonce strávit den navíc reskinováním a přidáním více funkcionalit vám pomůže vyniknout.
  • Vytvoření vlastní reálné hry je také chytrá myšlenka - je velmi levné dostat hru na Google Play, takže dostanete něco vydaného, co můžete ukázat náborářům/vydavatelům/rodině/mazlíčkům na vašem telefonu. Můžete dokonce vydělat pár tisíc dolarů ročně, než si zajistíte exkluzivní plný úvazek, což je bonus! Nebo vás to může unést do vytváření své vlastní plnohodnotné hry a partnerství s vydavatelem.
  • Neučte se jen o programování - učte se o umění, designu, QA a jiných disciplínách, s nimiž budete interagovat. Například je užitečné znát metody QA, protože můžete spadnout do pasti předpokládání, že něco funguje, ale potřebujete to hrát jako uživatel, ne jako někdo, kdo napsal ten kód a má definovaný pohled, jak by se to mělo "hrát". Buďte destruktivní, zkuste náhodné věci, které lidé mohou dělat, mačkat náhodné tlačítka a jiná podivná chování.

Pokročilé Tipy Pro Programátory

Tady jsou některé z tipů, které mi pomohly od juniorského, ke programátorovi, k seniorovi k vedení.

  • Vždy můžete těžit z více učení a pamatujte, že bez chyb se nemůžeme učit!
  • Pokud jste skutečně nadšení něčím - můžete se stát více specializovaní. Například, pokud vás baví hrát si se shadery a render pipelines, učte se více o tom, jak využívat grafické shadery k rozšiřování schopnosti vykreslovat složité vizuální efekty a jak používat render pipelines k optimalizaci výkonu nebo k vytvoření skvělých efektů.
  • Můžete vytvořit něco opravdu cool, jako složitý systém, nahrát to do obchodu s aktivy k prezentaci svého pokročilého díla, pokud váš kontrakt to umožňuje a ukázat své pokročilé práce. Mohli byste si vyvinout zvláštnost jako konkrétní typ programátora, například herní programátor, server programátor, grafický programátor či programátor pro více hráčů.
  • Alternativně, můžete jít cestou managementu jako já, a mentorovat lidi. Moje taktika pro postup v kariéře byla absorbovat nové povinnosti. Nejprve jsem začal zlepšováním menších věcí, tj. drobnými změnami pracovního postupu. Poté jsem usnadnil procesy použitím šablon k ušetření času při vytváření nových projektů. Pak jsem získal chuť na mentoring a řízení, které mi pomohlo získat více sebevědomí a teď se účastním recenzí s kolegy, recenzí kódu, pořádám workshopy a vedu týmy na projektech.

Ať už pracujete jako součást týmu, nebo jako manažer, je stejně důležité dávat uznání jako dávat konstruktivní kritiku. Při kontrole kódu je dobré povzbudit lidi!

Jaké Jsou Klíčové Principy Programování Her?

Je několik klíčových témat, které prostě musí být zahrnuty v blogu o programování her. Tyto jsou některé z nejdůležitějších věcí, které bereme v úvahu.

Správa verzí / Řízení zdrojů

Stejně jako máte úložné body ve hrách, existují úložné body v projektovém rozvoji. Fungují jako obecné úložiště pro projekt a znamenají, že tři nebo čtyři programátoři mohou pracovat na systému současně, udělat změnu a odeslat ji na server. Umožňuje nám sledovat tyto změny a snadno se vrátit zpět, pokud se něco pokazí. Pokud dva vývojáři pracují na stejném souboru, ten se stane částí sloučení, pokud existují konflikty, můžeme je ručně vyřešit nebo si vybrat změny některého jedince k aplikaci. Tohle se bude často dít při použití prefabrikátů nebo scén v Unity.

Tyto termíny se někdy překrývají, ale obecně, správa zdrojů se zaměřuje na kód a správa verzí zahrnuje všechny soubory projektu, aktiva a dokumentaci.

Když začínáte používat správu verzí, může se zpočátku zdát trochu děsivá, může se zdát velmi ohromující a když přijde na konflikty, můžete se ocitnout nejistí, co dělat. Ale povaha řízení verzí vám pomáhá ukládat okamžiky v čase, takže pokud se často aktualizujete a používáte podrobné zprávy o commitech, je to neuvěřitelně užitečné a bezpečné. Můžete se vrátit k několika bodům, mít několik větví atd. Berte to jako bezpečnostní síť pro vývojáře, abychom se vyvarovali verze Pixarovské Toy Story 2 - náhodně smazané a následně obnovené z pevného disku doma jejich technického ředitele, místo toho je všechno bezpečně na serveru.

Objektově orientované programování

To je typ programování, který primárně používáme v Kwalee. Používá objekty k reprezentaci reálných věcí nebo abstraktních konceptů a zaměřuje se na organizaci kódové základny použitím principů, které zrcadlí, jak vidíme a interagujeme s objekty v reálném světě. Pomáhá udržet složité systémy tím, že organizuje kód do samostatných tříd, které můžete znovu použít, škálovat a udržovat snáze.

Samozřejmě, je tu debata o tom, zda je to dobré nebo ne. Zatímco to není nejvýkonnější, funguje to dobře. Stejně jako u jazyků, každý má své klady a zápory a měli byste se naučit jeden na začátek a pochopit, jak jazyky a kompilátory (překladače lidského kódu do kódu strojního) fungují. Můžete také zvážit jiné typy, jako funkční programování, které s ním zachází více jako s matematikou, logické programování, které používá fakta a pravidla, nebo procedurální programování, které používá krok za krokem data.

Programovací vzory

To jsou nádherně užitečné věci - znovupoužitelné řešení, které mohou pomoci s běžnými problémy, s nimiž se setkáte při návrhu softwaru. Dávají vám šablonu pro opravu problému, takže nemusíte pokaždé znovu vynalézat kolo a můžete sledovat ověřená řešení.

Například designový vzor Singleton vám pomůže zajistit, že existuje pouze jedna instance třídy, jako je manažer herního nastavení, v celé vaší hře, a poskytuje vám globální přístupový bod k ní. Kód pro tento vzor znamená, že existuje pouze jedna instance třídy SettingsManager, takže ji nemusíte znovu vytvářet nebo duplikovat pokaždé, když ji potřebujete.

Existuje také Factory Pattern, který vám může pomoci vytvářet objekty organizovanějším a flexibilnějším způsobem. Můžete definovat metody pro generování specifických typů objektů, jako jsou postavy nebo objekty, na základě vstupních parametrů, což vám umožňuje snadno vytvářet více podobných objektů, aniž byste museli začínat od nuly pokaždé.

Doufám, že tento blog vám dal chuť na programování her, ať už jste nováčkem v oboru nebo zkušeným programátorem! Pokud jste pracovitý ale zábavný člověk, hodili byste se do našeho týmu, tak zjistěte více o karierách v Kwalee. Jinak se můžete dozvědět o našich mobilních hrách nebo publikování a podívat se na to, co vydáváme jako vývojář a vydavatel.

O autorovi:

Connor Taylor, vedoucí programátor her ve společnosti Kwalee, vyniká v tvorbě her a podporuje zábavný a přátelský tým. S více než 5 lety zkušeností vytvořil hity jako Jetpack Jump a mentory další v oblasti vývoje v Unity.

Sdílet tento článek: