Hlavní stránka Multimédia Hry a zábava Ze zákulisí vývoje počítačových her 1.
Ze zákulisí vývoje počítačových her 1.
autor: Aleš Ulm , publikováno 19.7.2008
Seznam kapitol
1. Na počátku je myšlenka
2. Prokletí jménem vertical slice
Ze zákulisí vývoje počítačových her 1.

Občas až neuvěřitelné tempo vývoje hardware dnešních počítačů má v podstatě jeden hlavní důvod. Vedle honby výrobců za dalším a dalším ziskem jsou to hlavně nároky moderních her. Ty si žádají stále novější a výkonnější počítače, po kterých všichni tak prahneme. Ale jak taková hra vlastně vzniká? Kdo jsou ti vývojáři a co vlastně dělají?


Kde je tedy chyba? Zdálo by se, že stačí mít dobrý nápad, hodit ho na papír a je vyhráno. Problém je, že tohle je dnes schopný udělat skoro každý a papír plný vašeho holedbání není dostatečnými důkazem toho, že hru dokáže udělat i když dostanete finanční prostředky. Chybí vám totiž technologické demo nebo ideálně vertical slice... Existuje jistá šance, že se vám podaří uzavřít smlouvu i bez nějaké ukázky, ale to v případě, když toho za sebou máte opravdu hodně, jste s vydavatelem extrémně zadobře a jedná se o menší projekt. Nutnosti něco předvést nejsou ušetřena ani opravdu velká studia.

Ze zákulisí vývoje počítačových her 1.

A to je ta uzavřená brána, před kterou končí amatérské projekty. Pro jakékoliv demo už potřebujete mít engine, potřebujete mít nějaký obsah a hlavně to nesmí vypadat, jako že jste se právě začali učit pracovat s vaším prvním 3D programem. Jak jste již jistě bystře odtušili, tohle všechno už samo o sobě stojí spoustu peněz – peněz, které v tuhle chvíli musíte dát často pouze ze svých zdrojů.

Není demo jako demo

Možná, že nejste zcela srozuměni s dvěma termíny, které jsem použil v předchozím odstavci. Co to tedy po vás vlastně chtějí za ukázku? Význam slovního spojení technologické demo je celkem zřejmý. Vezmete herní engine a v něm ukážete základní funkčnost hry. Když je to adventura, můžete s postavičkou chodit po jedné úrovni, dovolit hráči sebrat předmět či dva a občas prohodit nějakou tu repliku. Ve střílečce ho necháte chvíli pobloudit koridory nebo někde venku, občas na něj pošlete nějakou nepříliš inteligentní potvoru, která se dá zlikvidovat. To vše v „pracovní“ kvalitě, často spíš s důrazem na vizuální stránku hry než nějakou pokročilou funkčnost. V podstatě tím říkáte „takhle se bude hra zhruba hrát a grafika bude zhruba takováhle“. Pokud máte za sebou dostatek zkušeností, engine ve kterém se vyznáte a nesnažíte se prezentovat něco neskutečně originálního a pracného na implementaci, tak není vytvoření techdema obvykle nijak zvlášť náročné.

Ze zákulisí vývoje počítačových her 1.
Tohle asi nebude pod osmnáct přístupné - zdroj appearstudio.com

Opravdová noční můra je dnes stále více požadovaný vertical slice. Jedná se o „vertikální průřez“ hrou – vaším úkolem je, ukázat víceméně finální funkčnost všech herních mechanizmů a vizuální stránku hry v malé oblasti – třeba v jedné místnosti nebo úrovni. Pokud byste tedy například chtěli vyvíjet scifi RPG, může po vás vydavatel chtít vidět v jedné obrazovce kompletní funkční uživatelské rozhraní i kompletní ovládání postavy. Hrátky s fyzikou jako je ragdoll či zničitelné prostředí, animace postav ve finální kvalitě a stejně tak jejich textury, částicové efekty, shadery...  Ideálně byste při hraní toho drobného úseku hry ani neměli nijak zvlášť poznat, že se jedná o prototyp. Jestli vás děsí myšlenka toho, že musíte mít v podstatě kompletně hotovou značnou část hry – přinejmenším co se týká různých jejích subsytémů – abyste mohli vůbec začít reálně jednat s vydavatelem, tak nejste sami.

Je to nebezpečně nastavený systém, ze kterého samozřejmě těží publisher, protože zatímco jeho to nic nestojí, vývojáři musí do hry s nejistou budoucností nacpat nemalé množství peněz. Další nevýhodou je, že takový postup jde proti základní filozofii vývoje počítačových her a to experimentování. Průběžnému testování herních principů, zahazování těch, které nefungují dobře a jejich nahrazování a vylepšování. Dodatečným změnám ve hře které jsou často nejen nezbytné ale i žádoucí.

Ze zákulisí vývoje počítačových her 1.
Návrhy zbraní do hry - sekera vs. rotačák

 A navíc o tom, že ani tahle nesmírně pracně připravená herní ukázka nemusí nutně znamenat podepsání smlouvy a takto vynaložené prostředky mohou v podstatě „vyletět komínem“ by mohla vyprávět celá řada vývojářů. Že taková událost může slabší společnost bez problému zlikvidovat je zřejmé a také se to děje. Ale dosti truchlení. Představme si, že všechno dobře dopadlo a na hře se už konečně začíná pracovat.

Herní bible

V tuhle chvíli by tým měl už mít k dispozici design document. Jedná se o jakousi bibli, ve které je popsán veškerý obsah hry a funkčnosti jejích jednotlivých systémů. O tom, jak by měla správně vypadat tato dokumentace se vedou přednášky i spory. V podstatě můžete mít jeden či více (obvykle wordovských) dokumentů nebo interní projektovou wiki. Oboje má svoje pro a proti – například wiki je obvykle vhodnější, pokud dokumentaci upravuje často větší počet uživatelů, na druhou stranu má ale tendence se zanášet nepodstatnými výkřiky a také z ní může být problém vyexportovat v případě potřeby informace v kompaktní a použitelné formě. Každopádně pokud v týmu nevznikají prostoje, všichni vědí, co a jak mají dělat a z existujících podkladů je možné rychle získat veškeré potřebné informace, pak způsob dokumentace bez ohledu na formu funguje správně.

