Kaip mes darome „World of Warships“: eksporto automatizavimas ir turinio tikrinimas. BigWorld Engine – Žaidimų varikliai – Failai žaidimų kūrėjams – Žaidimų kūrimas Didelis pasaulio žaidimų variklis

Šiame leidinyje mes ir toliau užduodame klausimus žaidimų kūrėjams. Šį kartą interviu duoda Michailas Živetsas, bendrovės projekto „“ techninis direktorius Wargaming.net.

NVIDIA WORLD: Koks grafikos variklis naudojamas jūsų projekte? Kokie yra minimalūs ir rekomenduojami Sistemos reikalavimai? Ar jie atsirado dėl tam tikrų savybių, ar sutelkėte dėmesį į tam tikrą 3D žemėlapių paplitimo lygį? Ar naudojatės naujausios kartos vaizdo plokščių pritaikymo neįgaliesiems funkcijomis, ar laikotės standarto?

„World of Tanks“ projekte naudojamas BigWorld grafinis variklis su savo modifikacijomis, kurias privalėjo padaryti dėl projekto specifikos. Variklio ypatybė yra dėmesys atviriems pasauliams su dinamiškai įkeltomis žemėlapio dalimis, kaip, pavyzdžiui, daroma World of Warcraft. Stengiamės naudoti technologijas, leidžiančias monitoriaus ekrane sukurti vaizdą, artimą mūsų menininkų eskizams ir pritaikyti juos prie sistemos reikalavimų.

NVIDIA WORLD: Ar NVIDIA ir ATI vaizdo plokštės labai skiriasi programavimo požiūriu? Ar galima tiesiog rašyti per „DirectX“ arba „OpenGL“ ir gauti efektyvų kodą abiem tiekėjams, ar reikia kiekvienam pardavėjui sukurti savo funkcijų versijas? Kokį metodą naudojote?

M. J.: Skirtingų gamintojų vaizdo plokštės turi savo specifinės savybės. Tai gali būti specialių tekstūrų formatų palaikymas arba prieiga prie tekstūrų iš viršūnių atspalvio. Tuo pačiu metu naudojant įprastą „DirectX“ arba „OpenGL“ API teikiamą funkcionalumą, skirtumai tarp dviejų gamintojų GPU yra minimalūs, o dėl ATI ir NVIDIA vaizdo plokščių skirtumų atsiranda daugiau papildomų funkcijų. nei bet kokie apribojimai. Kalbant apie „specialų elgesį“ su varikliu, „BigWorld“ nesuteikia lemiamo pranašumo nė vienam pardavėjui.

NVIDIA WORLD: Dėl kokių priežasčių skiriasi žaidimų greitis NVIDIA ir ATI kortelėse? Ar tai žaidimo variklio algoritmų savybė, ar tai labiau priklauso nuo žaidimo scenų? Tai yra, pavyzdžiui, viename žaidime yra daugiau „high-poly“ scenų, o kitame yra didelis perpildymo indikatorius arba daug permatomų tekstūrų su sudėtingu anti-aliasing, todėl vaizdo plokštės, turinčios didesnį užpildymą, veikia geriau? („Ar jūsų programai patiko kokia nors architektūra?“).

M. J.: Skirtumai daugiausia susiję su techninės įrangos ypatybėmis (atminties magistralių pločio skirtumais, rastravimo vienetų, šešėlių vienetų ir kt. skaičiumi), taip pat tvarkyklių diegimu. Kuo labiau subalansuotas procesoriaus ir GPU apkrovimas ir kuo geriau sutvarkyta scena, tuo mažiau vaizdo plokštės funkcijos turėtų turėti įtakos bendram veikimui. Tai apima kruopštų požiūrį į tekstūrų skaičių ir skiriamąją gebą, mažą dalelių ir skaidrių objektų perpildymą, LOD naudojimą, objektų grupavimą į partijas ir t. t. – visa tai vienodai krenta ant variklių kūrėjų ir žaidimų dizainerių pečių.

NVIDIA WORLD: Testuojant vaizdo plokštes, kaip taisyklė, naudojami maždaug tie patys žaidimų rinkiniai. Ar tinkamas toks apibendrinimas, kai rodomi skirtingų žanrų, pvz., 3D šaudyklės, trečiojo asmens RPG ir strateginių žaidimų, testų rezultatai. Ar populiarūs etalonai rodo jūsų žaidimo našumą?

M. J.: Paraiškų neskirstyčiau pagal žanrą. Viskas yra išimtinai jų naudojamų algoritmų kūrėjų rankose. Bet kokiu atveju kūrėjai stengiasi įkelti vartotojo sistemą kiek įmanoma subalansuotai ir tuo pačiu pasiekti maksimalų produkto patrauklumą.

Žvelgiant į FPS skaičius tokiuose žaidimuose kaip Crysis ar naujausias Need for Speed, galite apytiksliai įsivaizduoti daugelio kitų šiuolaikinių žaidimų našumą, todėl galime drąsiai teigti, kad šie testai yra gana atskleidžiantys. Šio lygio žaidimai gali būti naudojami kaip vaizdo plokščių etalonas, nes esant aukštos kokybės nustatymams jie maksimaliai apkrauna grafikos posistemį.

NVIDIA WORLD: Kokia yra procesoriaus apkrovos padidėjimas didėjant skiriamajai gebai? Ar tiesa, kad norint padidinti modelių detalumą, siekiant sumažinti jų „kampiškumą“, reikia daugiau procesoriaus galios animacijai, nematomų primityvų pjovimui, šešėlių tūrių kūrimui ir pan.? Ar jūsų žaidime buvo toks poveikis?

