Kako radimo World of Warships: automatizacija izvoza i provjera sadržaja. BigWorld Engine - Game engines - Fajlovi za programere igara - Kreiranje igara Big world game engine

U ovom postu nastavljamo da postavljamo pitanja programerima igara. Ovog puta intervju daje Mihail Živec, tehnički direktor kompanije „Projekat“. Wargaming.net.

"NVIDIA SVIJET": Koji grafički motor koristite u svom projektu? Koji su minimalni i preporučeni Zahtjevi sustava? Jesu li zbog određenih karakteristika ili se vodite određenim nivoom rasprostranjenosti 3D-mapa? Koristite li dostupnost najnovije generacije grafičkih kartica ili ciljate na standard?

Projekat World of Tanks koristi grafički engine BigWorld sa svojim modifikacijama, koje su morale biti napravljene zbog specifičnosti projekta. Karakteristika motora je njegova fokusiranost na otvorene svjetove sa dinamički učitanim dijelovima mape, kao što je, na primjer, urađeno u World of Warcraft. Trudimo se da koristimo tehnologije koje nam omogućavaju da kreiramo sliku na ekranu monitora blisku skicama naših umetnika i prilagodimo ih zahtevima sistema.

"NVIDIA SVIJET": Da li se grafičke kartice NVIDIA-e i ATI-ja značajno razlikuju po pitanju programiranja? Da li je moguće jednostavno pisati preko DirectX-a ili OpenGL-a i dobiti efikasan kod za oba proizvođača, ili trebate napraviti različite verzije funkcija za svakog dobavljača? Koji ste pristup koristili?

M. Zh.: Video kartice različitih proizvođača imaju svoje specifične karakteristike... To može biti podrška za posebne formate tekstura ili pristup teksturama iz vrha shadera. U isto vrijeme, kada se koristi zajednička funkcionalnost koju pruža DirectX ili OpenGL API, razlike između GPU-a dva proizvođača su minimalne i, kao posljedica razlike između ATI i NVIDIA video kartica, postoji više mogućnosti nego bilo kakvih ograničenja. Što se tiče "posebnog tretmana" motora, BigWorld ne pruža odlučujuću prednost ni jednom ni drugom dobavljaču.

"NVIDIA SVIJET": Koje su razlike u brzini igara na NVIDIA i ATI karticama? Je li ovo svojstvo algoritama game engine-a ili više ovisi o scenama igre? Odnosno, na primjer, u jednoj igrici su više poligonalne scene, au drugoj postoji velika stopa prekoračenja ili puno prozirnih tekstura sa složenim anti-aliasingom, pa se stoga video kartice s većom ispunom bolje snalaze? (Da li je vaš program "voleo" neku arhitekturu?).

M. Zh.: Razlike se uglavnom svode na hardverske karakteristike (razlike u širini memorijskih magistrala, broju ROP jedinica, shader jedinica, itd.), kao i na implementaciju drajvera. Što je opterećenje CPU-a i GPU-a uravnoteženije i što je pozornica bolje organizovana, to bi karakteristike video kartice trebale manje uticati na ukupne performanse. To uključuje mršav stav prema broju i rezoluciji tekstura, nisko prekoračenje od čestica i prozirnih objekata, korištenje LOD-ova, grupiranje objekata u serije i tako dalje - sve to, u jednakoj mjeri, pada na ramena programera motora i dizajneri igara.

"NVIDIA SVIJET": Prilikom testiranja video kartica, u pravilu se koriste približno isti setovi igara. Koliko je ova generalizacija prikladna kada se prikazuju rezultati testova za različite žanrove kao što su 3D pucačine, RPG igre iz trećeg lica i strategije. Jesu li popularna mjerila pokazatelja performansi vaše igre?

M. Zh.: Ne bih dijelio aplikacije po žanru. Sve je isključivo u rukama programera algoritama koje koriste. U svakom slučaju, programeri se trude da korisnikov sistem učitaju što je moguće uravnoteženije i da pri tome postignu maksimalnu atraktivnost proizvoda.

Gledajući brojke FPS-a u igrama poput Crysis-a ili najnovijeg Need for Speeda, otprilike možete zamisliti performanse u nizu drugih modernih igara, tako da ovdje sa sigurnošću možemo reći da su ovi testovi prilično indikativni. Igre ovog nivoa mogu se koristiti kao mjerilo za video kartice, jer pri postavkama visokog kvaliteta maksimalno opterećuju grafički podsistem.

"NVIDIA SVIJET": Koji je razlog povećanja opterećenja CPU-a sa povećanjem rezolucije? Da li je istina da povećanje detalja modela kako bi se minimizirala njihova "ugaonost" zahtijeva više snage CPU-a za animaciju, izrezivanje nevidljivih primitiva, stvaranje volumena sjene, itd.? Da li je ovaj efekat bio u vašoj igri?

M. Zh.: Povećanje rezolucije ne bi trebalo direktno uticati na opterećenje CPU-a, osim ako, naravno, motor ne predviđa automatsko povećanje poligonalnosti modela, dodatnu teselaciju i veći broj okvira animacije za modele. Ako, kako se rezolucija povećava, opterećenje CPU-a raste bez razloga, problem leži ili u kodu igre ili u drajveru video kartice.