Ze zákulisí vývoje počítačových her 1.
Bible svatá - přístupné od 3 let!

U menších projektů jsou design dokumenty obvykle v rozsahu desítek, u větších pak stovek stran. Opravdu velké projekty typu Mass Effect pak mají ještě speciální dokumenty věnované například pouze postavám (tzv. character bible), které se svým rozsahem blíží kompletní dokumentaci malých her.

Protože už tedy víme, co přesně chceme dělat a máme to pěkně přehledně připraveno, zaměříme se teď na věci techničtějšího rázu. Předně je to engine a otázka použitého middlewaru.

O srdci hry a dalších orgánech

Výběr enginu, na kterém hra poběží, je pochopitelně také jedna ze zásadních – a obvykle nevratných – voleb. Pokud má vývojářské studio k dispozici vlastní kvalitní engine, přesně ví, co od něj může očekávat a jaké jsou jeho limity. V průběhu vývoje hry ho pak jen vylepšuje a ladí. Další výhodou je, že tým je zvyklý na něco, obvykle označovaného jako tools(y) – tedy sadu aplikací, které slouží pro přípravu obsahu do hry, kterou pak zmíněný engine pohání. Je to pochopitelně nějaký druh editoru, ve kterém se scény sestavují, může to být aplikace pro správu assetů - jednotlivých prvků, ze kterých je hra složena, nebo třeba prográmek pro práci s textovou databází. Kvalita těchto aplikací významně ovlivňuje to, jak rychle a pohodlně se dá do hry dostat nějaký ten – hezky česky řečeno - content.

Podívejme se na příklad. Máte venkovní úroveň a potřebujete ji zatravnit. V nejhorším případě si někdo sedne k editoru a začne manuálně umísťovat, rotovat a upravovat měřítko tisícům trsů trav. Kvalitnější aplikace ale umožní například nad mapou terénu zakreslit barevně hustotu trávy a z tohoto obrázku pak do scény jednolité trsy vygenerovat. A kdo jde ještě dál, může mít pro rozmísťování vegetace naprogramovaný vlastní systém a rostliny se mu vygenerují prakticky samy tam, kde by měly růst. Schválně – kdo by radši trávil čas u první varianty? :)

Ze zákulisí vývoje počítačových her 1.

Protože však vývoj enginu i toolsů je věc jak finančně tak i časově náročná, je možné pro určitou hru nějaký engine licensovat. Ozvete se jeho tvůrcům, sdělíte jim informace o vašem projektu a získáte časově omezenou testovací verzi, ze které zjistíte, jestli vám engine vyhovuje. Pokud ano, dohodnete se s jeho tvůrcem na ceně. Ta se může celkem významně různit například podle toho, na jaké platformy hra vyjde nebo jaký stupeň podpory budete mít k dispozici. U drahých enginů typu Unrealu už ale obvykle s jejich tvůrcem cenu neřeší přímo vývojář ale publisher, který hru financuje.

Není vše zlato co se třpytí

Může se zdát překvapivé, že i některé enginy z kategorie těch dražších nepředstavují kompletní řešení, které by od nich člověk za tu cenu očekával. Váš draze získaný engine nemusí mít ve svém základu například síťový kód, jakoukoliv formu AI včetně primitivního pathfindingu nebo dokonce ani systém pro přehrávání zvuků a hudby. Důvod je prostý – požadavky vývojářů na tyto oblasti se často liší a na trhu jsou dostupná 3rd party solutions, jinak taky označovaná jako middleware. Je logické, že pokud se nějaká firma specializuje čistě na vývoj specifického AI modulu (jako například Kynogon), bude její výsledný obvykle produkt lepší, než to, co byste dostali jako „bonus“. Proto poté, co je zřejmé, jaký engine budete při tvorbě hry používat, se musíte rozhodnout, které z těchto oblastí dořešíte inhouse a na co koupíte již hotový produkt.

Ze zákulisí vývoje počítačových her 1.
Pixaři s enginem problém nemají...

Pokud máte peníze, můžete se chovat jako dítě v cukrárně. Je libo opravdu kvalitní AI? Nestačí vám pathfinding, ale chcete, aby vaše postavy při chůzi analyzovaly terén na potenciální rizika, mířily do oken a za rohy? Pak si dokoupíte třeba Kynapse od zmiňované firmy Kynogon. Její programátor obvykle přijede do vaší společnosti a s těmi vašimi během pár dní (v závislosti na kvalitě vašeho enginu a jeho dokumentace) systém zaimplementuje. Chcete vytvářet GUI do hry ve Flashi? Je tu Scaleform GFX. Obyčejná ragdoll fyzika vám připadá nudná? Koupíte Euphorii. A jestli se vašim grafikům nechce modelovat každý strom a keř do hry, pak je tu osvědčený šlágr – sada vegetace Speedtree. Když ji zaimplementujete – což obvykle nebývá problém, protože dražší enginy už s ní tak trochu počítají – můžete okamžitě vytvořit husté lesy a louky. Pokud jste spustili Gothic, nového onlinového Conana, Silverfall, Oblivion, Zaklínače, GTA IV nebo třeba poslední Settlery pak jste se se Speedtree setkali.

Ze zákulisí vývoje počítačových her 1.

