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

U ovom postu nastavljamo postavljati pitanja programerima igara. Ovaj put intervju daje Mikhail Zhivets, tehnički direktor projekta "", tvrtke 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 značajki ili se vodite određenom razinom rasprostranjenosti 3D-karata? Koristite li dostupnost najnovije generacije grafičkih kartica ili ciljate na standard?

Projekt World of Tanks koristi grafički engine BigWorld s vlastitim modifikacijama, koje su se morale napraviti zbog specifičnosti projekta. Značajka motora je njegova usmjerenost na otvorene svjetove s dinamički učitanim dijelovima karte, kao što je, na primjer, učinjeno u World of Warcraftu. Pokušavamo koristiti tehnologije koje nam omogućuju da na ekranu monitora stvorimo sliku blisku skicama naših umjetnika i prilagodimo ih zahtjevima sustava.

"NVIDIA SVIJET": Razlikuju li se grafičke kartice NVIDIA-e i ATI-ja značajno u smislu programiranja? Je li moguće jednostavno pisati putem DirectX-a ili OpenGL-a i dobiti učinkovit kod za oba dobavljač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 značajke... To može biti podrška za posebne formate tekstura ili pristup teksturama iz vršnog shadera. Istodobno, kada se koristi zajednička funkcionalnost koju pruža DirectX ili OpenGL API, razlike između GPU-ova dvaju proizvođača su minimalne i, kao posljedica razlike između video kartica ATI-a i NVIDIA-e, 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 to svojstvo algoritama game enginea ili više ovisi o scenama igre? Odnosno, na primjer, u jednoj igri postoje više poligonalne scene, a u drugoj postoji velika stopa prekoračenja ili puno prozirnih tekstura sa složenim anti-aliasingom, pa se stoga video kartice s većom brzinom ispune bolje nose? (Je li vaš program "volio" neku arhitekturu?).

M. Zh.: Razlike se uglavnom svode na hardverske karakteristike (razlike u širini memorijskih sabirnica, broju ROP jedinica, shader jedinica itd.), kao i na implementaciji drajvera. Što je opterećenje CPU-a i GPU-a uravnoteženije i što je pozornica bolje organizirana, to bi značajke video kartice manje trebale utjecati na ukupne performanse. To uključuje mršav stav prema broju i razlučivosti 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 testa za različite žanrove kao što su 3D pucačine, RPG-ovi iz trećeg lica i strategije. Jesu li popularna mjerila pokazatelja izvedbe 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 pokušavaju što uravnoteženije opteretiti korisnički sustav i istovremeno postići maksimalnu atraktivnost proizvoda.

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

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

M. Zh.: Povećanje rezolucije ne bi smjelo izravno utjecati 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 razlučivost povećava, opterećenje CPU-a raste bez razloga, problem leži ili u kodu igre ili u upravljačkom programu video kartice.

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

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

"NVIDIA SVIJET": Proces prijenosa proračuna u GPU shadere traje jako dugo, isprva je to bio T&L, clipping. Razmišlja li se danas o animaciji modela na GPU-u? Što prije svega ostaje u smislu 3D motora za izračune na CPU-u? (Na što ste računali na GPU osim T&L?).

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

"NVIDIA SVIJET": Posljednjih godina video akceleratori su postali "pametni", oni sami koriste metode odsjecanja nevidljivih primitiva, kao što su: hijerarhijski z-buffer. Koliko su učinkoviti? Je li moguće sada samo ugurati sve trokute u video akcelerator da on sam sve povuče? U danima prvih 3D igara (serija Quake i Unreal) korištene su sofisticirane metode za smanjenje renderiranih trokuta, 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 clippinga nepotrebnog, budući da prijenos suvišnih informacija na GPU dovodi do pada performansi. Dakle, problem je i dalje aktualan, iako u znatno manjoj mjeri. Pogotovo u slučajevima kada morate crtati veliki broj razni predmeti. Činjenica je da su moderne kartice zauzete ne samo odsijecanjem nepotrebnih, već su bile natovarene i proračunima složenijih vrsta rasvjete itd. U skladu s tim, ako postoji prilika i resursi za pomoć video kartici, to treba učiniti.