"NVIDIA SVIJET": Može li se opterećenje CPU-a povećati kada je omogućeno anizotropno filtriranje? Isto važi i za Full Scene Antialiasing. Ako ovo zahtijeva da se cijela scena nacrta u dvostruko većoj rezoluciji, tada se teoretski broj trouglova također može povećati.

M. Zh.: Odgovor na oba pitanja je ne. Ako je omogućeno anizotropno filtriranje, opterećenje teksturnih jedinica će se povećati. Sa omogućenim FSAA, cevovod piksela dobija više posla. Što se tiče veće rezolucije, udvostručenje broja piksela će povećati broj operacija u pixel shaderu, ROP jedinicama i TMU.

"NVIDIA SVIJET": Proces prenosa proračuna u GPU shadere traje jako dugo, isprva je to bio T&L, clipping. Da li se danas razmatra animacija modela na GPU-u? Šta, prije svega, ostaje u pogledu 3D motora za proračune na CPU-u? (Šta ste računali na GPU osim T&L?).

M. Zh.: Motor korišten u našem projektu ne vrši nikakve proračune na GPU-u. Teoretski, kada bismo, recimo, morali izračunati fiziku mnogih objekata u realnom vremenu, mogli bismo uzeti isti PhysX, koji savršeno izvodi proračune na NVIDIA GPU-ovima, ali zbog specifičnosti projekta imamo dovoljno CPU mogućnosti.

"NVIDIA SVIJET": Poslednjih godina, video akceleratori su postali "pametni", oni sami koriste metode odsecanja nevidljivih primitiva, kao što su: hijerarhijski z-bafer. Koliko su efikasni? Da li je moguće sada samo ugurati sve trouglove u video akcelerator da on sve povuče sam? U danima prvih 3D igara (serija Quake i Unreal), korištene su sofisticirane metode za smanjenje renderiranih trouglova, BSP stabala, itd. Koliko je to sada relevantno?

M. Zh.: Naravno, ne biste trebali računati na to da će video akcelerator samostalno odrediti koje objekte treba nacrtati, a koji neće biti vidljivi. Moramo primijeniti tehniku ​​ranog klipinga nepotrebnog, jer prijenos suvišnih informacija na GPU dovodi do pada performansi. Dakle, problem je i dalje aktuelan, ali u znatno manjoj mjeri. Posebno u slučajevima kada morate crtati veliki broj razni objekti. Činjenica je da su moderne kartice zauzete ne samo odsijecanjem nepotrebnih, već su bile opterećene i proračunima složenijih vrsta rasvjete itd. Shodno tome, ako postoji prilika i resursi da se pomogne video kartici, to treba učiniti.

Na primjer, u BigWorld engine-u, biblioteka Umbra se koristi za odsijecanje nevidljivih objekata prije faze crtanja. Scena je BSP stablo, koje vam takođe omogućava da brzo i efikasno odbacite fragmente scene koji su očigledno van opsega.

"NVIDIA SVIJET": Svojevremeno je bila takva situacija, otprilike u vrijeme krize P4, da je usko grlo sistema bio procesor, koji nije mogao da "učita" video akcelerator, a za povećanje FPS-a u igricama, prije svega, bio je potreban vrhunski CPU model. Postoji li sada sličan odnos između CPU-a i GPU-a ili su procesori prešli određeni kritični nivo performansi i možemo li uzeti jeftin procesor i moćnu video karticu? Ovo se odnosi na igre s naglaskom na grafiku, u stilu kao što su Quake i Doom.

M. Zh.: Slab procesor sa moćnom video karticom predstavlja usko grlo u sistemu, jer mnogo operacija, i niskog (formiranje toka kontrolnih komandi od strane vozača) i visokog nivoa (primenjena logika - petlja igre, ažuriranje čestica, karakter animacija, fizika, zvuk itd.) direktno zavise od performansi CPU-a. Važnu ulogu igra keš memorija procesora, koja je na jeftinim modelima prilično mala.

Za najefikasniji rad video kartice potrebni su i sistemski resursi, sistemska magistrala velike brzine i dovoljna količina RAM-a s dobrim performansama. Često video podsistem nije u stanju da pokaže za šta je sposoban, jednostavno zato što CPU nema vremena da mu prenese potrebne podatke. Dakle, kada je u pitanju ušteda na resursima, dovoljno je kupiti prosječan procesor, matičnu ploču nešto iznad prosjeka, ali ne štedjeti na video kartici i RAM.

"NVIDIA SVIJET": DirectX iz verzije u verziju postaje sve više kao grafički motor. Da li je istina da se danas 3D program sastoji praktično od Direct3D API poziva i većina proračuna se obavlja u njemu? Kako ocjenjujete najnoviju verziju DirectX? Da li je postao gotovo potpuni motor i koliko će još verzija biti potrebno?