Takže jakmile máte ten svůj nadupaný engine a všechno, co k němu patří, můžete se pustit do opravdového dělání her. Na to, jak konkrétně tahle fáze vypadá, kdo se jí účastní a jaké problémy se při ní nejčastěji řeší si povíme někdy příště...



 
Komentáře k článku
RSS
Pouze registrovaní uživatelé mohou přidat komentář!
19.7.2008 12:52:37   212.111.4.xxx 498
už se moc teším na pokračování, to je přesně to na co uz dlouho čekám DIKY!
19.7.2008 17:47:42   81.201.54.xxx 189
Tohle je přesně ten článek, který sem si chtěl přečíst, jen jsem o tom nevěděl, takže sem si ho ani nemoh najít :-D
Vždy mě ale zajímalo, jak to je s hrami. Těším se na pokračování. Ono, nadávat na to jak je jaká hra blbá a že to a to mohlo být lepší je sice moc pěkný, ale od doby co pracuji jako konstruktér, tak soucítím s vývojáři her. Čím větší projekt, tím je z toho po chvíli člověk uplně v pr*eli.
19.7.2008 18:44:26   194.213.42.xxx 148
Já už mám takovou deformaci, že když něco hraju, místo abych se plně věnoval příběhu, pořád přemýšlím a vypočítávám, kolik to dalo práce, kolik tohle dělalo lidí, jak to udělali apod. :-) No jo, začínat něčemu rozumět není vždycky + . :-D

Jinak bezva článek opravdu se rovněž těším na pokračování.
22.5.2010 20:47:42   85.207.196.xxx 11
Aros napsal:
Já už mám takovou deformaci, že když něco hraju, místo abych se plně věnoval příběhu, pořád přemýšlím a vypočítávám, kolik to dalo práce, kolik tohle dělalo lidí, jak to udělali apod. :-) No jo, začínat něčemu rozumět není vždycky + . :-D

Jinak bezva článek opravdu se rovněž těším na pokračování.


To ja zas u filmu nebo treba u televiznich novin, jelikoz se zajimam o strihani videa a grafikou..
19.7.2008 19:43:48   83.240.99.xxx 1010
Horší je, když děláš na hře, už při vývji víš, že za nic nestojí a doufáš, že si toho nikdo nevšimne a prodá se aspoň milion kusů
19.7.2008 20:47:21   81.201.54.xxx 1310
Crysis?
19.7.2008 20:54:30   80.250.11.xxx 1310
Crysis je vynikající hra. Sice se zprasenou optimalizací, ale nanosuit je skvělý oživení monotónních stříleček
19.7.2008 21:06:59   85.207.234.xxx 2110
V cem a proc ma Crysis "zprasenou" optimalizaci? Nikdo, kdo nestudoval zdrojaky, nemuze s urcitosti rici, jestli je neco zprasene nebo ne.
Tento oblibeny nazor se pravdepodobne traduje z toho duvodu, ze si lide predstavuji, ze kdyz je hra 2x tak narocnejsi nez konkurence, ze musi 2x lepe vypadat, jinak je jeji optimalzace "zprasena".
Coz samozrejme neni pravda.
Vubec by bylo zajimave udelat rozhovor ci clanek o vyvoji her se zamerenim na hw, jak probiha optimalizace a jake jsou realne moznosti vyvojaru z hlediska rozpoctu, jak se voli cilovy hw atd. Aby se predeslo ruznym naivnim prohlasenim o linych vyvojarich a podobne.
19.7.2008 21:11:50   80.250.11.xxx 1623
"zprasenou optimalizaci" si já osobně představuju tak, že vývojáři se buď dostatečně nesnaží, nebo do hry přidávají takový featury, který v podstatě znemožní jejich použití na jakémkoliv v současnosti dostupném HW. Příklad: částicovej efekt kterej sice vypadá pěkně - super - ale v jeho průběhu mi klesne FPS na 13 protože ani nejsilnější prodávanej procesor/GK ho nestíhá spočítat.

Prostě pokud vím že na to HW nemá, radši něco málo uberu aby to vůbec jelo. I když můj osobní názor je že je to doopravdy málo optimalizovaný(úpravy kódu, efektivnější postupy), protože "zas tak super" to teda fakt nevypadá.
21.7.2008 21:44:17   217.197.150.xxx 1511
Můj osobní názor na optimalizaci je takový že vývojáři ne že jsou zhnilí optimalizovat hru ale myslím že každá dnešní hra by šla udělat tak aby nebyla nijak moc náročná,samozřejmě že jde např. o použitý Shader model atd. ale hry si myslím že není až takový problém optimalizovat tak aby je rozjeli i slabší stroje ale proč by to vývojáři dělali?vždyť to jde jedno s druhým,vývojáři HW taky musí z něčeho žít.Jde o koloběh různých věcí: herní engine vs HW.....samozřejmě s vyšším výkonem HW se otvírají nové možnosti herních enginů.Všechno je to ale marketing o kterém běžný smrtelník nemá ani páru.Kdyby vývojáři jak HW tak enginů nechtěli aby byli jejich výtvory výkonější a u hry náročnější tak to prostě nedělaj,všichni to děláme kvůli penězům.Vemte si takový HL2, ten na to jak pěkně v té době vypadal byl možný rozjet na kdejakém krámu bez trhání...ale taky to byl projekt za obrovské peníze tak si na něm vývojáří dali záležet
20.7.2008 13:22:25   86.49.41.xxx 1311
Víš, jak pracují vývojáři v Cryteku už od dob Far Cry? Oni dělají engine tím způsobem, že nakoupí ty úplně nejnovější technologie, splácají to dohromady, vypadá to úžasně, je to ale prasárna. Potom se teprve starají o nějakou optimalizaci. Tohle je potvrzený fakt a nechci jim kvůli tomu nějak nadávat, je to jejich věc, ačkoliv to ve výsledku dopadne tak, že jejich hry si normální člověk vychutná až několik let po vydání.
20.7.2008 16:57:44   84.242.78.xxx 1615
jednoduche... kdyz ta hra pojede na pocitaci.. kterej poplacas do kupy za 20K(ne pocitac za 10 a k tomu za 10 hyper mys ze zlata), je hra v poradku. A stejne tak byl i Crysis. Otazka optimalizace. V Defaultu na pocitac za tech 20K. Ale proc by mela bejt hra(pitoma strilecka se zamerenim na vizualno) behat na nejaky sragore. Neni potreba tam poslouzi plno starsich her. WOW, SIMS,SPORE, to jede i na relativne slabejch pocitacich , protoze grafickej vykon tam neni moc potreba, protoze ta hra je vo necem jinem. POdle mne kdyz ma nekdo na to koupit si monitor 24'' s resolution 1920*1600 mel by mit taky na poradnou grafiku. Remcat v tomhle a vetsim formatu na to ze mam 256 MB grafiku a vo no se mi to cuka. Tim se nema cenu zabejvat. Napr PS3 XBOX360 je presne specifikovanej kus zeleza a da se na to optimalizovat do mrte.Ale na PC. Kazdy je jiny. Jinej pomer mezi RAM/CPU/GPU/VRAM/ZVUK tak na 1Mil moznosti se dost blbe optimalizuje. Proste nezbejva nez odhadnout to optimum pro cas vydani a na to to nastavit.
19.7.2008 21:09:00   81.19.33.xxx 1911
Crysis hra? sry ale je to trapne a nudne jako sledovani benchmarku, a vlastne to je jedine k cemu se to hodi, na porovnani kdo ma nabusenejsi masinu... hry uz davno nejsou o toho kdo prinese vetsi zabavu ale o tom kdo stvori pozadavkove prehnany nesmysl...radsi ani nebudu rikat kdy jsem si schuti zahral nejakou novinku ktera by me bavila a udrzela by me u monitoru na delsi dobu, ale bylo to uz hodne davno...
19.7.2008 22:06:22   83.240.99.xxx 109
Nemyslel sem nic konkrétního, jen že si vzpomínám, že někdo z Pterodonu říkal, že už když dělali Vietcong 2, tak jim to přišlo nějaký divný. Graficky lepší než jednička, rozsáhlejší mapy,lepší nepřátelé ... ale vlastně z toho nikdo neměl nějak moc dobrej pocit.
A skončilo to tak, že ta hra byla v podstatě propadák a vedla ke krachu Pterodonu (respektive ke sloučení s IS).
20.7.2008 09:12:35   81.201.54.xxx 129
Tak o Crysisu se zase radši přestaneme dohadovat. Je vidět, že jsou dva typy lidí. Jedni Crysis rádi hrajou a líbí se jim, druzí (jako já) se jim pouze líbí grafika ale hratelnost a příběh hledáme marně.
Nanosuit je jediná věc, proč jsem tu hru dohrál. Jo a taky proto, že jsem čekal až přijde nějaká zajímavá věc v ději.