Na primjer, u BigWorld motoru, biblioteka Umbra se koristi za odsijecanje nevidljivih objekata prije faze crtanja. Scena je BSP stablo, koje vam također omogućuje brzo i učinkovito odbacivanje fragmenata scene koji su očito izvan dosega.

"NVIDIA SVIJET": Svojedobno je bila takva situacija, otprilike u vrijeme krize P4, da je usko grlo sustava bio procesor koji nije mogao "učitati" 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đenu kritičnu razinu performansi i možemo li uzeti jeftin procesor i moćnu video karticu? To se odnosi na igre s naglaskom na grafiku, u stilu kao što su Quake i Doom.

M. Zh.: Slab procesor s moćnom video karticom usko je grlo sustava, budući da je mnogo operacija, i niske (formiranje tijeka upravljačkih naredbi od strane vozača) i visoke razine (primijenjena logika - petlja igre, ažuriranje čestica, karakter animacija, fizika, zvuk itd.) izravno ovise o performansama CPU-a. Važnu ulogu igra cache memorija procesora, koja je na jeftinim modelima prilično mala.

Za najučinkovitiji rad video kartice potrebni su i resursi sustava, sistemska sabirnica velike brzine i dovoljna količina RAM-a s dobrim performansama. Često video podsustav nije u stanju pokazati za što je sposoban, jednostavno zato što CPU nema vremena prenijeti mu potrebne podatke. Dakle, kada je riječ o uštedi na resursima, dovoljno je kupiti prosječan procesor, matičnu ploču nešto iznad prosjeka, ali ne štedjeti na video kartici i radna memorija.

"NVIDIA SVIJET": DirectX iz verzije u verziju sve više nalikuje grafičkom motoru. Je li istina da se danas 3D program sastoji praktički od Direct3D API poziva i većina izračuna se obavlja u njemu? Kako ocjenjujete Najnovija verzija DirectX? Je li postao gotovo punopravni motor i koliko će još verzija trebati?

M. Zh.: Direct3D se ne može promatrati kao zaseban grafički motor i malo je vjerojatno da će u doglednoj budućnosti Microsoft poduzeti takav korak kao što je stvaranje vlastitog mehanizma za igre. To je nepraktično iz više razloga, uključujući mnoge razlike u zahtjevima za motor za različite projekte igara. Na primjer, simulator automobila, strategija u stvarnom vremenu i 3D pucač imaju karakteristične značajke koji ne dopuštaju da se isti motor koristi jednako učinkovito u sva tri slučaja.

U desetoj verziji Direct3D-a pojavile su se nove razine apstrakcije pri radu s resursima i dodatne mogućnosti za razvoj shadera, a postali su dostupni trikovi kao što je Stream Output. U isto vrijeme, D3D ostaje ono što je bio - API niske razine, pomoću kojeg programer može dizajnirati motor igre za određeni zadatak.

"NVIDIA SVIJET": općenito, U posljednje vrijeme dolazi do "globalizacije" igrica i 3D motora. Postoji nekoliko popularnijih platformi na kojima se izrađuju mnoge igre. Je li ovo objektivan proces? Ima li smisla da programer sada napiše vlastiti motor, kada možete licencirati gotovi, potpuno opremljen. Primjerice, nedavno je izašla još jedna verzija Unreal Enginea, koja je već preuzeta na desetke tisuća 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 vjerojatno 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 stvorene na istom motoru u pravilu vrlo slične, što nije uvijek dobro. Najvjerojatnije će broj motora samo rasti, s odlaskom u sve užu specijalizaciju. U svakom slučaju, uvijek će postojati jedinstveni motori.

"NVIDIA SVIJET": Je li istina da su najnovije video kartice postale vrlo moćne u smislu sirove snage i, ne razlikuju se od prethodnih modela po efektima, mogu otkriti svoj potencijal, prije svega, na sustavima s velikim monitorima (od 1920x1200) u modovima s antialiasing i potpuno anizotropno filtriranje? Ima li smisla da osoba s monitorom npr. 1280x1024, a da 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 jest. No, ipak, ne zaboravite na pristojne monitore, s dovoljnom kvalitetom reprodukcije boja, visokom razlučivosti, kontrastom. Dobit ćete puno više zadovoljstva od igre. Ali čak i ako odlučite ne mijenjati svoj omiljeni monitor, vrijedi zamijeniti karticu jer će to svakako dovesti do povećanja performansi vašeg sustava, jer su neki od starih algoritama izračuna na novim karticama već ugrađeni u hardver .

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