M. Zh.: Direct3D se ne može posmatrati kao poseban grafički motor i malo je verovatno da će u doglednoj budućnosti Microsoft preduzeti takav korak kao što je kreiranje sopstvenog mehanizma za igre. Ovo je nepraktično iz više razloga, uključujući mnoge razlike u zahtjevima za motor za različite projekte igara. Na primjer, imaju simulator automobila, strategija u realnom vremenu i 3D pucač karakteristične karakteristike koji ne dozvoljavaju da se isti motor koristi podjednako efikasno u sva tri slučaja.

Deseta verzija Direct3D-a uvodi nove nivoe apstrakcije pri radu sa resursima i dodatne mogućnosti prilikom razvoja shadera, takvi trikovi kao što je Stream Output postali su dostupni. Istovremeno, D3D je ostao ono što je bio – API niskog nivoa, koristeći koji programer može dizajnirati motor igre za određeni zadatak.

"NVIDIA SVIJET": općenito, U poslednje vreme dolazi do "globalizacije" igrica i 3D motora. Postoji nekoliko popularnijih platformi na kojima se prave mnoge igre. Je li ovo objektivan proces? Ima li smisla da programer piše svoj vlastiti motor sada, kada možete licencirati gotov, potpuno funkcionalan. Na primjer, nedavno je objavljena još jedna verzija Unreal Engine-a, koja je već preuzeta na desetine hiljada puta. Koliko je vremena potrebno da sve igre koriste jedan ili dva 3D motora?

M. Zh.: Koristimo BigWorld i za sada smo zadovoljni s njim. Što se tiče "globalizacije", malo je vjerovatno da će se dogoditi čudo, a CryTek, Epic i brojni drugi odlučuju jedni drugima dati dio tržišta game engine-a. Ne zaboravite da su igre kreirane na istom motoru po pravilu vrlo slične, što nije uvijek dobro. Najvjerovatnije će broj motora samo rasti, sa odlaskom u sve užu specijalizaciju. U svakom slučaju, uvijek će postojati jedinstveni motori.

"NVIDIA SVIJET": Da li je tačno da su najnovije video kartice postale veoma moćne u smislu sirove snage i, ne razlikuju se od prethodnih modela po efektima, mogu da otkriju svoj potencijal, pre svega, na sistemima sa velikim monitorima (od 1920x1200) u režimima sa antialiasing i potpuno anizotropno filtriranje? Ima li smisla da osoba sa monitorom, na primjer, 1280x1024, a nije ljubitelj filtriranja i AA, kupi novu video karticu, kao što je GTX285 i Radeon na novom tehničkom procesu?

M. Zh.: Slažem se da jeste. Ali, ipak, ne zaboravite na pristojne monitore, sa dovoljnim kvalitetom reprodukcije boja, visokom rezolucijom, kontrastom. Dobićete mnogo više zadovoljstva od igre. Ali čak i ako odlučite da ne mijenjate svoj omiljeni monitor, vrijedi zamijeniti karticu, jer će to svakako dovesti do povećanja performansi vašeg sistema, jer su neki od starih algoritama proračuna na novim karticama već implementirani u hardveru. .

"NVIDIA SVIJET": Ranije su programeri igara bili konzervativni u korištenju mogućnosti i efekata najnovijih video kartica, jer su se fokusirali na najčešće kartice u ovom trenutku. To je, na primjer, izlazi uvjetni DirectX n, ali igre su i dalje napisane za DirectX n-2. Da li se situacija nedavno promijenila? Da li je u igri lako iskoristiti prednosti novih efekata za nedavno objavljene video akceleratore?

M. Zh.: Da je Windows 7 objavljen nekoliko godina ranije, ili da je Microsoft odustao od ideje povezivanja DirectX 10 sa Windows Vistom, programeri igara bi odavno prešli na barem verziju 10 API-ja. Međutim, sada imamo ono što imamo: sve hitove posljednjih godina koristite DX9, a podrška za DX10 je često marketinški trik.

"NVIDIA SVIJET": Koliko intenzivno igre obično koriste snagu najnovijih video akceleratora u trenutku izdavanja? Na primjer, da li se sada koriste sve karakteristike arhitekture GT200? Da li je tipična situacija kada, u vrijeme objavljivanja, novi GPU jednostavno radi malo bolje na postojećim igrama, ali s vremenom, kako se igre optimiziraju za novu arhitekturu i primjenjuju nove karakteristike, čini se da njegova vrijednost raste? Koliko vaša igra koristi nove funkcije?

M. Zh.: U slučaju nove arhitekture i njenog unificiranog modela shadera, gotovo svi su pobijedili. Opterećenje tjemena GPU-a i cevovoda piksela se izjednačilo tamo gdje je bilo velikih iskrivljenja u jednom ili drugom smjeru. Što se tiče novih funkcija, što je veći procenat video kartica koje podržavaju određenu funkciju, to će ih programeri igara spremnije koristiti u svojim projektima. BigWorld koji koristimo fokusira se na mogućnosti DirectX 9 i SM 3.0.