Vietcong 2 - je pravda, že jedničku sem hltal, dvojka už mě tolik nevzala, ale rád si jí občas pustím, kde jinde potřílet šikmoočky :-)
21.7.2008 16:06:24   194.213.42.xxx 99
Jo, přesně... Jednička se mi velmi líbila, než jsem narazil na jakýsi podělaný bug, přes který se nešlo dostat a hrát znova se mi to nechtělo. Dvojku jsem akorát nainstaloval a zase odinstaloval :-(
30.7.2008 15:33:24   193.84.46.xxx 84
No V2 jsem nehrál, ale co vím, tak nejvíc se mu vyčítalo, to co mne vadilo už v jedničce, i když tam to bylo únosný, a to že AI vlastně byla dělaná jen skripny a tím, že počítač věděl, kde hráč je, takže na vyšší obtížnost nešel překvapit
19.7.2008 22:03:31   91.8.194.xxx 147
fajn clanok
ako sa pohybuju ceny tych enginov? napr graficke ako cryengine 2,ue3 a tak?
19.7.2008 23:06:18   217.75.213.xxx 119
Zajimave, tesim se na dasli dil, jinak pro nadšence co umí C++/C#/delphi nebo VB.NET je tu truevision3d engine, kterej je pro nekomerční použití zdarma a z free enginů se mi jeví jako nejlepší :-) a jedna komerční licence vyjde asi na $350. Nevim, jestli sem muzu hodit link, ale zkuste googlit :-) klíčový slovo je truevision3d :-)
20.7.2008 01:20:05   88.146.180.xxx 108
Dobrý den,
rád bych se začal učit nějaký programovací jazyk. Psal bych jak běžné aplikace, tak i jednoduché hry. Ideální by bylo kdyby to byl jazyk široce použitelný a praktický. Znalí věcy - poraďte prosím který, nebo které jazyky by byly vhodné a na co je který nejlepší(aspoň zhruba). Uvažuju o C++, nebo Jave. Děkuji za každou odpověď.

P.S. V jakých jazycích jsou psané dnešní hry jako např. Crysis, CS:Source, CoD a WoW?
Ještě jednou děkuji.
20.7.2008 07:27:49   217.77.165.xxx 119
Ahoj,

moje doporučení je: Nauč se víc jazyků. A je asi jedno, kterým začneš.

1. Na různé problémy se hodí různá řešení.
2. Snáz se naučíš porozumět základním pricipům, táhnoucím se napříč (téměř) všemi jazyky.
3. Nikdy nevíš, který programovací jazyk bude odnesen proudem času.

20.7.2008 08:13:12   195.70.143.xxx 128
No, dnešní moderní enginy jsou v drtivé většině psané v C++. Máme tu sice C# a managed Direct3D, ale to jaksi není to pravé ořechové. Co se 3D týče na Javu zapomeň.
Nezapomeň ale, že ani jazyk ani perfektní znalost Direct3D a pochopení práce grafického čipu (shaderů, atd..) ti engine "nevykouzlí". Na to je potřeba hlavně setsakramentsky dobrá znalost matematiky a fyziky.

Ale zase na druhou stranu pro obyčejné okenní aplikace je C# (WinForms) nebo Java (Swing) jednodušší než C++, ve kterém buď jedeš přímo ve WinAPI, popř. MFC (což značně ulehčuje cestu).

20.7.2008 17:10:53   84.242.78.xxx 168
Tak pokud delas neco pro Directx, tak zas tak velkej rozdil neni jestli to delas v C# nebo C++, na tom vykonu ve 3D se to moc nepozna. teoreticky de udelat hra v C# a nektere casti , muzes optimalizovat a napsat to v C++ , v ASM a v tom C# to jen vyuzivat. Duvod pouzivani C++ neni ani tak skutecnej vykon , ale spis nasledujici porting na neco jineho nez PC..ale pokud nekdo vyvaja hru jen pro PC muze pouzit C#. De spis o to klicove navrhnout, vrstvy aplikace, co je samotna logika hry, co primo komunikuje se systemem, rozhrani na grafickou implementaci atd. Proste moduly kde pak clovek prepise jeden kterej leze do systemu,nebo graficke rozhrani. Proto ty multi platform engines, pouzivaj napriklad primo Api ovladacu grafiky. A napisou se moduly pro HW , konzole atd.
20.7.2008 19:35:33   213.19.22.xxx 119
Plus-minus se s tim da souhlasit, napr. vykon ve 3D je pro C# a C++ temer identicky, nebot Managed DirectX neni nic jineho nez wrapper na DirectX, takze se akorat presmeruji volani vsech metod, coz je pri rychlosti dnesnich procesoru a pri relativne malem mnozstvi techto volani naprosto zanedbatelne.

Jediny problem C# vznika v okamziku, kdy je aplikace velice narocna na pamet. Coz jsou typicky dnesni AAA tituly, ktere bezne sezerou 2GB RAM. V takovem pripade vetsinou generacni GC v .NETu docela dostava zabrat. Proto se C# dnes typicky pouziva na "mensi" hry, ktere jeste nejsou tak moc pametove narocne, ale limitujici to rozhodne neni, protoze nejakych 512MB RAM je porad dost na spoustu pekneho obsahu.

V C# se da samozrejme pouzit i vice pameti, ale pak to chce hodne dobrou alokacni strategii (ktera je teda potreba i v C++, ale tam jde zas o trochu neco jineho), aby GC neovlivnoval frame rate.

Jinak samozrejme plati, ze napr. kombinace C# a C++ (prip. ASM) je vynikajici, prip. je C# vhodne rovnou pouzit jako scriptovaci jazyk.

2 HONZA: Celkove pro zacatek programovani her doporucuju spise C++, pokud se vynechaji sablony nebo aspon jejich slozitejsi aplikace, pak se jedna v podstate o primitivni jazyk. Zaroven se z nej clovek snadno preorientuje na C# nebo Javu. Pro zacatek je samozrejme i C# dobry, v nekterych ohledech je ale C# 2.0 (resp. 3.0) uz docela slozity, resp. zavadi prilis mnoho konstrukci, ktere jsou sice velmi vyhodne pro praci, ale zacatecnika mohou zmast. Nicmene vyhodou je zase dostupnost vynikajiciho free vyvojoveho prostredi v podobe Visual C# Express. S takovym nastrojem je pak programovani opravdu zabava
20.7.2008 21:18:39   84.242.78.xxx 108
tak urcite de o to jak si clovek navrhne ty data.Tzn vim co budu a v jakym meritku potrebovat tak si vytvorit buffery pri startu nainicializuju a pak uz pouzivam pro ukladani hodnot. Ale pokud pri praci s daty ktery jsou virtualni a probiha tam vice inicializace a destrukce (jaka koli pro hru naprogramovana chache), tak napriklad je to dobry to nechat bezet v jinym threadu a nenechat GC delat si to jak chce ,ale praci GC alespon castecne ridit tak jak potrebuji. Napriklad veci destruhovat prubezne a nenechat to jen na jednou za cas. Tak se da to tak nejak optimalizovat.
21.7.2008 16:17:02   194.213.42.xxx 117
No prostě pořádné věci(které, pokud nejsi úplně geniální nikdy neuděláš sám) se dělají v C++. Pak je tu Pascal, který je jednoduší(viz Delphi, které jde v usnadnění až na samé hranice, kam to jen jde), ale výsledný kód je tak o 10% pomalejší než v C++, záleží na aplikaci. Je dobré používat různé komponenty třetích stran, ale zase pozor - ty jednoduché na použití bývají omezené, nebo jsou velmi málo výkoné. Hry třeba ve Flashi zvládne každý, ale zase to není 3D... Jinak 3D programování je oproti 2D extrémě složité a bez hlubšího studia to normální člověk nezvládne.

Dnešní velké hry jsou v podstatě všechny v C++, já znám jen jednu vyjímku - to bylo Original War, která byla udělána právě v Delphi. Casual se dělají ve všem možném. Tam záleží co ti sedne.
21.7.2008 19:35:40   78.102.54.xxx 118
No taky jde o to ktera cast hry se dela v cem. Engine se treba pise v C++, ale engine dela jen urcita cast hry. Zbytek jsou skripty a ty muzou byt v cemkoli.
21.7.2008 19:42:05   213.19.22.xxx 109
Skripty jsou pro hru napsanou v C++ nejlepsi asi pres Lua, obcas se pouziva i Python nebo pres Java pres JNI, ale ta Lua je dnes pro C++ nejlepsi volbou, protoze je nativne psana v C, takze je to rychle a da se nalinkovat primo do kodu.

Jinak samozrejme nektere spolecnosti pisou svoje vlastni skriptovci jazyky jako napr. QuakeC od IdSoft, ktery je vice nez povedeny.
21.7.2008 19:28:21   78.102.54.xxx 117
Co treba volat GC.Collect() po kazdem spocitanem framu? Nebo i v mezifazich... Imho GC neni problem obzvlast u multicore platforem.
21.7.2008 19:49:14   213.19.22.xxx 109
To opravdu neni dobry napad volat takto casto GC Pokud si vzpominam, tak v nejakem clanku sem cetl, ze by se GC.Collect nemelo v prubehu aplikace volat uz vubec, protoze to ovlivnuje algoritmy pro urcovani, kdy uklizet pamet. Doporucene je volat GC.Collect napr. pri zacatku aplikace (ve hre treba po zacatku levelu), kdy se provede jednorazovy uklid, ale pak uz by to mel zvladnout vlastni algoritmus v ramci .NET frameworku.

Jinak s tim GC na multicore to je prave naopak, v okamziku kdy se rozbehne GC, tak se ostatni vlakna musi blokovat (minimalne v prvni fazi, kdy se prohledavaji reference objektu ... casto ale i ve fazi preusporadavani objektu v generacich GC), takze paradoxne tomu multicore system moc nepomuze, protoze vsechna vlakna cekaji.
21.7.2008 20:15:22   78.102.54.xxx 109
GC.Collect by se volat nemelo vubec s tim souhlasim, ale time critical aplikace jsou vyjimka Vydim to asi tak ze jsou dve moznosti. Volat GC synchronne s fps, nebo si napsat vlastni GC.
Pokud jde o multicore, nemate pravdu, tedy imho. Prohledavani referenci nenarusi beh threadu, krome toho ktery provadi uklid a to je novy thread v MTA prostredi. Pri cteni poctu referenci objektu by nemelo dochazet ke kolizi, protoze jedine cislo, ktere GC zajima je 0 a kdyz je jednou 0 uz se nemuze zmenit. Neni tedy treba zamykani. Ale treba se pletu
21.7.2008 22:58:14   213.19.22.xxx 109
No s tim GC v .NET, stejne jako v Jave, je to tak, ze neni zalozeno na pocitani referenci, ale na tradicnim pristupu mark-and-sweep a tam je prave nutne vsechna vlakna pozdrzet (alespon profazi MARK), GC se pousti ve svem vlastnim vlaknu automaticky a ostatni vlakna zablokuje vzdy.

Konkretne se o tom zminuji primo na MSDN v tomto clanku o GC:

http://msdn.microsoft.com/en-us/library/s5zscb2d(VS.80).aspx

Nicmene koukal sem na popis GC v .NET 3.0 a tam uz ta zminka chybi, takze ji tam bud zapomeli napsat nebo se to zmenilo Nicmene spis myslim ze to plati i pro .NET 3.0, sice GCs nejsou oblast meho zajmu, ale nezaslechl sem nic o zadne nove lepsi strategii nez mark-and-sweep.

Jinak fungovani GC v .NET a obecne techto veci je pekne popsane v knize Pro C# 2005 And The .NET 2.0 Platform (nejlepe posledni vydani, mam treti), pripadne se da dohledat na webu spousta clanku, dobre je treba

http://www.codeproject.com/KB/dotnet/GarbageCollectionOverview.aspx
ne bo
http://msdn.microsoft.com/en-us/library/ms973837.aspx

ktery se sice tyka .NET 1.1, ale vysvetluje fungovani taky pekne.
22.7.2008 10:47:43   78.102.54.xxx 108
Tak to vypada, ze GC je schopen pracovat opravdu paralelne. Zalezi na poctu jader v PC. viz treba Lyon's blog
To znamena, ze uklizeni je dnes spise problem vykonu a mnozstvi pameti, nez ze by zpusoboval "cukani".
Strategie GC viz wikipedia
22.7.2008 11:49:37   213.19.22.xxx 118
Ano paralelne GC schopen pracovat je, ale pouze v ramci sve cinnosti, ne vzhledem k aplikaci. Konkretne v .NETu existuje ten serverovy typ GC, ktery vytvori vice virtualnich heapu v ramci jednoho heapu a ty pak spravuje pomoci jednotlivych vlaken, takze jak alokace, tak uklid probiha pekne paralelne. Nicmene stejne porad plati, ze pri uklidu se musi vlakna aplikace zastavit. Je to logicke, protoze se musi projit cely strom objektu na heapu a oznackovat je, nasledne je pak nutne je prekopirovat a nereferencovane objekty vynechat. To kopirovani znamena i zmenu adres objektu, coz vyzaduje prave pozastaveni aplikacnich vlaken.

Samozrejme ze strom objektu lze opet prochazet paralelne, kopirovat objekty take, navic se da urcite paralelizovat prace v jednotlivych generacich GC pokud se provadi plny GC. Nicmene aplikace musi na urcitou dobu zastavit a cekat.

Mozna te zmatnul ten pojem Concurrent GC, ale tam je to trochu nepresne vyjadrene. Znamena to pouze to, zda se bude na single-core stroji poustet GC ve vlaknu aplikace nebo v samostatnem vlaknu (coz je defaultni volba). Samozrejme soubezny beh je vyhodnejsi, protoze ikdyz GC pozdrzi vykonavani aplikacnich vlaken, tak ne po celou dobu behu GC je nutne zastavovat beh aplikace.

Kdyztak doporucuju nekde sehnat tu knizku jak sem zminoval nahore a tam si precist kapitolu o zivotnim cyklu objektu a praci GC, tam je to popsane celkem rozumne.
21.7.2008 08:50:52   213.29.92.xxx 118
proc ma zapomenout na 3D kdyz chce javu? Co treba Wurm Online?
20.7.2008 08:20:29   89.102.9.xxx 129
Super článek.
Třeba si teď už budeme cenit práce lidí a nebudeme hry jen stahovat . . . .
20.7.2008 09:17:43   81.201.54.xxx 158
Jj taky si myslím, že podobný články o tom, jak složitý a finančně náročný je hru udělat, že lidé co to dělají to nemají lehký ani se svým zaměstnavatelem... jsou přínosnější pro "nepirátění" než neustálý přemlouvání a přesvědčování Jana Stacha (DDW).
20.7.2008 22:08:57   213.19.22.xxx 108
No jak rikam, chce to poradnou alokacni strategii, ktera je ale v ramci prostredi s GC docela problematicka. Precijen GC nelze jakkoliv deaktivovat, takze v pripade tech velkych dat je to problem. Ono ve hrach s rozsahlym hernim svetem, kde dochazi k postupnemu nacitani obsahu za behu je to vazne s tou pameti problem.

V C++ kodu hry se typicky pouziva vlastni alokator pro pamet (bud rucne napsany nebo je spousta dobrych jiz vytvorenych), ktery naalokuje na zacatku pamet jako ohromny blok a z toho se pak ukusuje, nejlepe se jeste takovy vlastni alokator optimalizuje pro ruzne velikost datovych bloku apod. Pro specialni datove typy jako retezce se pak vyuziva jeste specializovany alokator. Obecne je prace s pameti jedna ze zakladnich veci, ktere mohou urcit jak moc vykonna aplikace nakonec bude. V C# je jedna z moznosti pouzivat intenzivne unsafe mod a normalne si hrat s pointery, ale to uz zas trochu komplikuje situaci.
20.7.2008 22:11:58   213.19.22.xxx 117
Sakra, toto mi trochu uskocilo

Melo to patrit k prispevku:

RE: PORAĎTE PROSÍM! Napsal: samboush Datum: 2008-07-20 22:18:39
20.7.2008 19:47:15   85.70.80.xxx 1210
Dalsi duvod proc kupovat original, aspon obcas
Jinak super clanek
20.7.2008 20:21:41   89.103.149.xxx 109
Nádhera,od malička si razím cestu že budu dělat hry.Od 4 hraju,každé dva roky kupuju nový stroj,píšu scénaře a design documenty. Zatim mám úspěch,dostal jsem se na školu ktera mě naučí vtomhle chodit (C++),takže se těším na svoji budoucnost.

Je to obtížné se prosadit,ale podle mě hra neni vubec o technologiii ani o grafice,ale o stylu.Gdo hrál GTA Vice City,carmageddon,prehistorika,resident evil,bioshock ví o čem mluvím...tyhle hry byli založeny na stylu a proto měly uspěch.

myslím si že pokud vývojář vsadí vše na souhru a atmosféru vloží do toho kousek sebe a místo nějakých hi-tech features použije funkce ktere vytvoří osobitý styl tak ta hra bude o5 tím o čem hry bývali.A přesně takovým smrem chci jít já.

Akorát se chci zeptat...přesně sem nepochopil výše uvedenou tezi že to chce setsakramensky dobrou znalost matiky a fyziky mužete mi to někdo objasnit? díky
20.7.2008 21:21:01   81.201.54.xxx 98
To bylo asi myšleno na naprogramování umělý inteligence. Jinak taky nevím, naco je potřeba vinikající znalost M a F. Pokud se tedy nebavíme o PhysX orgiích :-D
20.7.2008 21:21:39   81.201.54.xxx 99
Ale fakt tomu vůbec nerozumím, takže to je jen můj typ... Rád si přečtu vysvětlení, naco je dobrá matika..
20.7.2008 23:13:38   80.250.11.xxx 109
A jak bys chtěl naprogramovat kolizní model objektů, nevědět nic o kinetické energii?
20.7.2008 23:38:25   213.220.250.xxx 1010
google nebo wikipedia pomůže kdykoliv, o fyzice toho moc nevim ale i tak, když jsem si hrál s tvorbou her, co jsem potřeboval jsem si našel. naprogramoval jsem model dieselového motoru, zjišťoval jsem převodové poměry, diferenciál, nakonec ztráty rychlosti vlivem tření, vše se dalo jednoduše vypočítat, výhoda pc je že to člověk nemusí umět spočítat, stačí znát platný vzorečky, dohledat všechny "konstanty", popř. si to přikrášlit "bulharskou konstantou", kupříkladu vědět že výkon a dieselu je určitá rovnice, resp. polynom třetího řádu . . Prostorová orientace a představivost jsou ovšem nepostradatelné. bohužel jsem ztroskotal u výpočtů souvisejících s odpružením . . . mimochodem: snažil jsem se simulovat autobus :-) Takže, znaslost matiky a fyziky, budiž, ale až tak vynikat ve fyzice není potřeba.
20.7.2008 21:37:49   84.242.78.xxx 118
tak 3D grafika je o Matematice. A simulace realnyho chovani veci je o Fyzice vs Matematice. Tzn je jedna vec neco namastit v nejakym jazyku a druha vec je chapat to co chci delat. Tak urcite de plno veci ocurat a napriklad to udelat tak, ze se to chova jako by to bylo realny. Ale od urcity urovne komplexnosti je proste efektivnejsi , ty fyzikalni veci naprogramovat matematicky OK a pak je jen pouzivat.
21.7.2008 05:43:33   85.13.72.xxx 128
Pravda,pravda. Je tedy fakt, že programování a programování her mi zůstane navždy odepřeno. Na matice sem totiž zkončil VŠ :-)
21.7.2008 08:49:07   89.103.149.xxx 118
No taky v matice zrovna nevynikám sem trochu pomalejší a mám delší vedení,ale nakonec se ke všemu stejně nějak dopídím takže doufám že to zvládnu.Jinak díky za objasnění.Ztoho prohlášení,že je potřeba perfektní znalost M a F sem měl pocit,že budu muset mít IQ jako charlie ze seriálu Numb3rs
24.7.2008 12:49:05   90.176.144.xxx 116
Tak konkretne pri PROGRAMOVANI her se s vysoce nadprumernou inteligenci tak nejak pocita. ;)
21.7.2008 10:24:49   195.22.54.xxx 1310
Zajimave. Jednak clanek jako takovy, a jednak reakce lidi.