M. Zh.: Da je Windows 7 izašao nekoliko godina ranije, ili je Microsoft odustao od ideje povezivanja DirectX 10 sa Windows Vistaom, programeri igara bi se davno prebacili na barem verziju 10 API-ja. Međutim, sada imamo ono što imamo: sve hitove zadnjih godina koristite DX9, a podrška za DX10 često je marketinški trik.

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

M. Zh.: U slučaju nove arhitekture i njenog unificiranog modela shadera, pobijedili su gotovo svi. Opterećenje tjemena GPU-a i cjevovoda piksela se izjednačilo gdje je bilo velikih iskrivljenja u jednom ili drugom smjeru. Što se tiče novih značajki, što je veći postotak video kartica koje podržavaju određenu značajku, 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 igre postale vrlo popularne. Je li to ostavilo traga na industriji video akceleratora? Budući da su motori ovakvih igara usmjereni na osnovni skup značajki koje ima velik broj korisnika, a FPS stope su i dalje ograničene internetskom vezom, čini se besmislenim kupovati vrhunski video akcelerator za online igre. Nije li to kočnica u razvoju grafike igara? Povećana popularnost igara preglednika u "punom 2D", za koje akcelerator nije potreban.

M. Zh.: Ako pogledate broj pretplatnika na World of Warcraft i usporedite ga s, recimo, Aionom ili Age of Conan, odgovor je očit: za online igre, igranje, razradu svijet igre, uzbudljivu PvP komponentu i druge trenutke koji nisu izravno povezani s rasporedom. To 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 podizati ljestvicu za 3D igranje. MMO igre polako, ali sigurno idu istim putem, s ciljem privući što veću igračku publiku. Inače, priča se da isti Blizzard sada radi na novom MMOG-u i malo je vjerojatno da će koristiti 8 godina star motor u svom novom projektu.

"NVIDIA SVIJET": U kojoj mjeri tehnologije SLI i Crossfire zahtijevaju podršku programera igara? Koji je razlog različite učinkovitosti ovih tehnologija za različite igre? Sa značajkama game enginea ili sa scenama igre? Koliko vaša igra ima koristi od korištenja SLI-a 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 pri radu na jednoj kartici već naslanja na CPU ili prijenos podataka preko sabirnice, morat ćete zaboraviti na SLI ili Crossfire. To je, zapravo, razlika između određenih igara pri radu 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 načinima.

"NVIDIA SVIJET": Već duže vrijeme se mnogo govori o krizi na PC tržištu i postupnom prelasku igara na konzole. Ali to se još nije dogodilo. Možemo li to očekivati ​​u budućnosti? Je li istina da je zbog standardnog hardvera programiranje grafike za konzole puno lakše? Ili vječno zaostajanje set-top box-ova u smislu "hardvera" izravnava ujednačenost?

M. Zh.: Igraće konzole imaju niz prednosti za razvojnog 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, stalno raste, pa ne možemo očekivati ​​masovni prijelaz 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 nadoknaditi troškove proizvodnje konzola prethodne generacije prodajom trenutnih igara. Stoga će prije izlaska Playstationa 4 ili Xbox 720 proći dosta vremena i bit će mnogo projekata usmjerenih na trenutnu generaciju konzola. U nekim slučajevima, kao što je Nintendo Wii, napredni hardver je potpuno nepotreban za postizanje izvrsnog rezultata.

"NVIDIA SVIJET": Je li istina da je sada u igrama kombinacija metode projekcije za konstruiranje sjena iz modela i metode volumena sjene s dinamički ili statički izračunatim volumenima za sjene na pokretnim objektima, modelima i oružju te iz pokretnih dijelova modela na sebi gotovo univerzalno korišten?