"NVIDIA SVIJET": Danas su online igrice postale veoma popularne. Je li ovo ostavilo traga na industriji video akceleratora? Budući da su motori ovakvih igrica fokusirani na osnovni skup funkcija koje ima veliki broj korisnika, a FPS stope su i dalje ograničene internet vezom, čini se besmislenim kupovati vrhunski video akcelerator za online igrice. Nije li to kočnica u razvoju grafike igara? Povećana popularnost igara pretraživača u "punom 2D", za koje akcelerator nije potreban.

M. Zh.: Ako pogledate broj pretplatnika na World of Warcraft i uporedite ga sa, recimo, Aionom ili Age of Conan-om, odgovor je očigledan: za online igrice prije svega igranje, razrada svijet igre, uzbudljiva PvP komponenta i drugi momenti koji nisu direktno povezani sa rasporedom. Ovo nije kočnica u razvoju grafike, jer igrači ne žive u jednom MMORPG-u. Nove pucačine, simulatori automobila i RPG-ovi neizbježno će nastaviti da podižu ljestvicu za 3D igranje. MMO igre polako ali sigurno idu istim putem, sa ciljem da privuku što veću publiku. Inače, priča se da isti Blizzard sada radi na novom MMOG-u i malo je vjerovatno da će koristiti 8 godina star motor u svom novom projektu.

"NVIDIA SVIJET": U kojoj mjeri SLI i Crossfire tehnologije zahtijevaju podršku programera igara? Koji je razlog za različitu efikasnost ovih tehnologija za različite igre? Sa karakteristikama game engine-a ili sa scenama igre? Koliko vaša igra ima koristi od korištenja SLI i Crossfirea?

M. Zh.: Optimizacija motora za dvije video kartice je vrlo težak proces. Potrebno je pažljivo organizirati kompaktan prijenos podataka na GPU i balansirati motor u smislu opterećenja između GPU-a i CPU-a. Ako se aplikacija, kada radi na jednoj kartici, već naslanja na CPU ili prijenos podataka preko magistrale, morat ćete zaboraviti na SLI ili Crossfire. To je, zapravo, razlika između određenih igara kada se rade na uparenim akceleratorima. Naša igra i dalje daje povećanje performansi od oko 10% na SLI, ali sada optimiziramo brojne module kako bismo poboljšali performanse u takvim modovima.

"NVIDIA SVIJET": Već duže vrijeme se mnogo govori o krizi na PC tržištu i postepenom prelasku igara na konzole. Ali to se još nije dogodilo. Možemo li ovo očekivati ​​u budućnosti? Da li je tačno da je zbog standardnog hardvera programiranje grafike za konzole mnogo lakše? Ili vječito zaostajanje set-top box uređaja u smislu "hardvera" ujednačava uniformnost?

M. Zh.: Igraće konzole imaju niz prednosti za programera (jedna platforma, jedan skup mogućnosti i, kao rezultat, iste performanse za sve igrače), ali tržište PC igara, a posebno online igara u stalnom je porastu, tako da ne možemo očekivati ​​masivan prelazak na konzole.troškovi. Ne zaboravite da izdavanje igraćih konzola sa snažnijim hardverom ograničavaju sami proizvođači konzola, pokušavajući da nadoknade troškove proizvodnje konzola prethodne generacije prodajom trenutnih igara. Stoga će prije izlaska Playstation 4 ili Xbox 720 proći dosta vremena i bit će mnogo projekata fokusiranih na trenutnu generaciju konzola. U nekim slučajevima, kao što je Nintendo Wii, napredni hardver je potpuno nepotreban za postizanje odličnog rezultata.

"NVIDIA SVIJET": Da li je tačno da je sada u igricama kombinacija metode projekcije za konstruisanje senki iz modela i metode volumena senke sa dinamički ili statički izračunatim zapreminama za senke na pokretnim objektima, modelima i oružju, te iz pokretnih delova modela na sebi gotovo univerzalno korišten?

M. Zh.: Umjesto volumena senki, često se koristi ista tehnika projekcije, uz modifikacije (kaskadne karte senki, zasebna mapa senki za samosjenčanje, itd.). Volumeni senke pružaju jasnu granicu senke, ali pate od visoke stope popunjavanja, dodatnih CPU proračuna i složene implementacije mekih ivica senke.

"NVIDIA SVIJET": Imaju li postojeće metode sjenčanja perspektivu, u smislu izgradnje dinamičkog osvjetljenja za cijelu scenu? Odnosno, uz postepeno povećanje snage video akceleratora, oni se mogu koristiti za izračunavanje cjelokupnog osvjetljenja u dinamici? Ili će biti potrebno primijeniti neke nove metode?

M. Zh.: Projektivne sjene su prešle dug put u modernim igrama, a neke od njihovih modifikacija će se koristiti dugo vremena, u kombinaciji s dodatnim efektima poput SSAO. Naravno, ako postoji besplatan GPU ray tracing, onda ni projektivne ni volumetrijske sjene nemaju nikakve šanse.

"NVIDIA SVIJET": Kako ocjenjujete tehnologiju Precomputed Radiance Transfer sa stanovišta primjene u igrama? Da li ćete ga koristiti u budućnosti?