Clanek je napsany opravdu slusne a i kdyz s nekterymi nazory a zavery nesouhlasim, rozhodne poskytuje spoustu materialu pro uvahy pousti se odvazne nekam, kam se mnoho novinaru zatim neodvazilo.

Zajimave jsou i reakce lidi. Je to sice asi zamerenim serveru, ale resi se tady hlavne programovani (v cem, jak, atd...). Ovsem programovani je opravdu jen mala cast herniho vyvoje. Tezko si dovedu predstavit, ze by v soucasne dobe dokazal dobrou hru udelat jeden clovek. Pro uspesny vyvoj hry totiz musite zvladnout ctyri zakladni dovednosti - napad/design, grafika/estetika, programovani a management/obchod (a to jsem jeste zanedbal takove "drobnosti" jako animace a ozvuceni). A to si prave malo lidi uvedomuje. Tatam je doba, kdy mel sikovny programator napad na tetris, naprogramoval ho a vypustil do sveta. S tim si proste v soucasne dobe nevystacite. Dnes funguji herni studia na zaklade pomerne uzke specializace. Uz jen programatori jsou rozskatulkovani do spousty kategorii. Nekdo programuje render, shadery, dalsi fyzyku nebo AI. Nekteri vytvareji jadro hry, jini vyrabeji nastroje na spolupraci s nastroji grafiku, a dalsi naprosto nezbytne nastroje/editory pro scriptery, grafiky, animatory, ...

