Ako robíme World of Warships: Automatizácia exportu a overovanie obsahu. BigWorld Engine - Herné enginy - Súbory pre vývojárov hier - Tvorba hier Veľký svetový herný engine

V tomto príspevku pokračujeme v kladení otázok vývojárom hier. Tentoraz rozhovor poskytuje Michail Zhivets, technický riaditeľ projektu "", spoločnosti Wargaming.net.

"SVET NVIDIA": Aký grafický engine používate vo svojom projekte? Aké sú minimálne a odporúčané Požiadavky na systém? Sú spôsobené určitými vlastnosťami alebo sa riadite určitou úrovňou rozšírenosti 3D máp? Využívate dostupnosť najnovšej generácie grafických kariet alebo mierite na štandard?

Projekt World of Tanks využíva grafický engine BigWorld s vlastnými úpravami, ktoré bolo potrebné vykonať vzhľadom na špecifiká projektu. Charakteristickým rysom enginu je jeho zameranie na otvorené svety s dynamicky načítanými časťami mapy, ako je to napríklad vo World of Warcraft. Snažíme sa využívať technológie, ktoré nám umožňujú vytvoriť obraz na obrazovke monitora v blízkosti náčrtov našich umelcov a prispôsobiť ich systémovým požiadavkám.

"SVET NVIDIA": Sú grafické karty od NVIDIA a ATI výrazne odlišné z hľadiska programovania? Je možné jednoducho písať cez DirectX alebo OpenGL a získať efektívny kód pre oboch dodávateľov, alebo potrebujete vytvoriť rôzne verzie funkcií pre každého dodávateľa? Aký prístup ste použili?

M. Zh.: Grafické karty od rôznych výrobcov majú svoje vlastné špecifické vlastnosti... Môže to byť podpora špeciálnych formátov textúr alebo prístup k textúram z vertex shadera. Zároveň pri použití bežnej funkcionality, ktorú poskytuje rozhranie DirectX alebo OpenGL API, sú rozdiely medzi GPU týchto dvoch výrobcov minimálne a v dôsledku rozdielu medzi grafickými kartami od ATI a NVIDIA existuje viac príležitostí. než akékoľvek obmedzenia. Pokiaľ ide o „špeciálne zaobchádzanie“ s motorom, BigWorld neposkytuje rozhodujúcu výhodu ani jednému z predajcov.

"SVET NVIDIA": Aké sú rozdiely v rýchlosti hier na kartách NVIDIA a ATI? Je to vlastnosť algoritmov herného enginu alebo viac závislá od herných scén? To znamená, že napríklad v jednej hre sú vyššie polygonálne scény a v inej je veľká prekreslenosť alebo veľa priesvitných textúr so zložitým anti-aliasingom, a preto si grafické karty s vyšším fillrate lepšie poradia? (Miloval váš program nejakú architektúru?).

M. Zh.: Rozdiely spočívajú najmä v hardvérových vlastnostiach (rozdiely v šírke pamäťových zberníc, počte jednotiek ROP, shader jednotiek atď.), ako aj v implementácii ovládačov. Čím vyváženejšie je zaťaženie CPU a GPU a čím lepšie je organizovaná scéna, tým menej by funkcie grafickej karty mali ovplyvniť celkový výkon. To zahŕňa štíhly prístup k množstvu a rozlíšeniu textúr, nízke prekresľovanie z častíc a priehľadných objektov, používanie LOD, zoskupovanie objektov do dávok atď. - to všetko v rovnakej miere padá na plecia vývojárov motora. a herných dizajnérov.

"SVET NVIDIA": Pri testovaní grafických kariet sa spravidla používajú približne rovnaké sady hier. Nakoľko vhodné je toto zovšeobecnenie pri zobrazovaní výsledkov testov pre také rôzne žánre, ako sú 3D strieľačky, RPG pre tretie osoby a stratégie. Vyjadrujú populárne benchmarky výkon vašej hry?

M. Zh.: Nedelil by som aplikácie podľa žánru. Všetko je výlučne v rukách vývojárov algoritmov, ktoré používajú. V každom prípade sa vývojári snažia zaťažiť systém používateľa čo najvyváženejšie a dosiahnuť zároveň maximálnu atraktivitu produktu.

Pri pohľade na čísla FPS v hrách ako Crysis alebo najnovšie Need for Speed ​​si viete zhruba predstaviť výkon v množstve iných moderných hier, takže tu môžeme s istotou povedať, že tieto testy sú dosť orientačné. Hry tejto úrovne môžu byť použité ako benchmarky pre grafické karty, pretože pri nastavení vysokej kvality zaťažujú grafický subsystém na maximum.

"SVET NVIDIA": Aký je dôvod zvýšenia zaťaženia CPU so zvyšujúcim sa rozlíšením? Je pravda, že zvýšenie detailov modelov, aby sa minimalizovala ich „uhlovosť“, vyžaduje väčší výkon procesora na animáciu, orezávanie neviditeľných primitív, vytváranie tieňových zväzkov atď.? Bol tento efekt vo vašej hre?

M. Zh.: Zvýšenie rozlíšenia by nemalo priamo ovplyvniť zaťaženie CPU, pokiaľ, samozrejme, engine nezabezpečuje automatické zvýšenie polygonality modelov, dodatočnú teseláciu a väčší počet animačných snímok pre modely. Ak so zvyšovaním rozlíšenia bezdôvodne narastá zaťaženie procesora, problém spočíva buď v kóde hry alebo v ovládači grafickej karty.