M. Zh.: PRT zahteva dugotrajne proračune, ne može se kombinovati sa animiranim modelima i, u principu, ne pruža velike prednosti u vizuelnom smislu u odnosu na istu ambijentalnu okluziju. Kao primjer možete uzeti Halo 3, koji koristi PRT, ali se ne ističe kvalitetom osvjetljenja u poređenju sa istim Gears of War ili Crysis.

"NVIDIA SVIJET": DirectX 11 i Fermi arhitektura, vrijedi li čekati DirectX 11 akceleratore i igre ili je to prolazna verzija API-ja? Može li mlađi model Direct X 11 akceleratora, koji popušta u apsolutnoj snazi, stopi punjenja, biti bolji od starog, ali moćnijeg modela s podrškom za DirectX 10? Možemo li očekivati, s izdavanjem Fermi arhitekture, neku vrstu kvalitativnog skoka u grafici igrica, ili će to biti ekstenzivni rast, više trouglova, veća brzina pri visokim rezolucijama, itd.? Da je Fermi bio dostupan u vrijeme razvoja vaše igre, koliko bi igra bila drugačija u pogledu grafike?

M. Zh.: Jedanaesta verzija DirectX-a nudi više mogućnosti za računanje na GPU-u, dok, u poređenju sa DX10, ne donosi nikakva radikalna poboljšanja za 3D grafiku. Što se tiče Fermija, najzanimljivija karakteristika po mom mišljenju je potpuno vođena teselacija za 3D modele.

Mikhail Zhivets, tehnički direktor projekta World of Tanks, Wargaming.net

Nakon premijernih zatvorenih emisija World of Warships na Gamescom-u i IgroMir-u, zvanično predstavljanje igre je sve bliže i bliže. Zatvoreno alfa testiranje je sada u punom jeku, a mi, programeri Lesta Studija, odjela Wargaminga iz Sankt Peterburga, još uvijek imamo gomilu pitanja za rješavanje. Istovremeno, uspjeli smo ostaviti mnoge prepreke iza sebe. U nastavku je priča o tome kako smo izvoznika našeg motora prilagodili potrebama Brodova i izgradili proces provjere sadržaja.

Standardna isporuka motora

Svaki motor uključuje alate za izvoz 3D modela iz 3D uređivača u vlastiti format podataka. Naš BigWorld, na osnovu kojeg je napravljen World of Tanks, nije izuzetak. Podržava izvoz iz 3D Max i Maya. Gotovo svaki projekt igre zahtijeva prilagođavanje standardnih izvoznika specifičnostima projekta. U našem projektu modeli brodova su specifični.

Prva verzija prilagođenog izvoznika iz Maye jednostavno ga je "preobučila" da prepozna složeniju strukturu brodske scene. Malo Python kontrolnog koda je dodato postojećem C++ kodu, kao i dodatak za Maya sa korisničkim sučeljem na wxWidget. Izgledalo je otprilike ovako:


UI prilagođenog izvoznika

Dobiveni alat imao je mnogo nedostataka.

Izvoz je mogao da se izvrši samo uz učešće korisnika, koji je izvozniku morao da "kaže" šta scena sadrži. Korišćenje ovog alata za automatizaciju različitih procesa, na primer, automatska verifikacija sadržaja u fazi izrade distributivnog kompleta, nije dolazilo u obzir.

Izvoznik je od korisnika zahtijevao znanje o daleko od očiglednih parametara, radio je sporo, praktički nije podržavao verifikaciju scene, a također je zahtijevao ogromnu količinu resursa za podršku.

Arhitektura je bila veliki izazov za buduće proširenje funkcionalnosti. Izvoz je zapravo bio atomska operacija (skup špageti funkcija) koja je prevodila podatke iz jedne strukture (učitana Maya scena) u drugu strukturu (BigWorld) direktno u fizičke datoteke. Kada se serijalizatori i poslovna logika implementiraju "u monolitu" i jednostavno ne postoji model podataka, nemoguće je dodati obradu podataka (pre/post-processing), kao i ponovno korištenje (kod ponovno korištenje) serijalizatore i model podataka u drugim alatima. koji implementiraju sopstvenu poslovnu logiku. Bilo je nemoguće izgraditi složenije procese proizvodnje sadržaja.

Vremenom je dodavanje nove funkcionalnosti postojećem kodu postalo gotovo nemoguće. Odlučeno je da se izvoznik prepiše "od nule" novom arhitekturom.

Teška svakodnevica

Nivo našeg projekta povećao je zahtjeve za kvalitetom, složenošću i obimom sadržaja. Naš studio je dosta porastao u proteklih nekoliko godina. Sada imamo mogućnost da izdvojimo dovoljnu količinu resursa za poslove vezane za proizvodnju sadržaja. Došli su nam profesionalci sa velikim iskustvom u razvoju arhitekture, tehnologijama u C++/C#. U isto vrijeme, za programere izvoznika to je bilo prvo iskustvo korištenja Python i Maya API-ja. Ovo je uvelo dodatne rizike koje je trebalo uzeti u obzir.

Refaktoring izvoznika smo procijenili na dva-tri čovjekomjeseca. Ne može se bez optimizma u razvoju igara.

Identificirali smo sljedeće rizike kao:

Nedostatak formalnih zahtjeva;
nivo poznavanja Pythona;
složenost Maya API-ja;
refaktoriranje algoritama za obradu primitiva.

Veći dio stvarnog vremena potrošeno je na prikupljanje zahtjeva iz neformalnih izvora kao što su programeri koji su postali menadžeri, stari ljudi, torziona polja i postojeći izvozni kod. Ovi grumenčići znanja su formalizovani i napisani u obliku zahteva, specifikacija i UML dijagrama u Confluenceu.

Prvi prototipovi su pokazali potrebu za korištenjem koncepta imenskih prostora i Python modula (__init__.py). Također, razrađen je mehanizam koji vam omogućava "transparentno" korištenje funkcionalnosti iz C++ biblioteka (.pyd).

O složenosti i konfuziji Maya API-ja može se napisati posebna knjiga. Svaka funkcionalnost zahtijeva izradu prototipa, konsultacije sa 3D umjetnicima i programerima motora (renderiranje).

Standardni izvoznik je imao vlastitu implementaciju velikog broja algoritama, na primjer, triangulaciju poligona, izračunavanje matrica transformacije ugniježđenih čvorova itd. Odbacili smo ih u korist upotrebe Maya API-ja, koji je znatno poboljšao performanse izvoznika.

Krajnje je vrijeme da Murphyjevim zakonima dodate pravilo da će svaki projekat koji ste zamislili biti realizovan za najviše "x3" vremena od planiranog, ako ga ne odustanete.

Rezultat je bio vrijedan truda koji smo uložili. Na kraju, čak je i naš glavni umjetnik zadužen za izvoz modela, nakon par mjeseci rada, našao našeg izvoznika "skoro savršenim".

Pogledajmo ispod haube

U našem studiju se aktivno koriste skripte u Python-u. Pokušali smo na njemu implementirati cijeli izvoznik. Naravno, Python nije pogodan za obradu velikih binarnih podataka kao što su baferi vrhova, baferi indeksa itd. Model podataka i serijalizatori takvih kontejnera implementirani su u C++ kao biblioteka (.pyd) koja se prirodno "uklapa" u model podataka u Pythonu. Sva poslovna logika je implementirana u Python-u.

Okvir izvoznika je planiran da se koristi ne samo za zadatak "ručnog" izvoza iz Maye, već i za sve zadatke gdje se njegova funkcionalnost može ponovo koristiti, na primjer, za automatizaciju provjere sadržaja. Za bilo koji komplet alata koji razvijemo, potrebni su nam Python API-ji, komandna linija i UI alati.

Arhitektura

Arhitektura okvira izvoznika je modularna, slojevita. Postoje fizički i logički slojevi, kao i sloj domene. Svaki sloj sadrži zasebne module: model podataka, poslovnu logiku, serijalizatore, kao i pretvarače koji mogu konvertovati model podataka jednog sloja u model podataka drugog sloja. Fizički i logički sloj zapravo implementiraju analognu ORM arhitekturu.

Arhitektura sloja domena je dizajnirana za pogodnu obradu modela podataka sa poslovnom logikom. Potpuno je izoliran i ne sadrži nikakve pretpostavke o tome kako će se serijalizirati u fizičku pohranu.


Slojevita arhitektura izvoznika

Proces izvoza

Slojevita arhitektura uvodi određene karakteristike procesa izvoza. Mi zapravo deserializiramo dva (ili više) modela iz različitih izvora (Maya i BigWorld Engine). Nakon toga, ovi modeli se spajaju u jedan novi. Novi model se zatim serijalizira u format BigWorld-Engine.


Proces izvoza

Fleksibilnost procesa proizvodnje sadržaja

Implementirana arhitektura olakšava izgradnju složenih procesa proizvodnje sadržaja. Na primjer, naš primarni model broda se tehnološki sastoji od tri odvojene scene Maya, od kojih je svaka istovremeno razvijena od strane različitih odjela:

Prva scena sadrži vizualni model i model sudara.
Druga scena sadrži balistički model.
Treći sadrži portove za efekte.

Pored toga, alatni okvir motora (urednici) dodaje (uređuje) svoje podatke u izvedeni model formata motora (četvrta scena).

Izvoznik lako rješava netrivijalan zadatak kombiniranja sve četiri scene u jedan rezultirajući model broda.

Provjera sadržaja

Sistem verifikacije sadržaja nam omogućava da tražimo greške u sadržaju kako u svakom sloju (izvoru) posebno, tako iu rezultirajućem sadržaju. Broj verifikatora sada dostiže nekoliko desetina. Automatska verifikacija sadržaja ugrađena je u proces izgradnje distribucije, što vam omogućava da eliminišete ljudski faktor što je više moguće i garantuje integritet i tehničku čistoću sadržaja.


Primjer provjere modela broda u Mayi

Budžeti za sadržaj i patka u kupatilu

Važan dio procesa verifikacije sadržaja je provjera budžeta, na primjer, provjera budžeta poligona. Slika ispod prikazuje, posebno, informacije o broju trokuta za vizualni model za svaku lodu:


Maya UI dodatak