Mnohem jednodussi cesta jak se dostat k vyvoji her, je najit si misto v jednom z mnoha ceskych studiich. Ja vim, muze vam to prijit tak, ze ztratite nezavislost, ze vam nekdo bude rikat co a jak mate delat. Ano, castecne mate pravdu, ale podivejte se na to z druhe strany: Dostanete sanci spolupracovat s lidmi, kteri jiz nejakou hru udelali, budou s vami sdilet sve zkusenosti a nenechaji vas jit slepymi cestami, ktere uz byly davno odhaleny. A vyvoj her je tvoriva prace - pokud budou vasi kolegove chytri, poslechnou si vase napady a peclive je zvazi, budete mit sanci tvorit.

A dalsi vase vyhoda je v tom, ze v Cechach stale jeste neni dost hernich vyvojaru, studia stale hledaji dalsi kolegy. Protoze ceska herni skola, diky projektum treba Bohemky nebo Illusionu, ma ve svete dobry zvuk a vydavatele jsou stale ochotni investovat do projektu vyvijenych v Cechach.

No, a pokud zjistite, ze to neni nic pro vas, stale muzete odejit a zkusit to na vlastni pest.
21.7.2008 23:08:32   84.16.36.xxx 1110
Tak ako bolo spomenute.Dnes hry niesu iba o programovani.Prakticky kazdy engine pouziva kopec middlewaru, FMOD kde sa podivam, speedtree a mnohe dalsie.Prakticky uz spolocnosti ani engine neprogramuju od zakladu ale kupia nieco hotove, do toho dokupia jednotlive casti ktore riesia specificky problem a potom sa to odladuje.Skoro by sa dalo povedat ze co sa tyka programovania tak hry uz postupili na uroven aplikacii/web aplikacii.Kupi/pouzje sa framework ktory sa potom upravuje na dane poziadavky.Ale to tu uz bolo spomenute.