M. Zh.: Umjesto volumena sjene često se koristi ista tehnika projekcije, s modifikacijama (kaskadne karte sjena, zasebna karta sjena za samosjenčanje, itd.). Volumeni sjene pružaju jasnu granicu sjene, ali pate od visoke stope popunjavanja, dodatnih proračuna CPU-a i složene implementacije mekih rubova sjene.

"NVIDIA SVIJET": Imaju li postojeće metode sjenčanja perspektivu, u smislu izgradnje dinamičke rasvjete za cijelu scenu? Odnosno, uz postupno povećanje snage video akceleratora, oni se mogu koristiti za izračunavanje cjelokupne rasvjete 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-a. Naravno, ako postoji besplatan GPU ray tracing, onda ni projektivne ni volumetrijske sjene nemaju nikakve šanse.

"NVIDIA SVIJET": Kako ocjenjujete tehnologiju Precomputed Radiance Transfer s gledišta primjene u igrama? Hoćete li ga koristiti u budućnosti?

M. Zh.: PRT zahtijeva dugotrajne izračune, ne može se kombinirati s animiranim modelima i, u principu, ne pruža velike prednosti u vizualnom smislu u usporedbi s istom Ambient Occlusion. Kao primjer možete uzeti Halo 3, koji koristi PRT, ali se ne ističe kvalitetom osvjetljenja u odnosu na isti Gears of War ili Crysis.

"NVIDIA SVIJET": DirectX 11 i Fermi arhitektura, isplati li se č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 s izlaskom Fermi arhitekture očekivati ​​nekakav kvalitativni skok u grafici igara ili će to biti ekstenzivni rast, više trokuta, 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 odnosu na DX10 ne donosi radikalna poboljšanja za 3D grafiku. Što se tiče Fermija, najzanimljivija značajka 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 gamescomu i IgroMiru, sve je bliže i službeno lansiranje igre. Zatvoreno alfa testiranje sada je u punom jeku, a mi, programeri Lesta Studija, odjela Wargaminga iz Sankt Peterburga, još uvijek imamo hrpu pitanja za rješavanje. Ujedno smo uspjeli ostaviti mnoge prepreke iza sebe. U nastavku donosimo priču o tome kako smo izvoznika našeg motora prilagodili potrebama Brodova i izgradili proces provjere sadržaja.

Standardna isporuka motora

Svaki motor uključuje alat za izvoz 3D modela iz 3D uređivača u vlastiti format podataka. Naš BigWorld, na temelju kojeg je napravljen World of Tanks, nije iznimka. Podržava izvoz iz 3D Maxa i Maye. Gotovo svaki projekt igre zahtijeva prilagodbu 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. Dodano je malo Python kontrolnog koda postojećem C++ kodu, kao i dodatak za Mayu s UI na wxWidgetu. Izgledalo je otprilike ovako:


UI prilagođenog izvoznika

Dobiveni alat imao je mnogo nedostataka.

Izvoz se mogao izvesti samo uz sudjelovanje korisnika, koji je izvozniku morao "kazati" što scena sadrži. Korištenje ovog alata za automatizaciju raznih procesa, primjerice automatska provjera sadržaja u fazi izrade distribucije, nije dolazilo u obzir.

Izvoznik je od korisnika zahtijevao znanje o daleko od očiglednih parametara, radio je sporo, praktički nije podržavao provjeru 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) izravno 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 (ponovno korištenje koda) serijalizatore i model podataka u drugim alatima koji implementiraju vlastitu poslovnu logiku. Bilo je nemoguće izgraditi složenije procese proizvodnje sadržaja.

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

Teška svakodnevica

Razina našeg projekta povećala je zahtjeve za kvalitetom, složenošću i volumenom sadržaja. Naš studio je dosta porastao u posljednjih nekoliko godina. Sada imamo priliku izdvojiti dovoljnu količinu sredstava za poslove vezane uz proizvodnju sadržaja. Došli su nam profesionalci s velikim iskustvom u razvoju arhitekture, tehnologijama u C ++ / C #. Istodobno, za programere izvoznika to je bilo prvo iskustvo korištenja Python i Maya API-ja. To je uvelo dodatne rizike koje je trebalo uzeti u obzir.

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