M. J.: Padidėjusi skiriamoji geba neturėtų tiesiogiai paveikti procesoriaus apkrovos, nebent, žinoma, variklis automatiškai padidina modelių daugiakampį, papildomą teseliaciją ir daugiau modelio animacijos kadrų. Jei procesoriaus apkrova be jokios priežasties didėja didėjant raiškai, problema slypi arba žaidimo kode, arba vaizdo plokštės tvarkyklėje.

NVIDIA WORLD: Ar gali padidėti procesoriaus apkrova, kai įjungtas anizotropinis filtravimas? Tas pats pasakytina ir apie „Full Scene Antialiasing“. Jei tam reikia, kad visa scena būtų nupiešta dvigubai didesne raiška, teoriškai gali padidėti ir trikampių skaičius.

M. J.: Atsakymas į abu klausimus yra ne. Jei įjungtas anizotropinis filtravimas, padidės tekstūravimo vienetų apkrova. Įjungus FSAA, pikselių vamzdynas atliks daugiau darbo. Kalbant apie didesnę skiriamąją gebą, padvigubėjus pikselių skaičiui, padidės pikselių šešėliavimo, rasterizatorių ir TMU operacijų skaičius.

NVIDIA WORLD: Skaičiavimų perkėlimo į GPU šešėlius procesas vyko labai ilgai, iš pradžių tai buvo T&L, karpymas. Ar dabar skaičiuojama GPU modelių animacija? Kas, visų pirma, lieka 3D varikliui procesoriaus skaičiavimams? (Ką skaičiavote su GPU, be T&L?).

M. J.: Mūsų projekte naudojamas variklis neatlieka jokių GPU skaičiavimų. Teoriškai, jei, tarkime, tektų skaičiuoti daugelio objektų fiziką realiu laiku, galėtume paimti tą patį PhysX , kuris puikiai atlieka NVIDIA GPU skaičiavimus, tačiau dėl projekto specifikos turime pakankamai procesoriaus galimybių.

NVIDIA WORLD: Pastaraisiais metais vaizdo greitintuvai tapo „protingais“, jie patys naudoja nematomų primityvų nupjovimo būdus, tokius kaip: hierarchinis z-buferis. Kiek jie veiksmingi? Ar dabar galima tiesiog sukišti visus trikampius į vaizdo greitintuvą, kad jis pats viską nupieštų? Pirmųjų 3D žaidimų laikais (Quake ir Unreal serijos) buvo naudojami sudėtingi metodai, siekiant sumažinti atvaizduotus trikampius, BSP medžius ir kt. Kiek tai aktualu dabar?

M. J.:Žinoma, nereikėtų tikėtis, kad vaizdo greitintuvas savarankiškai nustatys, kuriuos objektus verta atvaizduoti, o kurie nebus matomi. Turime taikyti ankstyvo nereikalingo pašalinimo techniką, nes perteklinės informacijos perdavimas į GPU sumažina našumą. Taigi, problema vis dar aktuali, nors ir daug mažesniu mastu. Ypač tais atvejais, kai tenka piešti didelis skaičiusįvairių objektų. Faktas yra tas, kad šiuolaikinės kortelės yra ne tik užsiėmusios nereikalingų dalykų pašalinimu, bet ir apkraunamos sudėtingesnių apšvietimo tipų skaičiavimais ir pan. Atitinkamai, jei yra galimybė ir resursai padėti vaizdo plokštei, tai turėtų būti padaryta.

Pavyzdžiui, BigWorld variklyje, norint nupjauti nematomus objektus prieš piešimo etapą, naudojama Umbra biblioteka. Scena yra BSP medis, kuris taip pat leidžia greitai ir efektyviai išmesti scenos fragmentus, kurių akivaizdžiai nėra.

NVIDIA WORLD: Kažkada buvo tokia situacija, maždaug P4 krizės metu, kad sistemos kliūtis buvo procesorius, kuris negalėjo „įkelti“ vaizdo greitintuvo, o padidinti FPS žaidimuose, pirmiausia, viršų. Reikalingas galutinis procesoriaus modelis. Ar dabar yra panašus ryšys tarp procesoriaus ir GPU, ar procesoriai peržengė tam tikrą kritinį našumo lygį ir ar galite paimti nebrangų procesorių ir galingą vaizdo plokštę? Tai reiškia žaidimus, kuriuose akcentuojama grafika, tokiu stiliumi kaip Quake ir Doom.

M. J.: Silpnas procesorius su galinga vaizdo plokšte yra sistemos kliūtis, nes daugelis operacijų tiek žemo lygio (valdymo komandų srauto formavimas tvarkykle), tiek aukšto lygio (taikoma logika - žaidimo kilpa, dalelių atnaujinimas, simbolis). animacija, fizika, garsas ir kt.) tiesiogiai priklauso nuo procesoriaus našumo. Svarbų vaidmenį atlieka ir procesoriaus talpyklos atminties dydis, kuris pigiuose modeliuose yra gana mažas.

Efektyviausiam vaizdo plokštės darbui taip pat reikalingi sistemos resursai, didelės spartos sistemos magistralė ir pakankamas kiekis geros spartos RAM. Dažnai vaizdo posistemis negali parodyti, ką jis sugeba, vien dėl to, kad CPU nespėja į jį perkelti reikiamų duomenų. Taigi, kalbant apie išteklių taupymą, pakanka įsigyti vidutinį procesorių, šiek tiek aukštesnę nei vidutinę pagrindinę plokštę, bet negailėti vaizdo plokštės ir RAM.

NVIDIA WORLD: „DirectX“ nuo versijos iki versijos vis labiau primena grafikos variklį. Ar tiesa, kad šiais laikais 3D programa praktiškai susideda iš Direct3D API iškvietimų ir joje atliekama didžioji dalis skaičiavimų? Kaip vertinate Naujausia versija„DirectX“? Ar jis tapo beveik visaverčiu varikliu ir kiek dar versijų tam reikės?