Živopisna ilustracija potrebe za takvom provjerom je priča koju su mi ispričale kolege o jednom od prethodnih projekata. Na karti je bila parcela izgrađena neuništivim kućama. Čim je kamera skrenula pogled na ovo područje, FPS je odmah divljački pao. Nakon proučavanja problema, ispostavilo se da je unutar jedne od kuća bila kada u kojoj je plivala mala "plastična" patka. Sve bi ovo izgledalo kao smiješna podvala umjetnika, da nije činjenica da je model patke sadržavao oko milion poligona.

U praksi je veoma teško ispoštovati budžetsku vrijednost. Mnogi modeli su objektivno izuzeci. Postavljanje vrijednosti budžeta u obliku raspona također ne rješava problem, jer s vremenom poligonski modeli jednostavno počinju težiti gornjoj vrijednosti raspona. U našem slučaju planiramo promjenu ličnih budžeta onih modela koji ne odgovaraju standardnom budžetu ovog tipa modela.

Obrada sadržaja

U svakoj fazi izvoza, potrebna je obrada (pre / naknadna obrada). Na primjer, prije pretvaranja logičkog modela podataka Maya sloja u domenski model podataka za topove protivvazdušne odbrane, potrebna je preliminarna rotacija skeleta topa za 45 stepeni u Y-osi i uklanjanje skeleta. Naša arhitektura je omogućila transparentnu integraciju različitih obrada u bilo kojoj fazi izvoza.




Primjer modela prije i nakon predobrade

Podrška za X64

Sasvim nedavno, naši umetnici su masovno prešli sa 32-bitne Maya 2012 na 64-bitnu Mayu 2014. Pošto je izvoznik skoro u potpunosti napisan na Python-u, praktično nemamo problema sa podrškom za x64. Samo biblioteka (.pyd), implementirana u C++, zahtijevala je malo "šamanizma".

Sada se eksporter može lako koristiti u x32 i x64 procesima, budući da sam definira i učitava potrebni sklop C++ biblioteke (.pyd).

Verifikacija kartice

Dok smo razvijali arhitekturu izvoznika, nismo mogli unaprijed predvidjeti u kojim drugim alatima i automatizacijama bi ga bilo moguće ponovo koristiti. Automatizacija verifikacije kartica je primjer kako je „ispravna“ arhitektura izvoznika našla svoj put u drugom alatu.

Verifikacija mapa gradi i provjerava graf ovisnosti karte od drugih objekata koji se na njoj nalaze. Na karti se posebno koriste vizualni modeli krajolika (kamenje, sante leda), zgrada (kuće, hangari, marine), opreme (avioni, čamci) itd.

Posebnost verifikatora kartica je u tome što može provjeriti ne samo prisustvo datoteka ovih vizualnih modela, već i samih modela, koristeći okvir za izvoz. Time je eliminisan ljudski faktor, kada odjel za razvoj mapa (LA) mora vjerovati odjelu za razvoj 3D modela (3D Art) da se koriste tehnički ispravni modeli.

Izgradnja distribucije

Okvir izvoznika našao je svoju upotrebu u procesu pripreme paketa sadržaja za distribuciju. Distribucija ne bi trebala uključivati ​​modele koji:

Ne koristi se više;
još uvijek su u razvoju;
namijenjeno za naredne verzije proizvoda.

Na osnovu osnovne liste objekata igre (root game objects), potrebno je izgraditi graf zavisnosti prema kojem se puna lista potreban sadržaj. Ne postoji ništa lakše nego deserijalizirati model koristeći okvir izvoznika i "saznati" koji su drugi modeli potrebni (reference sadržaja).

Ishodi

Istorija razvoja našeg izvoznika pokazala je kako je od jednostavnog visokospecijalizovanog alata evoluirao u moćan sistem koji rešava svoje neposredne zadatke, a takođe je našao primenu u drugim procesima proizvodnje sadržaja. Njegov uspješan razvoj i ponovna upotreba zasniva se na modularnoj arhitekturi koja omogućava da se njegove pojedinačne „kocke“ koriste za izgradnju drugih sistema.