"SVET NVIDIA": Môže sa zaťaženie procesora zvýšiť, keď je povolené anizotropné filtrovanie? To isté platí pre Full Scene Antialiasing. Ak to vyžaduje, aby bola celá scéna nakreslená v dvojnásobnom rozlíšení, potom sa teoreticky môže zvýšiť aj počet trojuholníkov.

M. Zh.: Odpoveď na obe otázky je nie. Ak je povolené anizotropné filtrovanie, zvýši sa zaťaženie textúrových jednotiek. Keď je povolený FSAA, pipeline pixelov dostane viac práce. Čo sa týka vyššieho rozlíšenia, zdvojnásobením počtu pixelov sa zvýši počet operácií v pixel shaderi, ROP jednotkách a TMU.

"SVET NVIDIA": Proces prenosu výpočtov do GPU shaderov prebieha už veľmi dlho, najskôr to bol T&L, clipping. Uvažuje sa v dnešnej dobe animácia modelov na GPU? Čo v prvom rade zostáva z hľadiska 3D enginu pre výpočty na CPU? (S čím si rátal s GPU okrem T&L?).

M. Zh.: Motor použitý v našom projekte nevykonáva žiadne výpočty na GPU. Teoreticky, ak by sme museli povedzme vypočítať fyziku mnohých objektov v reálnom čase, mohli by sme vziať rovnaký PhysX, ktorý perfektne vykonáva výpočty na GPU NVIDIA, ale vzhľadom na špecifiká projektu máme dostatok možností CPU.

"SVET NVIDIA": V posledných rokoch sa video akcelerátory stali „inteligentnými“, samy používajú metódy odrezania neviditeľných primitív, ako napríklad: hierarchický z-buffer. Ako efektívne sú? Je možné teraz len strčiť všetky trojuholníky do urýchľovača videa, aby všetko vykreslil sám? V časoch prvých 3D hier (série Quake a Unreal) sa používali sofistikované metódy na redukciu renderovaných trojuholníkov, BSP stromov atď. Nakoľko je to aktuálne?

M. Zh.: Samozrejme, nemali by ste sa spoliehať na to, že urýchľovač videa nezávisle určí, ktoré objekty sa majú nakresliť a ktoré nebudú viditeľné. Musíme použiť techniku ​​skorého orezania nepotrebného, ​​pretože prenos nadbytočných informácií do GPU vedie k poklesu výkonu. Problém je teda stále aktuálny, aj keď v oveľa menšej miere. Najmä v prípadoch, keď musíte kresliť veľké číslo rôzne predmety. Faktom je, že moderné karty sú zaneprázdnené nielen odrezávaním nepotrebných, ale boli zaťažené aj výpočtami zložitejších typov osvetlenia atď. Preto, ak existuje príležitosť a zdroje na pomoc grafickej karte, malo by sa to urobiť.

Napríklad v engine BigWorld sa knižnica Umbra používa na odrezanie neviditeľných objektov pred fázou kreslenia. Scéna je strom BSP, ktorý vám tiež umožňuje rýchlo a efektívne zahodiť fragmenty scény, ktoré sú zjavne mimo rozsah.

"SVET NVIDIA": Kedysi bola taká situácia, približne v čase krízy P4, že úzkym hrdlom systému bol procesor, ktorý nedokázal „nahrať“ akcelerátor videa a pre zvýšenie FPS v hrách v prvom rade tzv. bol potrebný špičkový model CPU. Existuje teraz podobný vzťah medzi CPU a GPU, alebo procesory prekročili určitú kritickú úroveň výkonu a môžeme si vziať lacný procesor a výkonnú grafickú kartu? Ide o hry s dôrazom na grafiku v štýle ako Quake a Doom.

M. Zh.: Slabý procesor s výkonnou grafickou kartou je prekážkou systému, pretože veľa operácií, a to na nízkej úrovni (tvorba toku ovládacích príkazov vodičom), ako aj na vysokej úrovni (aplikovaná logika - herná slučka, aktualizácia častíc, charakter animácia, fyzika, zvuk atď.) priamo závisia od výkonu CPU. Dôležitú úlohu zohráva vyrovnávacia pamäť procesora, ktorá je pri lacných modeloch dosť malá.

Pre čo najefektívnejšiu prevádzku grafickej karty sú potrebné aj systémové prostriedky, vysokorýchlostná systémová zbernica a dostatočné množstvo pamäte RAM s dobrým výkonom. Video subsystém často nie je schopný ukázať, čoho je schopný, jednoducho preto, že CPU nemá čas na prenos potrebných údajov. Takže, pokiaľ ide o šetrenie zdrojov, stačí si kúpiť priemerný procesor, základnú dosku mierne nadpriemernú, ale nešetriť na grafickej karte a RAM.

"SVET NVIDIA": DirectX od verzie k verzii sa čoraz viac podobá grafickému enginu. Je pravda, že v dnešnej dobe sa 3D program skladá prakticky z volaní Direct3D API a väčšina výpočtov sa vykonáva práve v ňom? Ako hodnotíte Najnovšia verzia DirectX? Stal sa z neho takmer plnohodnotný motor a koľko verzií ešte zaberie?