M. J.:„Direct3D“ negali būti laikomas atskiru grafikos varikliu ir mažai tikėtina, kad artimiausioje ateityje „Microsoft“ imsis žingsnio kurdama savo žaidimų variklį. Tai nepraktiška dėl daugelio priežasčių, įskaitant daugybę skirtingų žaidimų projektų variklių reikalavimų skirtumų. Pavyzdžiui, yra automobilio simuliatorius, realaus laiko strategija ir 3D šaudyklė skiriamieji bruožai, kurios neleidžia vienodai efektyviai naudoti to paties variklio visais trimis atvejais.

Dešimtoje „Direct3D“ versijoje atsirado naujų abstrakcijos lygių dirbant su ištekliais ir papildomomis galimybėmis kurti šešėlius, atsirado tokių gudrybių kaip „Stream Output“. Tuo pačiu metu D3D išliko toks, koks buvo – žemo lygio API, kuria naudodamasis kūrėjas gali sukurti žaidimo variklį konkrečiai užduočiai atlikti.

NVIDIA WORLD: Apskritai, Pastaruoju metu vyksta žaidimų ir 3D variklių „globalizacija“. Yra keletas populiariausių platformų, kuriose kuriama daug žaidimų. Ar tai objektyvus procesas? Ar dabar kūrėjui prasminga rašyti savo variklį, kai galite licencijuoti jau paruoštą visas funkcijas turintį variklį. Pavyzdžiui, neseniai buvo išleista kita Unreal Engine versija, kuri jau buvo atsisiųsta dešimtis tūkstančių kartų. Kiek laiko liko iki momento, kai visuose žaidimuose bus naudojamas vienas ar du 3D varikliai?

M. J.: Mes naudojame „BigWorld“ ir iki šiol esame juo patenkinti. Kalbant apie „globalizaciją“, vargu ar įvyks stebuklas ir „CryTek“, „Epic“ ir nemažai kitų nuspręs padovanoti vieni kitiems dalelę žaidimų variklių rinkos. Nepamirškite, kad paprastai žaidimai, sukurti tuo pačiu varikliu, yra labai panašūs, ir tai ne visada yra gerai. Greičiausiai variklių skaičius tik augs, specializacija bus vis siauresnė. Bet kokiu atveju visada bus unikalių variklių.

NVIDIA WORLD: Ar tiesa, kad naujausios vaizdo plokštės tapo labai galingos neapdorotos galios požiūriu ir, nesiskiriančios nuo ankstesnių modelių efektais, gali atskleisti savo potencialą, visų pirma sistemose su dideliais monitoriais (nuo 1920x1200) anti- slapyvardžio ir visiško anizotropinio filtravimo režimai? Ar žmogui, turinčiam monitorių, pavyzdžiui, 1280x1024, o ne filtravimo ir AA gerbėjui, prasminga pirkti naują vaizdo plokštę, pvz., GTX285 ir Radeon naujame procese?

M. J.: Sutinku, taip yra. Tačiau nepamirškite apie tinkamus monitorius, kurių spalvų kokybė yra didelė, raiška, kontrastas. Jūs gausite daug daugiau malonumo iš žaidimo. Tačiau net ir nusprendus nekeisti mėgstamo monitoriaus, verta pakeisti kortelę, nes tai tikrai padidins jūsų sistemos našumą, nes dalis senų skaičiavimo algoritmų naujose kortelėse jau yra įdiegta aparatinėje įrangoje.

NVIDIA WORLD: Anksčiau žaidimų kūrėjai konservatyviai naudojo naujausių vaizdo plokščių ypatybes ir efektus, nes daugiausia dėmesio skyrė šiuo metu labiausiai paplitusioms kortelėms. Tai yra, pavyzdžiui, išeina sąlyginis „DirectX n“, o žaidimai vis dar rašomi naudojant „DirectX n-2“. Ar pastaruoju metu situacija pasikeitė? Ar lengva žaidime naudotis naujomis neseniai išleistų vaizdo greitintuvų efektų galimybėmis?

M. J.: Jei „Windows 7“ būtų pasirodžiusi prieš porą metų arba „Microsoft“ būtų atsisakiusi minties „DirectX 10“ susieti su „Windows Vista“, žaidimų kūrėjai jau seniai būtų perėję bent prie dešimtosios API versijos. Tačiau dabar turime tai, ką turime: visus hitus Pastaraisiais metais naudoti DX9, o DX10 palaikymas dažnai yra rinkodaros triukas.

NVIDIA WORLD: Kaip intensyviai žaidimai dažniausiai naudoja naujausių, išleidimo metu, vaizdo greitintuvų galią? Pavyzdžiui, ar dabar išnaudojamos visos GT200 architektūros galimybės? Ar tai tipiška situacija, kai išleidimo metu naujas GPU tiesiog šiek tiek geriau atlieka esamus žaidimus, tačiau laikui bėgant, optimizuojant žaidimus naujai architektūrai ir pritaikant naujas funkcijas, atrodo, kad jo vertė auga? Kiek jūsų žaidime naudojamos naujos funkcijos?

M. J.: Kalbant apie naują architektūrą ir jos vieningą šešėlių modelį, laimėjo beveik visi. GPU viršūnių ir pikselių konvejerių darbo krūvis išsilygino ten, kur buvo didelių iškraipymų viena ar kita kryptimi. Kalbant apie naujas funkcijas, kuo didesnis procentas vaizdo plokščių, palaikančių tam tikrą funkciją, tuo labiau žaidimų kūrėjai jas naudos savo projektuose. Mūsų naudojamas BigWorld yra pagrįstas DirectX 9 ir SM 3.0 galimybėmis.