Skor som chcel poznamenat ze momentalne su rovnako ak nie viac dolezity grafici,animatory,designary.Dnesne hry su nenazrane na assety a do buducna to bude asi len horsie.Vyssie rozlisenia,vyssie detaily si vyzaduju vecsie kvantum dat.Hi res textury,modely, rozanimovane vsemozne fazy atd.Naprogramovat by sa mozno este dala aj hra v malom teame ale uz graficky sa dostat na slusnu uroven je bez armady profesionalnych grafikou prakticky nemozne.

Z hier sa stal velky obchod so vsetkymi kladmi aj zapormi.
21.7.2008 20:02:16   78.102.54.xxx 107
A to jste zcela opomenul team management! Takovy houf lidi bude ridi kdo? Ted si vemte ze mate team 20 specialistu, ridit to neni prace pro jednoho cloveka.
22.7.2008 10:19:09   89.103.149.xxx 108
jj to je pravda je potřeba aby to někdo koordinoval...je zajimave jakym směrem se to ubírá zajímalo by mě jestli začínající vývojáří kteří se ze začátku pouští do indie a casual her mají u nás ještě v dnešní době šanci :-)
22.7.2008 16:51:42   195.22.54.xxx 119
No, otazka je, co je meritko uspechu. Jiste se da i v malem teamu nebo jednom cloveku udelat slusna hra, kterou si lide radi zahraji. Druha otazka je, jestli jsou za ni ochotni zaplatit.
V soucasne dobe se jevi pro mensi teamy jako zajimava platforma mobily, protoze tam preci jen neni kladeny takovy duraz na rozsahlou grafiku atd. Stejne tak muze byt zajimave vyvijet pro Xbox Live! Arcade. To je navic i zajimava skola, protoze Microsoft si vsechny projekty schvaluje a kontroluje, tzn. rekne vam co je spatne.