M. Zh.: Direct3D nemožno vnímať ako samostatný grafický engine a je nepravdepodobné, že v dohľadnej dobe Microsoft urobí taký krok ako vytvorenie vlastného herného enginu. To je nepraktické z viacerých dôvodov, vrátane mnohých rozdielov v požiadavkách na engine pre rôzne herné projekty. Má napríklad auto simulátor, real-time stratégiu a 3D strieľačku charakteristické rysy ktoré neumožňujú použiť rovnaký motor rovnako efektívne vo všetkých troch prípadoch.

V desiatej verzii Direct3D sa objavili nové úrovne abstrakcie pri práci so zdrojmi a ďalšie možnosti vývoja shaderov, sprístupnili sa triky ako Stream Output. D3D zároveň zostáva tým, čím bolo - nízkoúrovňové API, pomocou ktorého môže vývojár navrhnúť herný engine pre konkrétnu úlohu.

"SVET NVIDIA": vo všeobecnosti V poslednej dobe dochádza k „globalizácii“ herných a 3D enginov. Existuje niekoľko populárnejších platforiem, na ktorých sa vyrába veľa hier. Je to objektívny proces? Má zmysel pre vývojárov písať si vlastný engine teraz, keď si môžete licencovať hotový plnohodnotný? Nedávno vyšla napríklad ďalšia verzia Unreal Engine, ktorá bola stiahnutá už desaťtisíckrát. Ako dlho bude trvať, kým všetky hry budú používať jeden alebo dva 3D motory?

M. Zh.: Používame BigWorld a zatiaľ sme s ním spokojní. S ohľadom na „globalizáciu“ sa zázrak zrejme nestane a CryTek, Epic a množstvo ďalších sa rozhodne dať si kúsok z trhu herných enginov. Nezabudnite, že hry vytvorené na rovnakom engine sú spravidla veľmi podobné, čo nie je vždy dobré. S najväčšou pravdepodobnosťou bude počet motorov len rásť, s odchodom k čoraz užšej špecializácii. V každom prípade vždy budú existovať jedinečné motory.

"SVET NVIDIA": Je pravda, že najnovšie grafické karty sa stali veľmi výkonnými, pokiaľ ide o surový výkon a nelíšia sa od predchádzajúcich modelov z hľadiska efektov, môžu odhaliť svoj potenciál predovšetkým na systémoch s veľkými monitormi (od 1920 x 1200) v režimoch s antialiasing a úplné anizotropné filtrovanie? Má zmysel, aby si človek s monitorom napríklad 1280x1024, ktorý nie je fanúšikom filtrovania a AA, kupoval novú grafickú kartu ako GTX285 a Radeon na novom technickom procese?

M. Zh.: súhlasím, že áno. Nezabudnite však na slušné monitory s dostatočnou kvalitou reprodukcie farieb, vysokým rozlíšením, kontrastom. Z hry budete mať oveľa väčšiu radosť. Ale aj keď sa rozhodnete nezmeniť svoj obľúbený monitor, oplatí sa vymeniť kartu, pretože to určite povedie k zvýšeniu výkonu vášho systému, pretože niektoré zo starých výpočtových algoritmov na nových kartách sú už implementované v hardvéri. .

"SVET NVIDIA": Predtým boli vývojári hier pri používaní možností a efektov najnovších grafických kariet konzervatívni, pretože sa zamerali na momentálne najbežnejšie karty. To znamená, že napríklad vyjde podmienené DirectX n, ale hry sú stále písané pre DirectX n-2. Zmenila sa situácia v poslednej dobe? Je v hre jednoduché využiť nové možnosti efektov pre nedávno vydané video akcelerátory?

M. Zh.: Ak by bol Windows 7 vydaný o pár rokov skôr, alebo ak by Microsoft opustil myšlienku prepojenia DirectX 10 s Windows Vista, vývojári hier by už dávno prešli na aspoň verziu 10 API. Teraz však máme to, čo máme: všetky hity v posledných rokoch používajte DX9 a podpora DX10 je často marketingový trik.

"SVET NVIDIA": Ako intenzívne hry zvyčajne využívajú silu najnovších video akcelerátorov v čase vydania? Používajú sa teraz napríklad všetky funkcie architektúry GT200? Je to typická situácia, keď v čase vydania nový GPU jednoducho funguje o niečo lepšie na existujúcich hrách, ale postupom času, ako sú hry optimalizované pre novú architektúru a aplikované nové funkcie, zdá sa, že jeho hodnota rastie? Do akej miery vaša hra využíva nové funkcie?

M. Zh.: V prípade novej architektúry a jej jednotného shader modelu vyhral takmer každý. Pracovné zaťaženie vertexov a pixelových potrubí GPU sa vyrovnalo tam, kde boli veľké odchýlky v jednom alebo druhom smere. Čo sa týka nových funkcií, čím vyššie percento grafických kariet podporuje určitú funkciu, tým ochotnejšie ich vývojári hier použijú vo svojich projektoch. BigWorld, ktorý používame, sa zameriava na možnosti DirectX 9 a SM 3.0.