NVIDIA WORLD: Dabar internetiniai žaidimai tapo labai populiarūs. Ar tai paliko pėdsaką vaizdo greitintuvų pramonėje? Kadangi tokių žaidimų varikliai yra orientuoti į pagrindinį funkcijų rinkinį, kurį turi nemaža dalis vartotojų, o FPS vis dar riboja interneto ryšys, pirkti aukščiausios klasės vaizdo greitintuvą internetiniams žaidimams atrodo beprasmiška. Ar tai stabdo žaidimų grafikos vystymąsi? Išpopuliarėjo „pilno 2D“ naršyklių žaidimai, kuriems nereikia greitintuvo.

M. J.: Jei pažvelgtumėte į „World of Warcraft“ abonentų skaičių ir palygintumėte jį su, tarkime, „Aion“ ar „Age of Conan“, atsakymas akivaizdus: internetiniams žaidimams pirmiausia svarbu žaidimo eiga, plėtra. žaidimų pasaulis, jaudinantis PvP komponentas ir kiti momentai, kurie nėra tiesiogiai susiję su grafika. Tai nėra stabdys grafikos vystymuisi, nes žaidėjai negyvena vieni MMORPG žaidimuose. Nauji šaudyklės, vairavimo simuliatoriai ir RPG neišvengiamai ir toliau kels 3D grafikos kokybės kartelę žaidimuose. MMO žaidimai lėtai, bet užtikrintai juda ta pačia kryptimi, siekdami pritraukti didesnę žaidimų auditoriją. Beje, dabar sklando gandai, kad ta pati Blizzard kuria naują MMOG ir mažai tikėtina, kad jie savo naujame projekte naudos 8 metų senumo variklį.

NVIDIA WORLD: Kokiu mastu SLI ir Crossfire technologijoms reikalingas žaidimo kūrėjo palaikymas? Dėl ko skiriasi šių technologijų efektyvumas skirtingiems žaidimams? Su žaidimo variklio ypatybėmis ar žaidimo scenomis? Kiek naudos jūsų žaidimui teikia SLI ir Crossfire naudojimas?

M. J.: Variklio optimizavimas dviem vaizdo plokštėms yra labai sunkus procesas. Būtina kruopščiai organizuoti kompaktišką duomenų perdavimą į GPU ir subalansuoti variklį pagal apkrovą tarp GPU ir procesoriaus. Jei programa, dirbant su viena kortele, jau remiasi į procesorių arba duomenų perdavimą per magistralę, teks pamiršti apie SLI ar Crossfire. Tiesą sakant, tai išskiria tam tikrus žaidimus dirbant su suporuotais greitintuvais. Mūsų žaidimas iki šiol SLI našumą padidina apie 10%, tačiau dabar optimizuojame daugybę modulių, kad pagerintume našumą tokiais režimais.

NVIDIA WORLD: Ilgą laiką daug kalbama apie kompiuterių rinkos krizę ir laipsnišką žaidimų perėjimą prie konsolių. Tačiau tai dar neįvyko. Ar to galima tikėtis ateityje? Ar tiesa, kad dėl standartinės techninės įrangos priedėlių grafiką programuoti daug lengviau? O gal amžinas priedėlių atsilikimas pagal „geležies“ lygį išlygina susivienijimą?

M. J.:Žaidimų pultai turi nemažai pranašumų kūrėjui (viena platforma, vienas funkcijų rinkinys ir dėl to vienodas našumas visiems žaidėjams), tačiau kompiuterinių žaidimų ir ypač internetinių žaidimų rinka nuolat auga, todėl neturėtumėte tikėtis bendro perėjimo prie konsolių.išlaidos. Nepamirškite, kad žaidimų konsolių su galingesne aparatūra išleidimą stabdo patys konsolių gamintojai, bandydami susigrąžinti ankstesnės kartos konsolių išleidimo išlaidas parduodami dabartinius žaidimus. Todėl prieš išleidžiant Playstation 4 ar Xbox 720, praeis nemažai laiko ir bus išleista daug projektų, kurie orientuoti į dabartinės kartos konsoles. Kai kuriais atvejais, pavyzdžiui, „Nintendo Wii“, pažangi aparatinė įranga yra visiškai nereikalinga norint pasiekti puikių rezultatų.

NVIDIA WORLD: Ar tiesa, kad žaidimuose dabar beveik visuotinai naudojamas projekcijos metodo derinys šešėliams kurti iš modelių ir šešėlių tūrių metodas su dinamiškai arba statiškai apskaičiuotais šešėlių tūriais ant judančių objektų, modelių ir ginklų bei iš judančių modelių dalių ant savęs ?

M. J.: Vietoj šešėlių tūrių dažnai naudojama ta pati projekcijos technika su modifikacijomis (kaskadiniai šešėlių žemėlapiai, atskiras šešėlių žemėlapis savaiminiam šešėliavimui ir kt.). Šešėlių tūriai suteikia ryškų šešėlio kraštą, tačiau kenčia nuo didelio užpildymo greičio, papildomų procesoriaus skaičiavimų ir sudėtingo šešėlinių minkštųjų kraštų įgyvendinimo.

NVIDIA WORLD: Ar esami šešėlių metodai turi ateitį kuriant dinamišką visos scenos apšvietimą? Tai yra, palaipsniui didinant vaizdo greitintuvų galią, jie gali būti naudojami skaičiuojant visą apšvietimą dinamikoje? O gal reikės naujų metodų?

M. J.: Projekciniai šešėliai nuėjo ilgą kelią šiuolaikiniuose žaidimuose ir kai kurios jų modifikacijos bus naudojamos dar ilgai, kartu su papildomais efektais, tokiais kaip SSAO. Žinoma, jei GPU yra nemokamas spindulių sekimas, tada nei projekciniai, nei tūriniai šešėliai neturi jokių šansų.

NVIDIA WORLD: Kaip vertinate iš anksto apskaičiuotą spinduliuotės perdavimo technologiją, atsižvelgiant į taikymą žaidimuose? Ar ketinate jį naudoti ateityje?