Ale at tak, ci onak, vydelat na tom "velky prachy" je priblizne stejna sance, jako vyhrat jackpot ve sportce.
23.7.2008 20:20:54   89.103.149.xxx 107
Taky zajimavou školou je projekt Build The Game od Microsoftu,dá se tam hodně naučit....jinak si myslím že na maličkých hrách se dá něco málo vidělat nic velkeho to neni ale dá se..
24.7.2008 13:17:26   82.113.48.xxx 115
hezký článek, kdy bude pokračování? :-)
24.7.2008 18:53:20   89.103.149.xxx 104
Ještě dotaz co přesně znamená to slovo Optimalizace vtéhle problematice to jako že si vývojáří nastahujou plno různých toolsů a ty potom musí nějak sladit dohromady tak že se vnich budou hrabat a budou je upravovat tak jak se jim hodí? přesně to nechápu...
25.7.2008 10:29:14   78.102.54.xxx 97
Optimalizace to je kdyz nahradiz algoritmus ktery dela urcitou cinnost jinym algoritmem, ktery dela to same ale jinak a rychleji. A na optimalizaci se zpravidla kasle ze dvou duvodu:
1. napsat optimalizovany algoritmus trva zpravidla dele
2. optimalizovany algoritmus je obvykle "hure citelny", takze kdyz je potreba nejaka uprava, tak se v tom uz nikdo nevyzna.
26.7.2008 09:51:15   89.103.149.xxx 96
aha diky myslel sem že optimalizace se použiva hojně ale podle toho co si napsal se nepouživa skoro vubec co?
27.7.2008 13:58:53   81.201.54.xxx 115
Jak kde :-) V Cryteku jim je tenhle termín naprosto cizí :-D

Redakce si vyhrazuje právo odstranit neslušné a nevhodné příspěvky. Případné vyhrady na diskuze(zavináč)pctuning.cz

413 čtenářů navrhlo autorovi prémii: 200.9Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.