"SVET NVIDIA": V súčasnosti sa online hry stali veľmi populárnymi. Zanechalo to stopu v odvetví video akcelerátorov? Keďže motory takýchto hier sú zamerané na základnú sadu funkcií, ktoré má veľké množstvo používateľov, a sadzby FPS sú stále obmedzené internetovým pripojením, zdá sa zbytočné kupovať špičkový video akcelerátor pre online hry. Nie je to brzda rozvoja hernej grafiky? Zvýšená popularita prehliadačových hier v "plnom 2D", na ktoré nie je potrebný akcelerátor.

M. Zh.: Ak sa pozriete na počet predplatiteľov World of Warcraft a porovnáte ho povedzme s Aion alebo Age of Conan, odpoveď je zrejmá: pre online hry, hrateľnosť, spracovanie herný svet, vzrušujúca zložka PvP a ďalšie momenty, ktoré priamo nesúvisia s rozvrhom. To nie je brzda vo vývoji grafiky, pretože hráči nežijú v jednom MMORPG. Nové strieľačky, automobilové simulátory a RPG budú nevyhnutne naďalej zvyšovať latku pre 3D hry. MMO hry sa pomaly, ale isto uberajú rovnakým smerom a majú za cieľ prilákať väčšie herné publikum. Mimochodom, o tom istom Blizzarde sa teraz hovorí, že pracuje na novom MMOG a je nepravdepodobné, že by vo svojom novom projekte použili 8-ročný engine.

"SVET NVIDIA": Do akej miery vyžadujú technológie SLI a Crossfire podporu od vývojára hier? Aký je dôvod rozdielnej účinnosti týchto technológií pre rôzne hry? S funkciami herného enginu alebo s hernými scénami? Aký úžitok má vaša hra z používania SLI a Crossfire?

M. Zh.: Optimalizácia motora pre dve grafické karty je veľmi náročný proces. Je potrebné starostlivo zorganizovať kompaktný prenos dát do GPU a vyvážiť motor z hľadiska zaťaženia medzi GPU a CPU. Ak sa aplikácia pri práci na jednej karte už opiera o CPU alebo prenos dát po zbernici, na SLI či Crossfire budete musieť zabudnúť. Toto je v skutočnosti rozdiel medzi určitými hrami pri práci na spárovaných akcelerátoroch. Naša hra stále zvyšuje výkon o približne 10% na SLI, ale teraz optimalizujeme množstvo modulov, aby sme zlepšili výkon v takýchto režimoch.

"SVET NVIDIA": Už dlhšiu dobu sa veľa hovorí o kríze na PC trhu a postupnom prechode hier na konzoly. To sa však zatiaľ nestalo. Môžeme to očakávať v budúcnosti? Je pravda, že kvôli štandardnému hardvéru je programovanie grafiky pre konzoly oveľa jednoduchšie? Alebo večné zaostávanie set-top boxov z hľadiska „hardvéru“ vyrovnáva uniformitu?

M. Zh.: Herné konzoly majú pre vývojárov množstvo výhod (jedna platforma, jeden súbor schopností a v dôsledku toho rovnaký výkon pre všetkých hráčov), ale trh s PC hrami a najmä online hrami neustále rastie, takže nemôžeme očakávať masívny prechod na konzoly.náklady. Nezabúdajte, že vydávanie herných konzol s výkonnejším hardvérom obmedzujú samotní výrobcovia konzol, ktorí sa snažia náklady na výrobu konzol predchádzajúcej generácie uhradiť predajom aktuálnych hier. Pred vydaním Playstation 4 či Xboxu 720 preto potrvá ešte dlho a projektov zameraných na súčasnú generáciu konzol bude veľa. V niektorých prípadoch, ako je napríklad Nintendo Wii, je na dosiahnutie vynikajúceho výsledku pokročilý hardvér úplne zbytočný.

"SVET NVIDIA": Je pravda, že sa teraz v hrách kombinuje projekčná metóda na konštrukciu tieňov z modelov a metóda objemov tieňov s dynamicky alebo staticky vypočítanými objemami pre tiene na pohybujúcich sa objektoch, modeloch a zbraniach a z pohyblivých častí modelov na sebe?

M. Zh.: Namiesto objemov tieňov sa často používa rovnaká projekčná technika s úpravami (kaskádové tieňové mapy, samostatná tieňová mapa pre vlastné tieňovanie atď.). Objemy tieňov poskytujú jasné ohraničenie tieňov, ale trpia vysokou rýchlosťou plnenia, dodatočnými výpočtami CPU a zložitou implementáciou okrajov mäkkých tieňov.

"SVET NVIDIA": Majú existujúce metódy tieňovania perspektívu z hľadiska konštrukcie dynamického osvetlenia celej scény? To znamená, že s postupným zvyšovaním výkonu video akcelerátorov môžu byť použité na výpočet všetkého osvetlenia v dynamike? Alebo bude potrebné aplikovať nejaké nové metódy?

M. Zh.: Projektívne tiene prešli v moderných hrách dlhú cestu a niektoré ich modifikácie sa budú používať ešte dlho v kombinácii s dodatočnými efektmi ako SSAO. Samozrejme, ak existuje bezplatné sledovanie lúčov GPU, potom ani projektívne, ani objemové tiene nemajú žiadnu šancu.

"SVET NVIDIA": Ako hodnotíte technológiu Precomputed Radiance Transfer z pohľadu aplikácie v hrách? Chystáte sa ho použiť aj v budúcnosti?