Identificirali smo sljedeće rizike kao:

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

Velik dio stvarnog vremena potrošeno je na prikupljanje zahtjeva iz neformalnih izvora kao što su programeri koji su postali menadžeri, oldtajmeri, torzijska polja i postojeći izvozni kod. Ti su zrnci znanja formalizirani i napisani u obliku zahtjeva, specifikacija i UML dijagrama u Confluenceu.

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

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

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

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

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

Pogledajmo ispod haube

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

Okvir izvoznika planiran je da se koristi ne samo za zadatak "ručnog" izvoza iz Maye, već i za sve zadatke gdje bi se njegova funkcionalnost mogla ponovno koristiti, na primjer, za automatizaciju provjere sadržaja. Za bilo koji komplet alata koji razvijamo potrebni su nam Python API-ji, naredbeni redak i alati korisničkog sučelja.

Arhitektura

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

Arhitektura sloja domene dizajnirana je za prikladnu obradu modela podataka s 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 značajke procesa izvoza. 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 potom 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 tehnološki se sastoji od tri odvojene scene Maya, od kojih svaki istovremeno razvijaju različiti odjeli:

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

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

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

Provjera sadržaja

Sustav provjere sadržaja omogućuje nam traženje grešaka u sadržaju kako u svakom sloju (izvoru) zasebno, tako iu rezultirajućem sadržaju. Broj verifikatora sada doseže nekoliko desetaka. Automatska provjera sadržaja ugrađena je u proces izgradnje distribucije, što vam omogućuje da u najvećoj mogućoj mjeri eliminirate ljudski faktor i jamčite integritet i tehničku čistoću sadržaja.


Primjer provjere modela broda u Mayi

Proračuni sadržaja i patka u kupaonici

Važan dio procesa provjere sadržaja je provjera proračuna, na primjer, provjera proračuna poligona. Slika ispod prikazuje, posebice, 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čali 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, pokazalo se da se unutar jedne od kuća nalazi kadica u kojoj je plivala mala "plastična" patka. Sve bi to izgledalo kao smiješna podvala umjetnika, da nije činjenica da je model patke sadržavao oko milijun poligona.

U praksi je vrlo teško ispoštovati proračunsku vrijednost. Mnogi modeli su objektivno iznimke. Postavljanje vrijednosti proračuna u obliku raspona također ne rješava problem, jer s vremenom poligoni modeli jednostavno počinju težiti gornjoj vrijednosti raspona. U našem slučaju planiramo promijeniti osobne proračune onih modela koji ne odgovaraju standardnom proračunu ove vrste modela.

Obrada sadržaja

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




Primjer modela prije i nakon predobrade

Podrška za X64

Nedavno su naši umjetnici masovno prešli s 32-bitne Maye 2012 na 64-bitnu Mayu 2014. Budući da je izvoznik gotovo u cijelosti napisan na Pythonu, praktički nemamo problema s podrškom za x64. Samo je biblioteka (.pyd), implementirana u C++, zahtijevala malo "šamanizma".

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

Provjera kartice

Razvijajući arhitekturu izvoznika, nismo mogli unaprijed predvidjeti u kojim drugim alatima i automatizacijama bi ga bilo moguće ponovno koristiti. Automatizacija provjere kartice primjer je kako je "ispravna" arhitektura izvoznika našla svoj put u drugom alatu.

Provjera karata 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 prisutnost datoteka ovih vizualnih modela, već i samih modela, koristeći okvir za izvoz. Time je eliminiran ljudski faktor, kada je odjel za razvoj karata (LA) morao vjerovati odjelu za razvoj 3D modela (3D Art) da se koriste tehnički ispravni modeli.

Izgradnja distribucije

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

Više se ne koristi;
još uvijek su u razvoju;
namijenjena za sljedeće verzije proizvoda.

Na temelju osnovnog popisa objekata igre (root game objects) potrebno je izgraditi graf ovisnosti prema kojem se cijeli popis potrebni sadržaj. Ne postoji ništa lakše nego deserializirati model koristeći okvir izvoznika i "saznati" koji su drugi modeli potrebni (reference sadržaja).

Ishodi