U bliskoj budućnosti, izvoznik će imati još jedan test koji se odnosi na promjenu formata datoteke BigWorld Engine. Uvjereni smo da osnovna arhitektura neće imati nikakvih poteškoća i da će moći podržati rad i sa postojećim i sa novim formatom datoteke.

  • Žanrovska orijentacija: 3D MMO bilo kojeg žanra;
  • Platforma: PC, PS3, Xbox 360, iOS (iPad), Web;
  • Programski jezik: C++, Python;
  • Licenca: indie i komercijalni;
  • Otvori izvor: nije predviđeno ili predviđeno za povećanu naknadu;
  • Multiplayer: klijent-server;
  • Prednosti: moćan, podrška za sve najviše moderne tehnologije, optimizirano, iOS podrška, jeftino za takve karakteristike;
  • Nedostaci: nije besplatno;
  • Programeri motora: BigWorld Tech, Inc.

    BigWorld Engine je najnapredniji 3D motor za kreiranje MMO igara. Na njemu se prave igre poput "World of Tanks", "Pealm of the Titans" sa Wargaming.net-a i druge igre drugih svjetskih kompanija za razvoj igara. Više od 15 MMO igara je napravljeno na ovom motoru. Razvio ga je BigWorld Technology.

    Optimizirani motor vam omogućava da kreirate igre niske potražnje sa zadivljujućom grafikom. Motor vam omogućava da prenesete igre na iOS. Napisan je u programskom jeziku C ++, implementacija logike igre u njemu je napravljena u prikladnom skriptnom jeziku Python. Postoje moćni alati i klijent-server motor. Za zvuk, FMOD biblioteka je podržana, a sve druge biblioteke su povezane preko plug-in sistema. Radi sa XML i MySQL bazama podataka. Kutija alata uključuje moćni World Editor, Model Editor i Particle Editor.

    Vrlo je pristupačne cijene. Build BigWorld: Indie Edition košta samo 299 dolara; BigWorld: Indie Source Edition - 2.999 dolara; BigWorld: Commercial Edition - po dogovoru pojedinačno.

    Ovaj napredni motor nije inferioran u sposobnostima u odnosu na druge svjetske motore ovog tipa. Motor je dostupan na ruskom, korejskom, američkom i japanskom jeziku. Postoji dokumentacija, može raditi na pretraživačima. Općenito, možete se baciti na posao ako imate znanje i marljivost.

    Više nije dostupno za licenciranje treće strane, kao Wargaming je odlučio da prestane sa distribucijom svog motora.

    Zvanična stranica: http://www.bigworldtech.com





    Lanac alata BigWorld Technology pruža potpuni sistem kreiranja MMOG sadržaja od kraja do kraja koji će poboljšati kvalitet i pravovremenost vaše igre. Svi alati su dizajnirani za kooperativnu proizvodnju sredstava za igru ​​u velikom timskom okruženju, osiguravajući efektivno korištenje resursa i nesmetan protok sadržaja.

  • Imate problema s pronalaženjem određenog videozapisa? Onda će vam ova stranica pomoći da pronađete video koji vam je toliko potreban. Lako ćemo obraditi vaše zahtjeve i dati vam sve rezultate. Bez obzira na to što vas zanima i šta tražite, lako možemo pronaći potreban video, bez obzira u kom smjeru je.


    Ukoliko ste zainteresovani za aktuelne vesti, onda smo spremni da vam ponudimo trenutno najrelevantnije vesti u svim pravcima. Rezultati fudbalskih utakmica, politički događaji ili svjetski, globalni problemi. Uvijek ćete biti svjesni svih događaja ako koristite našu divnu pretragu. Svijest o video snimcima koje pružamo i njihov kvalitet ne zavise od nas, već od onih koji su ih postavili na internet. Mi vas samo snabdevamo onim što tražite i tražite. U svakom slučaju, koristeći našu pretragu, saznat ćete sve novosti na svijetu.


    Međutim, svjetska ekonomija je također prilično zanimljiva tema koja zabrinjava mnoge. Dosta toga zavisi od ekonomskog stanja raznih zemalja. Na primjer, uvoz i izvoz bilo kakvih prehrambenih proizvoda ili opreme. Isti životni standard direktno zavisi od stanja u zemlji, kao i od plata i tako dalje. Kako takve informacije mogu biti korisne? Pomoći će vam ne samo da se prilagodite posljedicama, već vas može i upozoriti na putovanje u jednu ili drugu zemlju. Ako ste ozloglašeni putnik, svakako koristite našu pretragu.


    Danas je vrlo teško razumjeti političke intrige, a za razumijevanje situacije potrebno je pronaći i uporediti mnogo različitih informacija. Stoga za vas lako možemo pronaći različite govore poslanika Državne dume i njihove izjave za sve protekle godine. Lako možete razumjeti politiku i situaciju u političkoj areni. Politika različitih zemalja će vam postati jasna i lako ćete se pripremiti za nadolazeće promjene ili se već prilagoditi našim realnostima.


    Međutim, ovdje možete pronaći ne samo razne vijesti iz cijelog svijeta. Lako ćete pronaći i film koji će biti ugodno gledati uveče uz flašu piva ili kokice. U našoj bazi pretraživanja nalaze se filmovi za svaki ukus i boju, lako možete pronaći zanimljivu sliku za sebe. Lako možemo pronaći za vas čak i najstarija i najteža djela, kao i svima poznate klasike - na primjer, Ratovi zvijezda: Carstvo uzvraća udarac.


    Ako se samo želite malo opustiti i tražite smiješne video zapise, onda i ovdje možemo utažiti vašu žeđ. Pronaći ćemo za vas milion različitih zabavnih videa sa svih strana planete. Kratke šale lako će vas razveseliti i zabaviti cijeli dan. Koristeći praktičan sistem pretraživanja, možete pronaći upravo ono što će vas nasmijati.


    Kao što ste već shvatili, radimo neumorno kako biste uvijek dobili upravo ono što vam je potrebno. Napravili smo ovu divnu pretragu posebno za vas, kako biste mogli pronaći potrebne informacije u obliku videa i gledati ih na pogodnom plejeru.