M. Zh.: PRT vyžaduje časovo náročné výpočty, nedá sa kombinovať s animovanými modelmi a v zásade neposkytuje veľké výhody z vizuálneho hľadiska v porovnaní s rovnakou Ambient Occlusion. Ako príklad si môžete vziať Halo 3, ktorý používa PRT, ale nevyniká kvalitou osvetlenia v porovnaní s rovnakými Gears of War alebo Crysis.

"SVET NVIDIA": Architektúra DirectX 11 a Fermi, oplatí sa čakať na akcelerátory a hry DirectX 11 alebo je to priechodná verzia API? Môže byť mladší model akcelerátora Direct X 11, poddajný v absolútnom výkone, miere plnenia, lepší ako starý, ale výkonnejší model s podporou DirectX 10? Môžeme s vydaním architektúry Fermi očakávať nejaký kvalitatívny skok v hernej grafike, alebo to bude rozsiahly rast, viac trojuholníkov, väčšia rýchlosť pri vysokých rozlíšeniach atď.? Ak by bol Fermi dostupný v čase vývoja vašej hry, v čom by bola hra iná, čo sa týka grafiky?

M. Zh.: Jedenásta verzia DirectX ponúka viac možností pre prácu na GPU, pričom oproti DX10 neprináša žiadne radikálne vylepšenia pre 3D grafiku. Čo sa týka Fermiho, najzaujímavejšou funkciou je podľa mňa plne riadená teselácia pre 3D modely.

Michail Zhivets, technický riaditeľ projektu World of Tanks, Wargaming.net

Po premiérových uzavretých predstaveniach World of Warships na gamescom a IgroMir sa oficiálne spustenie hry stále viac blíži. Uzavreté alfa testovanie je teraz v plnom prúde a my, vývojári z Lesta Studio, petrohradskej divízie Wargamingu, musíme vyriešiť ešte kopu otázok. Zároveň sa nám podarilo zanechať veľa prekážok. Nižšie je uvedený príbeh o tom, ako sme prispôsobili exportéra nášho motora potrebám Lode a vytvorili proces overovania obsahu.

Štandardná dodávka motora

Každý motor obsahuje súpravu nástrojov na export 3D modelov z 3D editorov do vlastného dátového formátu. Výnimkou nie je ani náš BigWorld, na základe ktorého je World of Tanks vytvorený. Podporuje export z 3D Max a Maya. Takmer každý herný projekt si vyžaduje prispôsobenie štandardných exportérov špecifikám projektu. V našom projekte sú modely lodí špecifické.

Prvá verzia prispôsobeného exportéra z Maya ho jednoducho „preškolila“, aby rozpoznal zložitejšiu štruktúru lodnej scény. K existujúcemu kódu C ++ bol pridaný kúsok riadiaceho kódu Python, ako aj doplnok pre Maya s používateľským rozhraním na wxWidget. Vyzeralo to asi takto:


Používateľské rozhranie prispôsobeného exportéra

Výsledný nástroj mal veľa nevýhod.

Export sa mohol uskutočniť len za účasti užívateľa, ktorý musel exportérovi „povedať“, čo scéna obsahuje. Využitie tohto nástroja na automatizáciu rôznych procesov, napríklad automatické overovanie obsahu vo fáze zostavovania distribučnej súpravy, neprichádzalo do úvahy.

Exportér požadoval od užívateľa znalosti o zďaleka nie zrejmých parametroch, pracoval pomaly, prakticky nepodporoval verifikáciu scény a tiež vyžadoval obrovské množstvo zdrojov na podporu.

Architektúra bola hlavnou výzvou pre budúce rozšírenie funkčnosti. Export bol v skutočnosti atómovou operáciou (súbor špagetových funkcií), ktorá preložila dáta z jednej štruktúry (načítaná mayská scéna) do inej štruktúry (BigWorld) priamo do fyzických súborov. Keď sú serializátory a obchodná logika implementované „v monolite“ a jednoducho neexistuje žiadny dátový model, nie je možné pridať spracovanie dát (pred/post-spracovanie), ako aj opätovné použitie (opätovné použitie kódu) serializátory a dátový model v iných nástrojoch. ktoré realizujú svoje vlastné podnikanie.-logika. Nebolo možné vybudovať zložitejšie procesy výroby obsahu.

Postupom času sa pridávanie nových funkcií do existujúceho kódu stalo takmer nemožné. Bolo rozhodnuté prepísať exportéra „od nuly“ novou architektúrou.

Ťažký každodenný život

Úroveň nášho projektu zvýšila požiadavky na kvalitu, komplexnosť a objem obsahu. Naše štúdio sa za posledných pár rokov veľmi rozrástlo. Teraz máme možnosť vyčleniť dostatočné množstvo zdrojov na úlohy súvisiace s produkciou obsahu. Prišli k nám profesionáli s veľkým zázemím v oblasti vývoja architektúry, technológií v C ++ / C #. Zároveň to bola pre vývojárov exportéra prvá skúsenosť s používaním Pythonu a Maya API. To prinieslo ďalšie riziká, ktoré bolo potrebné vziať do úvahy.

Refaktoring exportéra sme odhadli na dva-tri človekomesiace. Pri vývoji hier sa človek nezaobíde bez optimizmu.

Identifikovali sme nasledujúce riziká:

Nedostatok formálnych požiadaviek;
úroveň znalosti jazyka Python;
zložitosť Maya API;
refaktorovanie algoritmov na spracovanie primitív.