Povijest razvoja našeg izvoznika pokazala je kako je od jednostavnog visoko specijaliziranog alata evoluirao u moćan sustav koji rješava svoje neposredne zadatke, a također je našao primjenu u drugim procesima proizvodnje sadržaja. Njegov uspješan razvoj i ponovna upotreba temelji se na modularnoj arhitekturi koja dopušta da se njegove pojedinačne "kocke" koriste za izgradnju drugih sustava.

U bliskoj budućnosti, izvoznik će imati još jedan test povezan s promjenom formata datoteke BigWorld Engine. Uvjereni smo da temeljna arhitektura neće imati nikakvih poteškoća i da će moći podržati rad s postojećim i 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;
  • Otvorena izvor: nije predviđeno ili predviđeno za povećanu naknadu;
  • Multiplayer: klijent-poslužitelj;
  • prednosti: moćan, podrška za sve najviše moderne tehnologije, optimizirano, podrška za iOS, jeftino za takve značajke;
  • Nedostaci: nije besplatno;
  • Programeri motora: BigWorld Tech, Inc.

    BigWorld Engine je najnapredniji 3D motor za kreiranje MMO igara. Na njemu se rade igre kao što su "World of Tanks", "Pealm of the Titans" s Wargaming.net-a i druge igre drugih svjetskih tvrtki za razvoj igara. Na ovom motoru napravljeno je više od 15 MMO igara. Razvio ga je BigWorld Technology.

    Optimizirani motor omogućuje stvaranje igara niske potražnje sa zadivljujućom grafikom. Motor vam omogućuje prijenos igara 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-poslužitelj motor. Za zvuk je podržana knjižnica FMOD, a sve druge knjižnice povezane su putem plug-in sustava. Radi s XML i MySQL bazama podataka. Alat 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 - 2999 dolara; BigWorld: Commercial Edition - po dogovoru pojedinačno.

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

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

    Službena stranica: http://www.bigworldtech.com





    Lanac alata BigWorld Technology pruža potpuni sustav za kreiranje MMOG sadržaja od kraja do kraja koji će poboljšati kvalitetu i pravovremenost vaše igre. Svi alati dizajnirani su za kooperativnu proizvodnju igraćih sredstava u velikom timskom okruženju, osiguravajući učinkovito korištenje resursa i nesmetan tok sadržaja.

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


    Ako vas zanimaju aktualne vijesti, spremni smo vam ponuditi trenutno najrelevantnije vijesti u svim smjerovima. Rezultati nogometnih utakmica, političkih događaja ili svjetskih, globalnih problema. Uvijek ćete biti svjesni svih događaja ako koristite našu divnu pretragu. Svijest o videozapisima koje pružamo i njihova kvaliteta ne ovisi o nama, već o onima koji su ih postavili na internet. Mi vas samo opskrbljujemo 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 ovisi o ekonomskom stanju raznih zemalja. Na primjer, uvoz i izvoz bilo kakvih prehrambenih proizvoda ili opreme. Isti životni standard izravno ovisi o stanju u zemlji, kao i o plaćama 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 upotrijebite našu pretragu.


    Danas je vrlo teško razumjeti političke intrige, a za razumijevanje situacije potrebno je pronaći i usporediti mnogo različitih informacija. Stoga za vas lako možemo pronaći razne govore zastupnika 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 stvarnostima.


    Međutim, ovdje možete pronaći ne samo razne vijesti iz cijelog svijeta. Također lako možete pronaći film koji će biti ugodno pogledati navečer uz bocu 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 vam možemo pronaći čak i najstarija i najteže dostupna djela, kao i svima poznate klasike – na primjer, Ratovi zvijezda: Carstvo uzvraća udarac.


    Ako se samo želite malo opustiti i u potrazi ste za smiješnim videima, onda i ovdje možemo utažiti vašu žeđ. Pronaći ćemo za vas milijun različitih zabavnih videa sa svih strana planeta. Kratke šale lako će vas razveseliti i zabaviti cijeli dan. Koristeći prikladan sustav 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 trebate. Osmislili smo ovu prekrasnu pretragu posebno za vas, kako biste mogli pronaći potrebne informacije u obliku videa i gledati ih na prikladnom playeru.