M. J.: PRT reikalauja ilgų skaičiavimų, nesuderinamas su animaciniais modeliais ir iš principo nesuteikia didelių vizualinių pranašumų, lyginant su ta pačia Ambient Occlusion. Kaip pavyzdį paimkite „Halo 3“, kuris naudoja PRT, bet niekuo neišsiskiria apšvietimo kokybe, palyginti su „Gears of War“ ar „Crysis“.

NVIDIA WORLD: „DirectX 11“ ir „Fermi“ architektūra, ar verta laukti „DirectX 11“ greitintuvų ir žaidimų, ar tai yra praeinanti API versija? Ar jaunesniojo modelio DirectX 11 greitintuvas, prastesnis absoliučia galia, užpildymo rodikliu, gali būti geresnis už senąjį, bet galingesnį modelį su DirectX 10 palaikymu? Ar galime tikėtis kažkokio kokybinio šuolio žaidimų grafikoje išleidus Fermi architektūrą, ar tai bus didžiulis augimas, daugiau trikampių, didesnės raiškos greičio ir pan.? Jei „Fermi“ būtų prieinama tuo metu, kai buvo sukurtas jūsų žaidimas, kuo žaidimas būtų kitoks grafikos požiūriu?

M. J.: Vienuoliktoji „DirectX“ versija siūlo daugiau galimybių skaičiuoti naudojant GPU, tuo tarpu, palyginti su DX10, ji neatneša jokių esminių 3D grafikos patobulinimų. Kalbant apie Fermi, mano nuomone, įdomiausia funkcija yra visiškai valdomas 3D modelių teseliavimas.

Michailas Živetsas, projekto „World of Tanks“ techninis direktorius, Wargaming.net

Po premjeros uždarų „World of Warships“ seansų „Gamescom“ ir „IgroMir“ svetainėse, oficialus žaidimo pristatymas vis labiau artėja. Uždaras alfa testavimas šiuo metu įsibėgėja, o mes, „Wargaming“ Sankt Peterburgo padalinio „Lesta Studio“ kūrėjai, dar turime išspręsti daugybę problemų. Tuo pačiu metu daug kliūčių vis tiek pavyko išvengti. Žemiau yra istorija apie tai, kaip mes pritaikėme savo variklio eksportuotoją laivų poreikiams ir sukūrėme turinio tikrinimo procesą.

Standartinis variklio pristatymas

Bet kuriame variklyje yra įrankių rinkinys, skirtas 3D modeliams eksportuoti iš 3D redaktorių į savo duomenų formatą. Mūsų „BigWorld“, kurio pagrindu sukurtas „World of Tanks“, nėra išimtis. Jis palaiko eksportavimą iš 3D Max ir Maya. Beveik bet koks žaidimo projektas reikalauja standartinių eksportuotojų pritaikymo prie projekto specifikos. Mūsų projekte laivų modeliai yra specifiniai.

Pirmoji pritaikyto eksportuotojo iš Maya versija tiesiog „išmokė“ jį atpažinti sudėtingesnę laivo scenos struktūrą. Prie esamo C++ kodo pridėtas tam tikras Python valdymo kodas, taip pat Maya įskiepis su vartotojo sąsaja wxWidget. Tai atrodė maždaug taip:


pritaikyto eksportuotojo vartotojo sąsaja

Gautas įrankis turėjo daug trūkumų.

Eksportuoti buvo galima tik dalyvaujant vartotojui, kuris turėjo „pasakyti“ eksportuotojui, kas yra scenoje. Šio įrankio naudojimas automatizuojant įvairius procesus, pavyzdžiui, automatinis turinio patikrinimas platinimo kūrimo etape, nebuvo svarstomas.

Eksportuotojas reikalavo, kad vartotojas žinotų apie toli gražu ne akivaizdžius parametrus, dirbo lėtai, praktiškai nepalaikė scenos tikrinimo, be to, palaikymui reikėjo didžiulių išteklių.

Architektūra buvo pagrindinė problema plečiant funkcionalumą ateityje. Eksportavimas iš tikrųjų buvo atominė operacija (spagečių funkcijų rinkinys), kurios metu duomenys iš vienos struktūros (įkelta Maya scena) į kitą struktūrą (BigWorld) buvo perkelti tiesiai į fizinius failus. Kai serializatoriai ir verslo logika yra įgyvendinami „monolite“, o duomenų modelio tiesiog nėra, tada neįmanoma pridėti duomenų apdorojimo (išankstinio / po apdorojimo), taip pat pakartotinio naudojimo (pakartotinio kodo naudojimo) serializatorių ir duomenų modelio. kiti įrankiai, įgyvendinantys savo verslo logiką. Nebuvo įmanoma sukurti sudėtingesnių turinio gamybos procesų.

Laikui bėgant, pridėti naujų funkcijų prie esamo kodo tapo beveik neįmanoma. Eksportuotoją nuspręsta perrašyti nuo nulio, įdedant į jį naują architektūrą.

atšiauri kasdienybė

Mūsų projekto lygis padidino turinio kokybės, sudėtingumo ir apimties reikalavimus. Mūsų studija per pastaruosius porą metų labai išaugo. Dabar turime galimybę skirti pakankamai išteklių užduotims, susijusioms su turinio gamyba. Pas mus atvyko profesionalai, turintys puikų architektūros kūrimo ir technologijų C++/C# išsilavinimą. Tuo pačiu metu eksportuotojo kūrėjams tai buvo pirmoji Python ir Maya API naudojimo patirtis. Tai sukėlė papildomų pavojų, į kuriuos reikėjo atsižvelgti.

Eksportuotojo pertvarkymą įvertinome per du ar tris žmogaus mėnesius. Kuriant žaidimą neapsieisite be optimizmo.