Veľa skutočného času sa strávilo zhromažďovaním požiadaviek z neformálnych zdrojov, ako sú vývojári, ktorí sa stali manažérmi, staromódni pracovníci, torzné polia a existujúci kód exportéra. Tieto nugety vedomostí boli formalizované a napísané vo forme požiadaviek, špecifikácií a UML diagramov v Confluence.

Prvé prototypy ukázali potrebu využitia konceptu menných priestorov a modulov Pythonu (__init__.py). Tiež bol vypracovaný mechanizmus, ktorý vám umožňuje „transparentne“ využívať funkcionalitu z knižníc C ++ (.pyd).

O zložitosti a zmätku Maya API sa dá napísať samostatná kniha. Akákoľvek funkčnosť si vyžadovala prototypovanie, konzultácie s 3D umelcami a vývojármi motorov (renderovanie).

Štandardný exportér mal vlastnú implementáciu veľkého množstva algoritmov, napríklad polygónovú trianguláciu, výpočet transformačných matíc vnorených uzlov atď. Zavrhli sme ich v prospech použitia Maya API, čo výrazne zlepšilo výkon exportéra.

Je najvyšší čas pridať do Murphyho zákonov pravidlo, že akýkoľvek projekt, ktorý ste vymysleli, bude určite zrealizovaný maximálne „x3“ od plánovaného času, ak ho neopustíte.

Výsledok stál za námahu, ktorú sme vynaložili. Nakoniec aj náš hlavný umelec, ktorý má na starosti export modelov, po pár mesiacoch fungovania našiel nášho exportéra „takmer dokonalého“.

Poďme sa pozrieť pod kapotu

V našom štúdiu sa aktívne používajú skripty v Pythone. Snažili sme sa naň implementovať celého exportéra. Prirodzene, Python nie je vhodný na spracovanie veľkých binárnych údajov, ako sú vertexové vyrovnávacie pamäte, indexové vyrovnávacie pamäte atď. Dátový model a serializátory takýchto kontajnerov boli implementované v C ++ ako knižnica (.pyd), ktorá prirodzene „zapadá“ do dátový model v Pythone. Celá obchodná logika bola implementovaná v Pythone.

Exportérsky rámec sa plánoval použiť nielen na úlohu „manuálneho“ exportu z Maya, ale aj na akékoľvek úlohy, kde by sa dala jeho funkčnosť opätovne použiť, napríklad na automatizáciu overovania obsahu. Pre každú súpravu nástrojov, ktorú vyvíjame, požadujeme Python API, príkazový riadok a nástroje používateľského rozhrania.

Architektúra

Rámcová architektúra exportéra je modulárna, vrstvená. Existujú fyzické a logické vrstvy, ako aj vrstva domény. Každá vrstva obsahuje samostatné moduly: dátový model, obchodnú logiku, serializátory, ako aj konvertory, ktoré dokážu previesť dátový model jednej vrstvy na dátový model inej vrstvy. Fyzické a logické vrstvy v skutočnosti implementujú analógiu architektúry ORM.

Architektúra doménovej vrstvy je navrhnutá pre pohodlné spracovanie dátového modelu s obchodnou logikou. Je úplne izolovaný a neobsahuje žiadne predpoklady o tom, ako bude serializovaný do fyzického úložiska.


Vrstvená architektúra exportéra

Proces exportu

Vrstvená architektúra zavádza určité vlastnosti procesu exportu. V skutočnosti deserializujeme dva (alebo viac) modelov z rôznych zdrojov (Maya a BigWorld Engine). Potom sa tieto modely zlúčia do jedného nového. Nový model je potom serializovaný do formátu BigWorld-Engine.


Proces exportu

Flexibilita procesu výroby obsahu

Implementovaná architektúra uľahčuje budovanie zložitých procesov produkcie obsahu. Napríklad náš primárny model lode technologicky pozostáva z troch samostatných mayských scén, z ktorých každá je súčasne vyvíjaná rôznymi oddeleniami:

Prvá scéna obsahuje vizuálny model a kolízny model.
Druhá scéna obsahuje balistický model.
Tretí obsahuje efektové porty.

Okrem toho súprava nástrojov motora (editori) pridáva (upravuje) svoje vlastné údaje do odvodeného modelu formátu motora (štvrtá scéna).

Vývozca ľahko vyrieši netriviálnu úlohu spojiť všetky štyri scény do jedného výsledného modelu lode.

Overenie obsahu

Systém overovania obsahu nám umožňuje vyhľadávať chyby obsahu ako v každej vrstve (zdroji) samostatne, tak aj vo výslednom obsahu. Počet overovateľov teraz dosahuje niekoľko desiatok. Automatické overovanie obsahu je zabudované do procesu budovania distribúcie, čo umožňuje maximálne eliminovať ľudský faktor a zaručiť integritu a technickú čistotu obsahu.


Príklad overenia modelu lode v Mayoch

Obsahové rozpočty a kačica v kúpeľni

Dôležitou súčasťou procesu overovania obsahu je kontrola rozpočtov, napríklad overenie rozpočtu na polygón. Na obrázku nižšie sú zobrazené najmä informácie o počte trojuholníkov pre vizuálny model pre každú cievu:


Maya UI Plugin

