Programování videoher - Video game programming
![]() |
Část seriálu o: |
Videoherní průmysl |
---|
Příbuzný |
Programování her, podmnožina vývoj her, je vývoj softwaru z videohry. Programování her vyžaduje značné dovednosti softwarové inženýrství a programování v daném Jazyk, jakož i specializace v jedné nebo více z následujících oblastí: simulace, počítačová grafika, umělá inteligence, fyzika, audio programování, a vstup. Pro masivně online hry pro více hráčů (MMOG), znalost dalších oblastí, jako je síťové programování a programování databáze jsou potřeba. Ačkoli se často zabývá profesionálem herní programátoři, někteří mohou programovat hry jako hobby.
Vývojový proces
Profesionální vývoj her obvykle začíná a herní design, který sám o sobě má několik možných původů. Proces vývoje hry občas začíná bez jasného designu, ale jako série experimentů. Například, herní designér Will Wright zahájil vývoj The Sims tím, že přimíme programátory experimentovat s několika nápady.
Prototypování
Programátoři jsou často povinni vyrábět prototypy herních nápadů a funkcí. Velké množství prototypů může probíhat během předvýroby před dokončením dokumentu návrhu a může pomoci určit, jaké vlastnosti návrh určuje.
Prototypy jsou vyvíjeny rychle s velmi malým časem na prvotní design a většinou fungují jako důkaz konceptu nebo pro testování nápadů. Neočekává se, že budou fungovat bezchybně, ale budou vyvinuty, aby vyzkoušely nové, někdy exotické nápady.
Herní design
Ačkoli hlavním úkolem programátora není vývoj herního designu, programátoři k návrhu často přispívají, stejně jako to dělá herní umělci. Herní designér bude vyžadovat vstup od obou výrobce a umění a programovací vedení pro nápady a strategie pro herní design. Často přispívají i jednotlivci na neřízených pozicích, jako např copywritery a další programátoři a umělci.
Programátoři často pečlivě sledují herní designový dokument. Jak vývoj hry postupuje, dokument designu se mění s objevováním a využíváním programovacích omezení a nových funkcí.
Výroba
Během výroby mohou programátoři vytvořit hodně zdrojový kód vytvořit hru popsanou v designovém dokumentu hry. Podél cesty je dokument návrhu upraven tak, aby splňoval omezení, nebo je rozšířen o nové funkce. Návrhový dokument je do značné míry „živým dokumentem“, jehož velkou část života diktují programátorské plány, talent a vynalézavost.
Zatímco mnoho programátorů má některé slovo v obsahu hry, většina výrobci her požádat o vstup z hlavní programátor pokud jde o stav vývoje programování her. Vedoucí je zodpovědný za znalost stavu všech aspektů programování hry a za upozornění na omezení. Vedoucí programátor může také předat návrhy programátorů ohledně možných funkcí, které by chtěli implementovat.
S dnešním vizuálně bohatým obsahem musí programátor často komunikovat s umělecký štáb. To samozřejmě velmi záleží na roli programátora. Například a 3D grafický programátor možná budete muset pracovat bok po boku s 3D modeláři hry diskutovat o strategiích a úvahách o designu, zatímco AI programátor možná bude muset komunikovat velmi málo, pokud vůbec, s uměleckými pracovníky. Aby mohli programátoři a designéři úrovní pomáhat s jejich úkoly, mohou se programátoři přihlásit jako dobrovolníci nebo být vyzváni k vývoji nástroje a utility. Mnohé z nich mohou být pro konkrétní účel a mohou být kočárek kvůli časovým omezením (čas na vývoj takových nástrojů často není zahrnut v plánu hry), a také proto, že jsou stejně tak pouze pro vlastní použití. Mnoho herních nástrojů je vyvíjeno v RAD jazyky pro rychlejší vývoj a mohou být po dokončení hry zahozeny.
Testování
Formální zajištění kvality testovací proces, prováděný profesionálem testery her, začíná vývojem her. Vysokorozpočtové tituly mohou začít testovat s první hratelnou alfa, zatímco nízkorozpočtové a příležitostné hry nemusí vstoupit do testování až do propuštění kandidáta je připraven. Úkolem programátorů je opravit chyby a chyby jako takové objevují týmy QA.
Blízké dokončení
Mezi závěrečné úkoly patří „vyleštění“ hry, například programátoři opravující občasné chyby - od drobných po katastrofické - které mohou nastat během posledních fází testování.
Vývojáři her mohou mít beta testování období, ale definice se liší od vývojáře k vývojáři. Beta verze často obsahuje všechny funkce hry, ale může obsahovat několik chyb nebo neúplný obsah. Několik her dostává veřejné beta období, například pro měření tolerance stresu u hry servery.
Když je hra považována za dokončenou, říká se, že „pryč zlato „a je odeslán vydavateli. V závislosti na okolnostech jej potom vydavatel může podrobit vlastnímu zajištění kvality nebo může zahájit lisování hry z zlatý pán.
Údržba
Jakmile se hra dodá, začne fáze údržby videohry. Programátoři čekají na určité období, aby získali co nejvíce hlášení o chybách. Jakmile si vývojář myslí, že získali dostatečnou zpětnou vazbu, programátoři začnou pracovat na náplast. Oprava se může vyvíjet týdny nebo měsíce, ale je určena k opravě většiny chyb a problémů s hrou. Oprava může občas obsahovat další funkce nebo obsah nebo dokonce může změnit hru.
Doba trvání
Dokončení většiny moderních her trvá jeden až tři roky. Délka vývoje závisí na řadě faktorů, nástroje a hardware ale programování je vyžadováno ve všech fázích vývoje s výjimkou velmi raných fází herního designu.
Nástroje
Stejně jako ostatní software jsou programy pro vývoj her generovány z zdrojový kód ke skutečnému programu (tzv spustitelný) a překladač. Zdrojový kód lze vyvinout téměř s jakýmkoli textový editor, ale mnoho profesionálních herních programátorů používá plnou verzi integrované vývojové prostředí. Opět platí, které IDE se používá, závisí na cílové platformě.
Kromě IDE vytváří mnoho společností zabývajících se vývojem her vlastní nástroje vyvinutý k vlastnímu použití. Některé z nich zahrnují prototypy a nástroje pro převod aktiv (programy, které mění umělecká díla například do vlastního formátu hry). S hrou mohou být dodány i některé vlastní nástroje, například a editor úrovní.
Společnosti zabývající se vývojem her jsou často velmi ochotné utratit tisíce dolarů, aby zajistily, že jejich programátoři budou dobře vybaveni těmi nejlepšími nástroje. Dobře vybavený programátor může mít dva až tři vývojové systémy a více monitorů, které dominují jejich kanceláři nebo skříni.
Programovací jazyky
Jazyk | Funkce |
---|---|
Shromáždění | Potenciálně minimální CPU nad hlavou |
C | Široce známé, široce přenosné, četné API, kompiluje se strojový kód |
C ++ | Objektově orientovaný, široce známé, mnoho API, kompiluje do strojového kódu |
Jáva | Objektově orientovaný, sbírat odpadky, široce přenosný (přes a virtuální stroj ) |
C#, Visual Basic .NET, atd. | Objektově orientovaný, sbíraný odpad, rozhraní s Microsoft produkty |
Cíl-C, Rychlý | Objektově orientovaný, rozhraní s Jablko produkty |
Lua, Krajta, JavaScript, Tcl, atd. | Známá syntaxe, snadno zabudovatelná do výše uvedených jazyků, často používaná pro skriptování |
Lisp, Pascal, Perl, Pokec, atd. | Fringe herní jazyky, i když vazby na populární knihovny jsou běžné |
Po odsouhlasení počátečního designu hry je třeba rozhodnout o vývojovém jazyce. Volba závisí na mnoha faktorech, jako je jazyková znalost programovacího personálu, cílové platformy, požadavky na rychlost provádění a jazyk jakékoli herní enginy, API nebo knihovny se používá.
Pro osobní počítače, vybraný jazyk může být jen něco více než věc preference. Jazykové vazby pro populární knihovny jako SDL a Allegro jsou rozšířené,[1][2] a výkonnostní rozdíl mezi moderním idiomatickým kódem sestaven jazyků je zanedbatelný.[3][4] Nejpopulárnější jazyky jsou obvykle procesní nebo objektově orientovaný a implementováno prostřednictvím překladače; například, C,[5] C ++,[5][6] a Jáva.[7] Vývojáři to však mohou vzít v úvahu doména - specifické funkce, jako je rozhraní s operačním systémem a odolnost vůči reverzní inženýrství pro online videohry.[8] Mnoho her není napsáno výhradně v jednom jazyce a mohou kombinovat dva nebo více jazyků; Například, Jednota, populární herní engine, má různé části napsané v C, C ++ a C#.
Pro konzoly, podpora cílové platformy je obvykle nejvíce zvažovaným faktorem. V minulosti byly videohry pro konzole psány téměř výlučně v jazyce shromáždění kvůli omezeným zdrojům, pokud jde o rychlost ukládání i zpracování.[9] Jak však technologie pokročila, rozšiřují se i možnosti vývoje her na konzolích. Nintendo,[10] Microsoft, a Sony[11] všechny se liší SDK pro jejich Wii U, Nintendo Switch, Xbox One, a PlayStation 4 konzoly.
Vysoká úroveň skriptovací jazyky se stále častěji používají jako vložená rozšíření základní hry napsaná v kompilovaném programovacím jazyce, pro pohodlí původního vývojáře i kohokoli, kdo by si přál mod hra. Lua je velmi populární volbou, protože je napsáno jeho API ANSI C. a jazyk je navržen pro zabudování do jiných aplikací.[6][12] Mnoho vývojářů vytvořilo pro své hry úplně vlastní jazyky, například id Software je QuakeC a Epické hry ' UnrealScript.
API a knihovny
Klíčovým rozhodnutím v programování her je, pokud existuje API a knihovny použít. Dnes je k dispozici řada knihoven, které se starají o klíčové úkoly programování her. Některé knihovny zvládnou zpracování zvuku, vstup a grafické vykreslení. Někteří dokonce zvládnou některé AI úkoly jako hledání cesty. Existují dokonce celé herní enginy které zvládají většinu úkolů programování her a vyžadují pouze kódování logika hry.
Která rozhraní API a knihovny si člověk vybere, závisí do značné míry na cílové platformě. Například knihovny pro Playstation 2 vývoj nemusí být k dispozici pro Microsoft Windows a naopak. K dispozici jsou však herní rámce, které umožňují nebo usnadňují vývoj napříč platformami, takže programátoři mohou programovat hru v jednom jazyce a nechat ji běžet na několika platformách, například Wii, PlayStation 3, Xbox 360, PSP a Microsoft Windows.
Grafické API
OS | Vulkan | Přímý X | GNMX | Kov |
---|---|---|---|---|
Windows 10 | Ano | Ano | Ne | Ne |
Mac | MoltenVK | Ne | Ne | Ano |
GNU / Linux | Ano | Ne | Ne | Ne |
Android | Ano | Ano | Ano | Ne |
iOS | MoltenVK | Ano | Ano | Ano |
Tizen | v Dev | Ne | Ne | Ne |
Plachetnice | v Dev | Ne | Ne | Ne |
Xbox One | Ne | Ne | Ne | Ne |
Orbis OS (PS4) | Ne | Ne | Ne | Ne |
Nintendo Switch | Ne | Ne | Ne | Ne |
Grafika je dnes klíčovým určujícím prvkem většiny her. Zatímco 2D grafika bývalo normou pro hry vydané v polovině 90. let AAA hry nyní se chlubí 3D grafika, dokonce i pro hry, které mají převážně 2D charakter, jako např Civilizace III. Čistě 2D grafika však zažila renesanci indie hry.[13]
Dobře zavedený osobní počítač platformou je Microsoft Windows. Vzhledem k tomu, že byl předinstalován téměř na devadesát procent PC prodáno, má nyní největší uživatelskou základnu.[Citace je zapotřebí ] Dvě nejoblíbenější rozhraní API pro 3D grafiku pro Microsoft Windows jsou Direct3D a OpenGL. O výhodách a slabinách každého API se mezi Windows živě diskutuje herní programátoři.
V současné době nejoblíbenější Výpočetní platforma je Google Android. Vzhledem k tomu, že je předinstalován na téměř osmdesát procent Chytré telefony Android má druhou největší uživatelskou základnu a zvyšuje se. Android používá OpenGL ES & Vulkan (API).
DirectX je sbírka herních API. Direct3D je 3D API DirectX. Direct3D je volně dostupný z Microsoft, stejně jako zbytek API DirectX. Microsoft vyvinul DirectX pro herní programátory a pokračuje v přidávání funkcí do API. Specifikace DirectX není řízena otevřenou rozhodčí komisí a Microsoft může přidávat, odebírat nebo měnit funkce. Direct3D není přenosný; je navržen speciálně pro Microsoft Windows a žádnou jinou platformu (i když se na Microsoftu používá forma Direct3D Xbox, Smartphony a mobilní zařízení s Windows Phone 7.5, na nichž je spuštěn Kapesní PC operační systém).
OpenGL je přenosná specifikace API. Kód napsaný pomocí OpenGL se snadno přenáší mezi platformami s kompatibilní implementací. Například, Quake II, který používá OpenGL, byl portován z Windows na Linux fanouškem hry. OpenGL je standard udržovaný OpenGL Architecture Review Board (ARB). ARB se pravidelně schází, aby aktualizoval standard přidáním nově vznikající podpory pro funkce nejnovějšího 3D hardwaru. Vzhledem k tomu, že je založen na standardech a je nejdelší, je OpenGL používán a vyučován vysoké školy a vysoké školy okolo světa.[Citace je zapotřebí ] Kromě toho vývojové nástroje poskytované výrobci některých videoherních konzolí (například Nintendo GameCube, Nintendo DS a PSP) používají grafická rozhraní API, která se podobají OpenGL. OpenGL často zaostává v aktualizacích funkcí kvůli nedostatku stálého vývojového týmu a požadavku, aby implementace zahájily vývoj po zveřejnění standardu. Programátoři, kteří se rozhodnou jej použít, mají přístup k nejnovějším 3D funkcím hardwaru, ale pouze prostřednictvím nestandardizovaných rozšíření. Situace se může v budoucnu změnit, protože kontrolní deska architektury OpenGL (ARB) předala kontrolu nad specifikací Skupina Khronos ve snaze čelit problému.[14]
Další API
Pro vývoj v systému Microsoft Windows lze pro vstup použít různé rozhraní API DirectX, zvukové efekty, hudba, síťování a přehrávání videí. K plnění těchto úkolů je k dispozici mnoho komerčních knihoven, ale protože je DirectX k dispozici zdarma, je nejpoužívanější.
Pro programování konzoly je výrobci konzol poskytují zařízení pro vykreslování grafiky a další úkoly vývoje her. Výrobci konzolí také poskytují kompletní vývojové systémy, bez nichž nelze legálně prodávat ani vyvíjet hry pro svůj systém. Vývojáři třetích stran také prodávají sady nástrojů nebo knihovny, které usnadňují vývoj jednoho nebo více těchto úkolů nebo poskytují speciální výhody, například možnosti vývoje napříč platformami.
Struktura hry
Ústředním prvkem jakékoli hry, z hlediska programování, je herní smyčka. Herní smyčka umožňuje plynulý chod hry bez ohledu na vstup uživatele nebo jeho nedostatek.
Většina tradičních softwarových programů reaguje na vstup uživatele a bez něj nic nedělá. Například a textový procesor formátuje slova a text podle typu uživatele. Pokud uživatel nic nezadá, textový procesor nic neudělá. Dokončení některých funkcí může trvat dlouho, ale všechny jsou iniciovány uživatelem, který programu říká, aby něco udělal.
Na druhé straně hry musí nadále fungovat bez ohledu na vstupu uživatele. Herní smyčka to umožňuje. Vysoce zjednodušená herní smyčka pseudo kód, může vypadat asi takto:
zatímco (uživatel neopustí) zkontrolovat vstup uživatele spustit AI pohyb nepřátel vyřešit kolize kreslit grafiku hrát zvukyskončit chvíli
Smyčka může být vylepšována a upravována v průběhu vývoje hry, ale většina her je založena na této základní myšlence.[15]
Herní smyčky se liší v závislosti na platformě, pro kterou jsou vyvinuty. Například hry napsané pro DOS a mnoho konzolí může bez omezení ovládat a využívat dostupné zdroje zpracování. Hry pro moderní operační systém pro PC, jako je Microsoft Windows, však musí fungovat v rámci omezení plánovače procesů. Některé moderní hry fungují vícekrát vlákna takže například může být výpočet znakové AI oddělené z generace plynulého pohybu ve hře. To má nevýhodu (mírně) zvýšené režie, ale hra může běžet plynuleji a efektivněji hypervlákání nebo vícejádrový procesory a na víceprocesorových platformách. Se zaměřením na počítačový průmysl CPU s více jádry, která mohou vykonávat více vláken, je to stále důležitější. Konzoly jako Xbox 360 a PlayStation 3 již mají více než jedno jádro na procesor a provádějí více než jedno vlákno na jádro.
Fandové
Jediné platformy, které mají fanoušci k dispozici pro programování, jsou spotřebitelské operační systémy, jako Android, iOS, Windows, Mac, Linux atd. Důvodem je, že vývoj na herních konzolích vyžaduje speciální vývojové systémy, které stojí tisíce dolarů. Často je musíte získat od výrobce konzoly a jsou prodávány nebo pronajímány pouze profesionálním studiím pro vývoj her. Společnost Microsoft však distribuovala rámec pro vývoj her, XNA, který běží na Microsoft Windows i Xbox 360. XNA byla ukončena, ale jiné projekty jako MonoGame a SharpDX se snaží umožnit stejný přístup pro kódování her. V poslední době je Android nejoblíbenější fandovou platformou pro mobilní vývojáře.[16] Někteří fandové se také rozvíjejí domácí hry, zejména pro ruční systémy nebo upraveno konzoly.
Nějaký softwarové inženýrství studenti programují hry jako cvičení pro učení a programovací jazyk nebo operační systém.
Někteří fanoušci mohou používat softwarové balíčky, které pomáhají s vývojem her, například Adobe Animate, Jednota, Android Studio, pygame, Studio dobrodružných her, Studio GameMaker, Godot, Neskutečný motor nebo Postavit.
Viz také
Reference
- ^ "Vazby jazyka SDL". Citováno 2015-11-08.
- ^ „Allegro - jazykové vazby“. Citováno 2015-11-08.
- ^ Corlan, Alexandru-Dan (2003). „Srovnávací hodnoty programovacího jazyka“. Citováno 2015-11-08.
- ^ Corlan, Alexandru-Dan (11.06.2011). „Srovnávací hodnoty programovacích jazyků“. Citováno 2015-11-08.
- ^ A b Corlan, Alexandru-Dan (2011). „Programování her v C a C ++“. Citováno 2015-11-08.
- ^ A b DeLoura, Mark (05.03.2009). „The Engine Survey: General results“. Citováno 2015-11-08.
- ^ Corlan, Alexandru-Dan. "LWJGL - Projekty". Archivovány od originál dne 10.11.2015. Citováno 2015-11-08.
- ^ Zajíc „Žádné chyby“. „Kapitola V (b) z„ Vývoj a nasazení MMOG"".
- ^ Hyde, Randy (1985). Použití 6502 assembleru.
- ^ Helgason, David (2. listopadu 2012). „Vývojáři her, spusťte své enginy Unity 3D“. GamesBeat (Rozhovor). Rozhovor s Deanem Takahashim. VentureBeat. Citováno 13. července 2014.
- ^ „[Phoronix] Proč Sony používá LLVM / Clang na PlayStation 4“. Phoronix.com. Citováno 17. listopadu 2014.
- ^ Corlan, Alexandru-Dan (2015-03-24). „Lua: Uses“. Archivovány od originál dne 2019-07-24. Citováno 2015-11-08.
- ^ „Proč je většina indie her 2D místo 3D?“. Bující hry. 16. 05. 2013. Citováno 2017-01-01.
- ^ „Khronos umístí testy shody OpenGL a OpenGL ES do otevřeného zdroje“. Tisková zpráva skupiny Khronos. Archivovány od originál dne 2008-05-03.
- ^ „Programování linuxových her, kapitola 1“. ISBN 1-886411-48-4.
- ^ „Zpráva: 79% mobilních vývojářů dává přednost sestavení pro Android“. 29. srpna 2016.
externí odkazy
- GameDev.net, přední zdroj pro vývoj her
- Mezinárodní asociace vývojářů her (IGDA)
- Vývoj her pro softwarové inženýry, krátký 5denní krátký kurz nabízený MIT pod vedením mentorů oceňované MIT Game Lab.
- Jedna zkušenost bývalého programátora v oboru vývoje her
- Doporučení veterána herního průmyslu Toma Slopera ohledně programování her