Mes įtraukėme šias rizikas:

Formalių reikalavimų nebuvimas;
Python žinių lygis;
Maya API sudėtingumas;
primityvų apdorojimo algoritmų pertvarkymas.

Daug laiko praleista renkant reikalavimus iš neoficialių šaltinių, tokių kaip kūrėjai, tapę vadovais, senbuviai, sukimo laukai ir esamo eksportuotojo kodas. Šios žinių dalys buvo formalizuotos ir įrašytos kaip reikalavimai, specifikacijos ir UML diagramos programoje „Confluence“.

Pirmieji prototipai parodė, kad reikia naudoti vardų erdvių ir Python modulių koncepciją (__init__.py). Taip pat buvo sukurtas mechanizmas, leidžiantis „skaidriai“ naudotis C ++ bibliotekų (.pyd) funkcijomis.

Apie Maya API sudėtingumą ir sudėtingumą būtų galima parašyti atskiroje knygoje. Bet kokiam funkcionalumui reikėjo prototipų kūrimo, konsultacijų su 3D menininkais ir variklio kūrėjais (perteikimas).

Standartinis eksportuotojas turėjo savo pačių įdiegtą daugybę algoritmų, pavyzdžiui, daugiakampių trianguliavimą, įdėtųjų mazgų transformacijos matricų skaičiavimą ir kt. Atsisakėme jų ir naudojome Maya API, kuri labai pagerino eksportuotojo veiklą.

Pats laikas prie Merfio dėsnių pridėti taisyklę, kad bet koks jūsų sumanytas projektas tikrai bus įgyvendintas ne daugiau kaip per „x3“ numatyto laiko, jei jo neatsisakysite.

Rezultatas buvo vertas mūsų įdėtų pastangų. Galiausiai net mūsų pagrindinis menininkas, atsakingas už modelių eksportą, po kelių mėnesių veiklos nustatė, kad mūsų eksportuotojas „beveik tobulas“.

Pažiūrėkime po gaubtu

Mūsų studija aktyviai naudoja Python scenarijus. Mes bandėme įdiegti visą eksportuotoją. Natūralu, kad Python netinka apdoroti didelius dvejetainius duomenis - tokius kaip viršūnių konteineriai (viršūnių buferis), viršūnių indekso konteineriai (indekso buferis) ir kt. Tokių konteinerių duomenų modelis ir serializatoriai buvo įdiegti C ++ kaip biblioteka (. pyd), kurie natūraliai tinka Python duomenų modeliui. Visa verslo logika buvo įdiegta Python.

Eksportuotojo sistemą buvo planuojama naudoti ne tik „rankinio“ eksporto iš Maya užduotims atlikti, bet ir bet kokioms užduotims, kur jos funkcionalumą būtų galima panaudoti pakartotinai, pavyzdžiui, automatizuoti turinio patikrinimą. Iš bet kurio sukurto įrankių rinkinio reikalaujame sąsajų (API), skirtų Python, komandų eilutės (komandinės eilutės) ir vartotojo sąsajos įrankių.

Architektūra

Eksportuotojo sistemos architektūra yra modulinė, daugiasluoksnė. Yra fizinis ir loginis sluoksniai, taip pat domeno sluoksnis. Kiekviename sluoksnyje yra atskiri moduliai: duomenų modelis, verslo logika, serializatoriai, taip pat keitikliai, galintys konvertuoti vieno sluoksnio duomenų modelį į kito sluoksnio duomenų modelį. Fiziniai ir loginiai sluoksniai iš tikrųjų įgyvendina ORM architektūros analogą.

Domeno sluoksnio architektūra sukurta patogiam duomenų modelio apdorojimui verslo logika. Jis yra visiškai smėlio dėžėje ir jame nėra prielaidų, kaip jis bus serijinis į fizinę saugyklą.


Sluoksniuota eksportuotojo architektūra

Eksporto procesas

Sluoksniuota architektūra pristato tam tikras eksporto proceso ypatybes. Tiesą sakant, mes deserializuojame du (ar daugiau) modelius iš skirtingų šaltinių (Maya ir BigWorld Engine). Po to šie modeliai sujungiami į vieną naują. Tada naujasis modelis serializuojamas į BigWorld-Engine formatą.


Eksporto procesas

Turinio gamybos proceso lankstumas

Įdiegta architektūra leidžia gana lengvai kurti sudėtingus turinio gamybos procesus. Pavyzdžiui, mūsų pagrindinis laivo modelis technologiškai sudarytas iš trijų atskirų majų scenų, kurių kiekvieną vienu metu kuria skirtingi skyriai:

Pirmoje scenoje yra vizualinis modelis ir susidūrimo modelis.
Antroje scenoje yra balistinis modelis.
Trečiajame yra efektų prievadai.

Be to, variklio įrankių rinkinys (redaktoriai) prideda (redaguoja) savo duomenis prie išvestinio variklio formato modelio (ketvirtoji scena).

Eksportuotojas nesunkiai išsprendžia nebanalią užduotį – visas keturias scenas sujungti į vieną gautą laivo modelį.

Turinio patikrinimas

Turinio tikrinimo sistema leidžia ieškoti turinio klaidų tiek kiekviename sluoksnyje (šaltinyje) atskirai, tiek ir gautame turinyje. Dabar tikrintojų skaičius siekia kelias dešimtis. Automatinis turinio tikrinimas yra integruotas į platinimo rinkinio kūrimo procesą, kuris leidžia kuo labiau pašalinti žmogiškąjį faktorių ir užtikrinti turinio vientisumą bei techninį grynumą.


Laivo modelio patikrinimo Maya pavyzdys

Turinio biudžetai ir antis vonioje

Svarbi turinio tikrinimo proceso dalis yra biudžetų tikrinimas, pvz., daugiakampių biudžetų tikrinimas. Toliau pateiktame paveikslėlyje visų pirma parodyta informacija apie trikampių skaičių kiekvienos vietos vizualiniam modeliui:


Maya UI papildinys

Ryškus tokio patikrinimo reikalingumo pavyzdys – kolegų man pasakyta istorija apie vieną iš ankstesnių projektų. Žemėlapyje buvo užstatytas sklypas su nesugriaunamais namais. Vos kamera nukreipė žvilgsnį į šią sritį, FPS iš karto smarkiai sumažėjo. Ištyrus problemą paaiškėjo, kad vieno namo viduje buvo vonia, kurioje plaukė maža „plastikinė“ antis. Visa tai būtų atrodė kaip juokinga menininkų išdaiga, jei ne faktas, kad anties modelyje buvo apie milijonas daugiakampių.

Praktiškai labai sunku laikytis biudžeto vertės. Daugelis modelių yra objektyvios išimtys. Biudžeto vertės nustatymas kaip diapazonas taip pat neišsprendžia problemos, nes laikui bėgant modelių daugiakampiai tiesiog pradeda linkti į viršutinę diapazono vertę. Mūsų atveju planuojame keisti asmeninius biudžetus tų modelių, kurie neatitinka standartinio tokio tipo modelių biudžeto.

Turinio apdorojimas

Kiekviename eksporto etape reikalingas apdorojimas (išankstinis/papildomas apdorojimas). Pavyzdžiui, prieš konvertuojant Maya sluoksnio loginių duomenų modelį į oro gynybos pabūklų domeno duomenų modelį, ginklo karkasas turi būti pasuktas 45 laipsnių Y ašyje ir skeletas pašalintas. Mūsų architektūra leido skaidriai integruoti įvairius apdorojimo būdus bet kuriame eksporto etape.




Modelio pavyzdys prieš ir po išankstinio apdorojimo

x64 palaikymas

Visai neseniai mūsų atlikėjai masiškai migravo iš 32 bitų Maya 2012 į 64 bitų Maya 2014. Kadangi eksportuotojas beveik visas parašytas Python, problemų su x64 palaikymu beveik neturėjome. Tik biblioteka (.pyd), įdiegta C ++, reikalavo šiek tiek „šamanizmo“.

Dabar eksportuotojas gali būti lengvai naudojamas tiek x32, tiek x64 procesuose, nes jis pats nustato ir įkelia reikiamą C ++ bibliotekos komplektą (.pyd).

Kortelės patikrinimas

Kurdami eksportuotojo architektūrą negalėjome iš anksto numatyti, kokiuose kituose įrankiuose ir automatikose ją bus galima panaudoti pakartotinai. Kortelių tikrinimo automatizavimas yra pavyzdys, kaip „teisinga“ eksportuotojo architektūra atsidūrė kitame įrankyje.

Žemėlapio tikrinimas sukuria ir patikrina žemėlapio priklausomybės grafiką nuo kitų jame esančių objektų. Visų pirma, žemėlapyje naudojami vaizdiniai kraštovaizdžio (akmenys, ledkalniai), pastatų (namai, angarai, prieplaukos), įrangos (lėktuvai, laivai) ir kt.

Žemėlapio tikrintuvo ypatumas yra tas, kad jis gali patikrinti ne tik šių vaizdinių modelių failų buvimą, bet ir pačius modelius, naudodamas eksportuotojo sistemą. Taip buvo pašalintas žmogiškasis faktorius, kai žemėlapių kūrimo skyriui (LA) tenka „paimti žodį“ iš 3D modelių kūrimo skyriaus (3D Art), kad naudojami techniškai teisingi modeliai.

Paskirstymo kūrimas

Eksportuotojo sistema taip pat buvo panaudota rengiant turinio paketą platinimui. Paskirstymas neturėtų apimti modelių, kurie:

Nebenaudojamas;
vis dar kuriami;
skirtas būsimoms gaminio versijoms.

Pagal pagrindinį žaidimo objektų sąrašą (root game objects) reikia sudaryti priklausomybės grafiką, pagal kurį visas sąrašas reikalingas turinys. Nėra nieko lengviau, kaip deserializuoti modelį naudojant eksportuotojo sistemą ir „sužinoti“, kokių kitų modelių reikia (turinio nuorodos).

Rezultatai

Mūsų eksportuotojo kūrimo istorija parodė, kaip jis iš paprasto labai specializuoto įrankio virto galinga sistema, sprendžiančia neatidėliotinas užduotis, taip pat rado pritaikymą kituose turinio gamybos procesuose. Sėkmingo kūrimo ir pakartotinio naudojimo pagrindas yra modulinė architektūra, leidžianti naudoti atskirus jos „kubus“ kuriant kitas sistemas.