Názornou ilustráciou potreby takéhoto overovania je príbeh, ktorý mi kolegovia rozprávali o jednom z predchádzajúcich projektov. Na mape bol pozemok zastavaný nezničiteľnými domami. Akonáhle kamera obrátila svoj pohľad na túto oblasť, FPS okamžite divoko kleslo. Po preštudovaní problému sa ukázalo, že vo vnútri jedného z domov bola vaňa, v ktorej plávala malá „plastová“ kačička. To všetko by vyzeralo ako vtipná žartovka umelcov, nebyť toho, že model kačice obsahoval asi milión polygónov.

V praxi je veľmi ťažké dodržať rozpočtovú hodnotu. Mnohé modely sú objektívne výnimkou. Nastavenie hodnoty rozpočtu vo forme rozsahu tiež nerieši problém, pretože postupom času sa polygónové modely jednoducho začnú prikláňať k hornej hodnote rozsahu. V našom prípade plánujeme zmenu osobných rozpočtov tých modelov, ktoré nezodpovedajú štandardnému rozpočtu tohto typu modelu.

Spracovanie obsahu

V každej fáze exportu sa vyžaduje spracovanie (pred/po spracovaní). Napríklad pred konverziou logického dátového modelu vrstvy Maya na doménový dátový model pre kanóny protivzdušnej obrany je potrebné predbežné otočenie kostry dela o 45 stupňov v osi Y a odstránenie kostry. Naša architektúra umožnila transparentne integrovať rôzne spracovanie v ktorejkoľvek fáze exportu.




Príklad modelu pred a po predbežnom spracovaní

podpora X64

Pomerne nedávno naši umelci hromadne prešli z 32-bit Maya 2012 na 64-bit Maya 2014. Keďže exportér je takmer celý napísaný v Pythone, s podporou x64 nemáme prakticky žiadne problémy. Len knižnica (.pyd), implementovaná v C ++, si vyžadovala trochu „šamanizmu“.

Teraz je možné exportér jednoducho použiť v procesoch x32 aj x64, pretože sám definuje a načíta požadovanú zostavu knižnice C++ (.pyd).

Overenie karty

Pri vývoji architektúry exportéra sme nevedeli vopred predpovedať, v akých ďalších nástrojoch a automatizáciách bude možné ju opätovne použiť. Automatizácia overovania kariet je príkladom toho, ako si „správna“ architektúra exportéra našla cestu do iného nástroja.

Verifikácia máp vytvára a overuje graf závislostí mapy od iných objektov, ktoré sa na nej nachádzajú. Mapa využíva najmä vizuálne modely krajiny (kamene, ľadovce), budov (domy, hangáre, prístavy), vybavenia (lietadlá, člny) atď.

Zvláštnosťou overovača kariet je, že dokáže overiť nielen prítomnosť súborov týchto vizuálnych modelov, ale aj samotných modelov pomocou rámca exportéra. Tým sa eliminoval ľudský faktor, keď sa oddelenie vývoja máp (LA) muselo ujať slova oddelenia vývoja 3D modelov (3D Art), že sa používajú technicky správne modely.

Budovanie distribúcie

Rámec exportéra našiel svoje využitie v procese prípravy balíka obsahu na distribúciu. Distribúcia by nemala zahŕňať modely, ktoré:

Už sa nepoužíva;
sú stále vo vývoji;
určené pre nasledujúce verzie produktu.

Na základe základného zoznamu herných objektov (koreňových herných objektov) je potrebné zostaviť graf závislosti, podľa ktorého úplný zoznam požadovaný obsah. Nie je nič jednoduchšie, ako deserializovať model pomocou exportného rámca a „zistiť“, aké ďalšie modely sú potrebné (referencie na obsah).

výsledky

História vývoja nášho exportéra ukázala, ako sa vyvinul z jednoduchého vysoko špecializovaného nástroja na výkonný systém, ktorý rieši jeho okamžité úlohy a našiel uplatnenie aj v iných procesoch produkcie obsahu. Jeho úspešný vývoj a opätovné použitie je založené na modulárnej architektúre, ktorá umožňuje jeho jednotlivé „kocky“ použiť na stavbu ďalších systémov.

V blízkej budúcnosti bude mať exportér ďalší test súvisiaci so zmenou formátu súboru BigWorld Engine. Sme presvedčení, že základná architektúra nebude mať žiadne ťažkosti a bude schopná podporovať prácu s existujúcim aj novým formátom súborov.

  • Žánrová orientácia: 3D MMO akéhokoľvek žánru;
  • Plošina: PC, PS3, Xbox 360, iOS (iPad), Web;
  • Programovací jazyk: C++, Python;
  • Licencia: nezávislé a komerčné;
  • Otvorené zdroj: neposkytnuté alebo poskytnuté za zvýšený poplatok;
  • Multiplayer: Klientsky server;
  • výhody: silný, podpora pre všetkých najviac moderné technológie, optimalizované, podpora iOS, lacné pre takéto funkcie;
  • nedostatky: neposkytuje sa bezplatne;
  • Vývojári motorov: Spoločnosť BigWorld Tech, Inc.

    BigWorld Engine je najpokročilejší 3D engine na vytváranie MMO hier. Vyrábajú sa na ňom hry ako „World of Tanks“, „Pealm of the Titans“ od Wargaming.net a ďalšie hry od iných svetových spoločností zaoberajúcich sa vývojom hier. Na tomto engine bolo vyrobených viac ako 15 MMO hier. Je vyvinutý spoločnosťou BigWorld Technology.

    Optimalizovaný engine vám umožňuje vytvárať nenáročné hry s úžasnou grafikou. Engine umožňuje portovať hry na iOS. Je napísaný v programovacom jazyku C++, implementácia hernej logiky v ňom je vykonaná v pohodlnom skriptovacom jazyku Python. Existujú výkonné nástroje a motor klient-server. Pre zvuk je podporovaná knižnica FMOD a všetky ostatné knižnice sú pripojené prostredníctvom zásuvného systému. Pracuje s databázami XML a MySQL. Sada nástrojov obsahuje výkonný editor sveta, editor modelov a editor častíc.

    Cenovo je veľmi dostupný. Build BigWorld: Indie Edition stojí iba 299 dolárov; BigWorld: Indie Source Edition – 2 999 dolárov; BigWorld: Commercial Edition – dohodou sa individuálne.

    Tento pokročilý motor nie je o nič horší ako ostatné svetové motory svojho typu. Motor je k dispozícii v ruštine, kórejčine, americkom a japonskom jazyku. Existuje dokumentácia, môže fungovať v prehliadačoch. Vo všeobecnosti sa môžete pustiť do práce, ak máte znalosti a usilovnosť.

    Už nie je k dispozícii pre licencovanie tretích strán, as Wargaming sa rozhodol prestať distribuovať svoj engine.

    Oficiálna stránka: http://www.bigworldtech.com





    Reťazec nástrojov BigWorld Technology poskytuje kompletný systém tvorby MMOG obsahu, ktorý zvýši kvalitu a aktuálnosť vašej hry. Všetky nástroje sú navrhnuté pre kooperatívnu produkciu herných aktív v prostredí veľkého tímu, čo zaisťuje efektívne využívanie zdrojov a plynulý priebeh obsahu.

  • Máte problém nájsť konkrétne video? Potom vám táto stránka pomôže nájsť video, ktoré tak veľmi potrebujete. Ľahko spracujeme vaše požiadavky a poskytneme vám všetky výsledky. Bez ohľadu na to, čo vás zaujíma a čo hľadáte, ľahko nájdeme potrebné video, bez ohľadu na to, akým smerom ide.


    Ak máte záujem o aktuálne novinky, sme pripravení ponúknuť vám aktuálne najrelevantnejšie správy vo všetkých smeroch. Výsledky futbalových zápasov, politické udalosti či svetové, globálne problémy. Ak použijete naše skvelé vyhľadávanie, budete vždy informovaní o všetkých udalostiach. Povedomie o nami poskytovaných videách a ich kvalite nezávisí od nás, ale od tých, ktorí ich na internet nahrali. My vám dodáme len to, čo hľadáte a požadujete. V každom prípade pomocou nášho vyhľadávania sa dozviete všetky novinky zo sveta.


    Svetová ekonomika je však aj pomerne zaujímavá téma, ktorá trápi veľa ľudí. Dosť veľa závisí od ekonomickej situácie rôznych krajín. Napríklad dovoz a vývoz akýchkoľvek potravinárskych výrobkov alebo zariadení. Rovnaká životná úroveň priamo závisí od stavu krajiny, ako aj od platov atď. Ako môžu byť takéto informácie užitočné? Pomôže vám nielen prispôsobiť sa následkom, ale môže vás aj varovať pred cestovaním do tej či onej krajiny. Ak ste notorický cestovateľ, potom určite použite naše vyhľadávanie.


    V dnešnej dobe je veľmi ťažké pochopiť politické intrigy a pochopiť situáciu, keď potrebujete nájsť a porovnať množstvo rôznych informácií. Preto pre vás ľahko nájdeme rôzne prejavy poslancov Štátnej dumy a ich vyjadrenia za všetky uplynulé roky. Môžete ľahko pochopiť politiku a situáciu v politickej aréne. Politika rôznych krajín vám bude jasná a môžete sa ľahko pripraviť na prichádzajúce zmeny alebo sa prispôsobiť už v našej realite.


    Nájdete tu však nielen rôzne novinky z celého sveta. Film, ktorý sa vám bude príjemne pozerať aj večer s fľašou piva alebo pukancami, si ľahko nájdete. V našej vyhľadávacej databáze sú filmy pre každý vkus a farbu, môžete ľahko nájsť zaujímavý obrázok pre seba. Ľahko pre vás nájdeme aj tie najstaršie a najťažšie zohnateľné diela, ako aj všetkým známe klasiky – napríklad Star Wars: The Empire Strikes Back.


    Ak si chcete len trochu oddýchnuť a hľadáte vtipné videá, aj tu vám vieme uhasiť smäd. Nájdeme pre vás milión rôznych zábavných videí z celej planéty. Krátke vtipy vás ľahko rozveselia a zabavia na celý deň. Pomocou pohodlného vyhľadávacieho systému môžete nájsť presne to, čo vás rozosmeje.


    Ako ste už pochopili, pracujeme neúnavne, aby ste vždy dostali presne to, čo potrebujete. Toto úžasné vyhľadávanie sme vytvorili špeciálne pre vás, aby ste si mohli nájsť potrebné informácie vo forme videa a pozrieť si ich na pohodlnom prehrávači.