Netolimoje ateityje eksportuotojo laukia dar vienas išbandymas, susijęs su BigWorld Engine failo formato keitimu. Esame įsitikinę, kad pagrindinė architektūra nepatirs jokių sunkumų ir galės dirbti tiek su esamu, tiek su nauju failų formatu.

  • Žanro dėmesys: bet kokio žanro 3D MMO;
  • Platforma: PC, PS3, Xbox 360, iOS (iPad), žiniatinklis;
  • Programavimo kalba: C++, Python
  • Licencija: nepriklausomas ir komercinis;
  • Atviras šaltinis: nesuteiktas arba numatytas padidintas mokestis;
  • Kelių žaidėjų: kliento serveris;
  • Privalumai: galingas, labiausiai palaiko šiuolaikinės technologijos, optimizuotas, iOS palaikymas, pigus tokioms funkcijoms;
  • Trūkumai: nėra teikiama nemokamai;
  • Variklių kūrėjai: Big World Tech Inc.

    BigWorld Engine yra pažangiausias 3D variklis MMO žaidimams kurti. Jis sukūrė tokius žaidimus kaip „World of Tanks“, „Pealm of the Titans“ iš Wargaming.net ir kitus žaidimus iš kitų pasaulinių žaidimų kūrimo kompanijų. Šiuo varikliu buvo sukurta daugiau nei 15 MMO žaidimų. Jį sukūrė „BigWorld Technology“.

    Variklio optimizavimas leidžia kurti mažos paklausos žaidimus su nuostabia grafika. Variklis leidžia perkelti žaidimus į iOS. Parašyta C++ programavimo kalba, žaidimo logika įgyvendinta patogia Python skriptų kalba. Yra galingi įrankiai ir kliento-serverio variklis. Garsui palaikoma FMOD biblioteka, o visos kitos bibliotekos yra prijungtos per papildinių sistemą. Veikia su XML ir MySQL duomenų bazėmis. Įrankių rinkinyje yra galingas pasaulio redaktorius, modelių rengyklė ir dalelių rengyklė.

    Tai labai prieinama kaina. „BigWorld: Indie Edition“ kūrimas kainuoja tik 299 USD; BigWorld: Indie Source Edition – 2 999 USD; BigWorld: Commercial Edition – deramasi individualiai.

    Šis pažangus variklis savo galimybėmis nenusileidžia kitiems tokio tipo pasaulio varikliams. Variklis yra rusų, korėjiečių, amerikiečių ir japonų kalbomis. Yra dokumentacija, ji gali veikti naršyklėse. Apskritai, galite pradėti dirbti, jei turite žinių ir kruopštumo.

    Jo nebegalima gauti trečiosios šalies licencijai, nes Wargaming nusprendė nustoti platinti savo variklį.

    Oficiali svetainė: http://www.bigworldtech.com





    „BigWorld Technology“ įrankių grandinėje yra visa, visapusiška MMOG turinio kūrimo sistema, kuri pagerins jūsų žaidimo kokybę ir laiką. Visos priemonės yra skirtos kooperatyviam žaidimo aktyvų gamybai didelės komandos aplinkoje, užtikrinant efektyvų išteklių naudojimą ir sklandų turinio srautą.

  • Ar kyla problemų ieškant konkretaus vaizdo įrašo? Tada šis puslapis padės rasti vaizdo įrašą, kurio taip reikia. Mes lengvai išnagrinėsime jūsų užklausas ir pateiksime visus rezultatus. Nesvarbu, kuo domitės ir ko ieškote, nesunkiai rasime jums reikalingą vaizdo įrašą, kad ir kokia kryptimi jis būtų nukreiptas.


    Jeigu Jus domina aktualios naujienos, tuomet esame pasiruošę Jums pasiūlyti šiuo metu aktualiausius naujienų reportažus visomis kryptimis. Futbolo rungtynių rezultatai, politiniai įvykiai ar pasaulis, pasaulinės problemos. Visada būsite naujausia informacija apie visus įvykius, jei naudositės mūsų nuostabia paieška. Mūsų teikiamų vaizdo įrašų žinomumas ir jų kokybė priklauso ne nuo mūsų, o nuo tų, kurie juos įkėlė į internetą. Mes tiekiame tik tai, ko ieškote ir jums reikia. Bet kokiu atveju, naudodamiesi mūsų paieška, sužinosite visas pasaulio naujienas.


    Tačiau pasaulio ekonomika taip pat yra gana įdomi tema, kuri kelia nerimą daugeliui žmonių. Labai daug kas priklauso nuo skirtingų šalių ekonominės padėties. Pavyzdžiui, importas ir eksportas, bet koks maistas ar įranga. Tas pats pragyvenimo lygis tiesiogiai priklauso nuo šalies būklės, taip pat atlyginimų ir pan. Kuo tokia informacija gali būti naudinga? Tai padės ne tik prisitaikyti prie pasekmių, bet ir gali įspėti dėl kelionių į vieną ar kitą šalį. Jei esate įkyrus keliautojas, būtinai pasinaudokite mūsų paieška.


    Šiandien labai sunku suprasti politines intrigas ir suprasti situaciją, reikia rasti ir palyginti daug įvairios informacijos. Štai kodėl galime nesunkiai rasti įvairių Valstybės Dūmos deputatų pasisakymų ir pasisakymų už visus praėjusius metus. Galite lengvai suprasti politiką ir situaciją politinėje arenoje. Jums taps aiškios įvairių šalių politikos ir galėsite nesunkiai pasiruošti būsimiems pokyčiams ar prisitaikyti prie mūsų realijų.


    Tačiau čia galite rasti ne tik įvairių naujienų iš viso pasaulio. Taip pat nesunkiai rasite filmą, kurį bus malonu žiūrėti vakare su buteliu alaus ar spragėsių. Mūsų paieškos duomenų bazėje yra filmų kiekvienam skoniui ir spalvoms, nesunkiai rasite sau įdomią nuotrauką. Mes galime lengvai rasti jums net seniausius ir sunkiai randamus kūrinius, taip pat gerai žinomus klasikus, tokius kaip „Žvaigždžių karai: Imperija smogia atgal“.


    Jei norite tiesiog šiek tiek atsipalaiduoti ir ieškote juokingų vaizdo įrašų, mes taip pat galime numalšinti jūsų troškulį čia. Rasime jums milijoną skirtingų linksmų vaizdo įrašų iš visos planetos. Trumpi pokštai lengvai nudžiugins ir linksmins visą dieną. Naudodami patogią paieškos sistemą galite rasti būtent tai, kas jus prajuokins.


    Kaip jau supratote, mes nenuilstamai dirbame, kad visada gautumėte būtent tai, ko jums reikia. Specialiai jums sukūrėme šią nuostabią paiešką, kad galėtumėte rasti reikiamą informaciją vaizdo įrašo pavidalu ir žiūrėti ją patogiame grotuve.