Kuidas me World of Warships teeme: ekspordi automatiseerimine ja sisu kinnitamine. BigWorld Engine – Mängumootorid – Failid mänguarendajatele – Mängude loomine Suure maailma mängumootor

Selles postituses jätkame küsimuste esitamist mänguarendajatele. Seekord annab intervjuu ettevõtte projekti "" tehniline direktor Mihhail Živets Wargaming.net.

"NVIDIA WORLD": Millist graafikamootorit oma projektis kasutate? Millised on minimaalsed ja soovitatavad Nõuded süsteemile? Kas need on tingitud teatud funktsioonidest või juhindute 3D-kaartide teatud levimuse tasemest? Kas kasutate uusima põlvkonna graafikakaartide juurdepääsetavust või sihite standardit?

Projekt World of Tanks kasutab BigWorldi graafikamootorit oma modifikatsioonidega, mis tuli projekti spetsiifikast tulenevalt teha. Mootori eripäraks on keskendumine avatud maailmadele, millel on dünaamiliselt laaditud kaardi osad, nagu näiteks World of Warcraftis. Püüame kasutada tehnoloogiaid, mis võimaldavad luua monitori ekraanile meie kunstnike visandite lähedase pildi ja kohandada neid süsteeminõuetega.

"NVIDIA WORLD": Kas NVIDIA ja ATI videokaardid erinevad programmeerimise poolest oluliselt? Kas on võimalik kirjutada lihtsalt DirectX-i või OpenGL-i kaudu ja saada mõlema müüja jaoks tõhus kood või tuleb iga tarnija jaoks funktsioonidest erinevad versioonid teha? Millist lähenemist kasutasite?

M. Zh.: Erinevate tootjate videokaartidel on oma spetsiifilised omadused... See võib olla spetsiaalsete tekstuurivormingute tugi või juurdepääs tekstuuridele tipuvarjurist. Samas on DirectX või OpenGL API pakutavate ühiste funktsioonide kasutamisel erinevused kahe tootja GPU vahel minimaalsed ning ATI ja NVIDIA videokaartide erinevuse tõttu on võimalusi pigem rohkem. kui mis tahes piirangud. Mis puudutab mootori "erikohtlemist", siis BigWorld ei anna kummalegi müüjale otsustavat eelist.

"NVIDIA WORLD": Millised on erinevused NVIDIA ja ATI kaartide mängude kiiruses? Kas see on mängumootori algoritmide omadus või sõltub rohkem mängustseenidest? See tähendab, et näiteks ühes mängus on kõrgemad hulknurksed stseenid ja teises on suur overdraw määr või palju läbipaistvaid tekstuure koos keerulise antialiasinguga ja seetõttu saavad suurema täitevõimega videokaardid paremini hakkama? (Kas teie programm "armastas" mingit arhitektuuri?).

M. Zh.: Erinevused taanduvad peamiselt riistvara omadustele (erinevused mälusiinide laiuses, ROP-i ühikute, varjutusüksuste jne arv), aga ka draiverite juurutamises. Mida tasakaalustatum on protsessori ja GPU koormus ning mida paremini on lava organiseeritud, seda vähem peaksid videokaardi omadused üldist jõudlust mõjutama. See hõlmab lahjat suhtumist tekstuuride arvu ja eraldusvõimesse, osakeste ja läbipaistvate objektide väikest ülevõtmist, LOD-de kasutamist, objektide partiideks rühmitamist ja nii edasi - kõik see langeb võrdselt mootoriarendajate õlgadele. ja mängudisainerid.

"NVIDIA WORLD": Videokaartide testimisel kasutatakse reeglina ligikaudu samu mängukomplekte. Kui asjakohane on see üldistus, kui kuvatakse testitulemused selliste erinevate žanrite jaoks nagu 3D-laskjad, kolmanda isiku RPG-d ja strateegia. Kas populaarsed võrdlusnäitajad näitavad teie mängu jõudlust?

M. Zh.: Ma ei jagaks rakendusi žanri järgi. Kõik on ainult nende kasutatavate algoritmide arendajate kätes. Igal juhul püüavad arendajad laadida kasutaja süsteemi võimalikult tasakaalustatult ja saavutada samal ajal toote maksimaalse atraktiivsuse.

Vaadates FPS-i näitajaid sellistes mängudes nagu Crysis või uusim Need for Speed, võite umbkaudu ette kujutada mitmete teiste kaasaegsete mängude jõudlust, nii et siinkohal võime kindlalt öelda, et need testid on üsna soovituslikud. Selle taseme mänge saab kasutada videokaartide etalonidena, kuna kõrge kvaliteediga seadete korral laadivad need graafika alamsüsteemi maksimaalselt.

"NVIDIA WORLD": Mis on CPU koormuse suurenemise põhjuseks eraldusvõime suurenemise korral? Kas on tõsi, et mudelite detailsuse suurendamine nende "nurksuse" minimeerimiseks nõuab rohkem protsessori võimsust animeerimiseks, nähtamatute primitiivide kärpimiseks, varjude mahtude ehitamiseks jne? Kas see efekt oli teie mängus?

M. Zh.: Eraldusvõime suurendamine ei tohiks otseselt mõjutada protsessori koormust, välja arvatud juhul, kui mootor näeb loomulikult ette mudelite polügonaalsuse automaatset suurendamist, täiendavat tessellatsiooni ja suuremat arvu animatsioonikaadreid mudelitele. Kui eraldusvõime suurenedes CPU koormus ilma põhjuseta kasvab, peitub probleem kas mängukoodis või videokaardi draiveris.

"NVIDIA WORLD": Kas protsessori koormus võib suureneda, kui anisotroopne filtreerimine on lubatud? Sama kehtib ka Full Scene Antialiasing'i kohta. Kui selleks on vaja kogu stseeni joonistada kahekordse eraldusvõimega, siis teoreetiliselt võib ka kolmnurkade arv suureneda.

M. Zh.: Vastus mõlemale küsimusele on eitav. Kui anisotroopne filtreerimine on lubatud, suureneb tekstuuriühikute koormus. Kui FSAA on lubatud, saab pikslite konveier rohkem tööd. Mis puudutab suuremat eraldusvõimet, siis pikslite arvu kahekordistamine suurendab toimingute arvu pikslivarjutajas, ROP-ühikutes ja TMU-s.

"NVIDIA WORLD": Arvutuste ülekandmine GPU varjutajatesse on kestnud väga pikka aega, algul oli see T&L, clipping. Kas tänapäeval mõeldakse GPU-l mudelite animeerimist? Mis ennekõike jääb 3D-mootori osas protsessori arvutuste jaoks alles? (Mille peale T&L-i GPU-ga arvestasite?).

M. Zh.: Meie projektis kasutatav mootor ei teosta GPU-l mingeid arvutusi. Teoreetiliselt, kui me peaksime näiteks paljude objektide füüsikat reaalajas arvutama, võiksime võtta sama PhysX, mis teeb NVIDIA GPU-del arvutusi suurepäraselt, kuid projekti spetsiifika tõttu on meil piisavalt protsessori võimalusi.

"NVIDIA WORLD": Viimastel aastatel on videokiirendid muutunud "targaks", nad ise kasutavad nähtamatute primitiivide äralõikamise meetodeid, näiteks: hierarhiline z-puhver. Kui tõhusad need on? Kas nüüd on võimalik kõik kolmnurgad lihtsalt videokiirendisse pista, et see kõik ise joonistaks? Esimeste 3D-mängude (seeria Quake ja Unreal) päevil kasutati renderdatud kolmnurkade, BSP-puude jms vähendamiseks keerukaid meetodeid. Kui asjakohane see praegu on?

M. Zh.: Loomulikult ei tohiks te loota, et videokiirendi määrab iseseisvalt, millised objektid tuleks joonistada ja millised mitte nähtavad. Peame rakendama mittevajaliku varajase kärpimise tehnikat, kuna üleliigse teabe edastamine GPU-le toob kaasa jõudluse languse. Seega on probleem endiselt aktuaalne, kuigi palju vähemal määral. Eriti juhtudel, kui peate joonistama suur number erinevaid objekte. Fakt on see, et kaasaegsed kaardid pole hõivatud mitte ainult mittevajalike äralõikamisega, vaid need olid koormatud ka keerukamate valgustustüüpide arvutustega jne. Seega, kui on võimalus ja vahendid videokaardi abistamiseks, tuleks seda teha.

Näiteks BigWorldi mootoris kasutatakse Umbra teeki nähtamatute objektide lõikamiseks enne joonistamisetappi. Stseen on BSP-puu, mis võimaldab kiiresti ja tõhusalt eemaldada stseeni fragmente, mis on ilmselgelt väljas.

"NVIDIA WORLD": Omal ajal oli umbes P4 kriisi aegu selline olukord, et süsteemi kitsaskohaks oli protsessor, mis ei suutnud videokiirendit "laadida" ning mängudes FPS-i tõstmiseks tuleb ennekõike a. nõuti tipptasemel CPU mudelit. Kas protsessori ja GPU vahel on praegu sarnane suhe või on protsessorid ületanud teatud kriitilise jõudluse taseme ja kas saame võtta odava protsessori ja võimsa videokaardi? See viitab mängudele, mille stiilis rõhk on graafikal, nagu Quake ja Doom.

M. Zh.: Nõrk protsessor võimsa videokaardiga on süsteemi kitsaskoht, kuna palju toiminguid, nii madalaid (juhtkäskude voo moodustamine juhi poolt) kui ka kõrgetasemelisi (rakendusloogika - mängusilmus, osakeste värskendamine, tegelane). animatsioon, füüsika, heli jne) sõltuvad otseselt protsessori jõudlusest. Olulist rolli mängib protsessori vahemälu, mis on odavatel mudelitel üsna väike.

Videokaardi tõhusaimaks tööks on vaja ka süsteemiressursse, kiiret süsteemisiini ja piisavas koguses hea jõudlusega RAM-i. Sageli ei suuda video alamsüsteem näidata, milleks ta võimeline on, lihtsalt seetõttu, et protsessoril pole aega vajalikke andmeid sinna üle kanda. Seega, kui rääkida ressursside säästmisest, siis piisab keskmise protsessori ostmisest, keskmisest veidi üle emaplaadi, kuid mitte koonerdada videokaardiga ja RAM.

"NVIDIA WORLD": DirectX versioonist versioonini on muutumas üha enam graafikamootoriks. Kas vastab tõele, et tänapäeval koosneb 3D programm praktiliselt Direct3D API kõnedest ja enamus arvutusi tehakse selles? Kuidas hindate Uusim versioon DirectX? Kas sellest on saanud peaaegu täisväärtuslik mootor ja mitu versiooni see veel võtab?

M. Zh.: Direct3D-d ei saa vaadelda eraldiseisva graafikamootorina ja on ebatõenäoline, et Microsoft lähitulevikus sellise sammu astub nagu oma mängumootori loomine. See on ebapraktiline mitmel põhjusel, sealhulgas erinevate mänguprojektide mootorile esitatavates nõuetes. Näiteks on olemas autosimulaator, reaalajas strateegia ja 3D shooter eristavad tunnused mis ei võimalda sama mootorit kõigil kolmel juhul võrdselt tõhusalt kasutada.

Direct3D kümnendas versioonis ilmusid uued abstraktsioonitasemed ressurssidega töötamisel ja lisavõimalused varjutajate arendamiseks, kättesaadavaks said sellised nipid nagu Stream Output. Samas jääb D3D selleks, mis ta oli – madala tasemega API, mille abil saab arendaja konkreetse ülesande jaoks mängumootori kujundada.

"NVIDIA WORLD": Üldiselt Hiljuti toimub mängu- ja 3D-mootorite "globaliseerumine". On mitmeid populaarsemaid platvorme, millel palju mänge tehakse. Kas see on objektiivne protsess? Kas arendajal on mõtet kirjutada oma mootor praegu, kui saate litsentsida valmis täisfunktsionaalsele mootorile. Näiteks hiljuti ilmus Unreal Engine'i teine ​​versioon, mida on alla laaditud juba kümneid tuhandeid kordi. Kui kaua läheb aega, kuni kõik mängud kasutavad ühte või kahte 3D-mootorit?

M. Zh.: Kasutame BigWorldi ja oleme sellega siiani rahul. Mis puutub "globaliseerumisse", siis ime tõenäoliselt ei juhtu ning CryTek, Epic ja mitmed teised otsustavad anda üksteisele killukese mängumootorite turust. Ärge unustage, et reeglina on sama mootoriga loodud mängud väga sarnased, mis pole alati hea. Suure tõenäosusega mootorite arv ainult kasvab, suundudes üha kitsamale spetsialiseerumisele. Igal juhul on alati ainulaadsed mootorid.

"NVIDIA WORLD": Kas vastab tõele, et uusimad videokaardid on toore võimsuse poolest muutunud väga võimsaks ja, erinedes varasematest mudelitest efektide poolest, võivad paljastada oma potentsiaali ennekõike suurte monitoridega (alates 1920x1200) süsteemides režiimides antialiasing ja täielik anisotroopne filtreerimine? Kas inimesel, kellel on nt 1280x1024 monitor, kes ei ole filtreerimise ja AA fänn, on mõtet osta uus videokaart nagu GTX285 ja Radeon uuel tehnilisel protsessil?

M. Zh.: Olen nõus, et on. Kuid sellegipoolest ärge unustage korralikke monitore, millel on piisav värvide taasesituse kvaliteet, kõrge eraldusvõime ja kontrastsus. Saate mängust palju rohkem naudingut. Kuid isegi kui otsustate oma lemmikmonitori mitte vahetada, tasub kaart välja vahetada, kuna see toob kindlasti kaasa teie süsteemi jõudluse tõusu, kuna osa vanu arvutusalgoritme uutel kaartidel on juba riistvaras juurutatud. .

"NVIDIA WORLD": Varem olid mänguarendajad kõige uuemate videokaartide võimaluste ja efektide kasutamisel konservatiivsed, kuna keskenduti hetkel enamlevinud kaartidele. Ehk siis näiteks tingimuslik DirectX n tuleb välja, aga mängud on ikka kirjutatud DirectX n-2 jaoks. Kas olukord on viimasel ajal muutunud? Kas mängus on lihtne kasutada hiljuti välja antud videokiirendite uusi efektivõimalusi?

M. Zh.: Kui Windows 7 oleks välja antud paar aastat varem või kui Microsoft oleks loobunud DirectX 10 sidumisest Windows Vistaga, oleksid mänguarendajad juba ammu üle läinud vähemalt API versioonile 10. Nüüd on meil aga see, mis meil on: kõik hitid Viimastel aastatel kasutage DX9 ja DX10 tugi on sageli turundustrikk.

"NVIDIA WORLD": Kui intensiivselt kasutavad mängud väljalaskehetkel tavaliselt uusimate videokiirendite võimsust? Näiteks, kas praegu kasutatakse kõiki GT200 arhitektuuri funktsioone? Kas see on tüüpiline olukord, kui väljalaskehetkel töötab uus GPU lihtsalt olemasolevate mängudega veidi paremini, kuid aja jooksul, kui mänge optimeeritakse uue arhitektuuri jaoks ja rakendatakse uusi funktsioone, tundub selle väärtus kasvavat? Kui palju teie mäng uusi funktsioone kasutab?

M. Zh.: Uue arhitektuuri ja selle ühtse varjundi mudeli puhul võitsid peaaegu kõik. GPU tipu ja pikslite torujuhtmete töökoormus on ühtlustunud seal, kus ühes või teises suunas oli suuri kaldeid. Mis puutub uutesse funktsioonidesse, siis mida suurem on teatud funktsiooni toetavate videokaartide protsent, seda meelsamini kasutavad mänguarendajad neid oma projektides. Meie kasutatav BigWorld keskendub DirectX 9 ja SM 3.0 võimalustele.

"NVIDIA WORLD": Tänapäeval on võrgumängud muutunud väga populaarseks. Kas see on jätnud oma jälje videokiirendite tööstusele? Kuna selliste mängude mootorid on keskendunud põhifunktsioonide komplektile, mis suurel hulgal kasutajatel on, ja FPS-i määrad piirab endiselt internetiühendus, tundub mõttetu osta võrgumängude jaoks tipptasemel videokiirendit. Kas see pole mängugraafika arengu pidur? Brauserimängude populaarsuse tõus "täis-2D-s", mille jaoks pole kiirendit vaja.

M. Zh.: Kui vaadata World of Warcrafti tellijate arvu ja võrrelda seda näiteks Aioni või Age of Conaniga, on vastus ilmne: võrgumängude, mängimise, läbitöötamise jaoks. mängumaailm, põnev PvP-komponent ja muud ajakavaga otseselt mitte seotud hetked. See ei ole graafika arengu pidur, sest mängijad ei ela ühes MMORPG-s. Uued laskurid, autosimulaatorid ja RPG-d tõstavad paratamatult 3D-mängude latti. MMO-mängud liiguvad aeglaselt, kuid kindlalt sama teed, eesmärgiga meelitada ligi suuremat mängupublikut. Muide, seesama Blizzard töötab nüüd kuulduste kohaselt uue MMOG-i kallal ja tõenäoliselt nad oma uues projektis 8 aastat vana mootorit ei kasuta.

"NVIDIA WORLD": Mil määral vajavad SLI ja Crossfire tehnoloogiad mänguarendaja tuge? Mis on nende tehnoloogiate erineva efektiivsuse põhjuseks erinevate mängude puhul? Kas mängumootori funktsioonidega või mängustseenidega? Kui palju kasu saab teie mäng SLI ja Crossfire'i kasutamisest?

M. Zh.: Mootori optimeerimine kahe videokaardi jaoks on väga keeruline protsess. On vaja hoolikalt korraldada kompaktne andmeedastus GPU-le ja tasakaalustada mootorit GPU ja CPU vahelise koormuse osas. Kui rakendus on ühe kaardiga töötades juba vastu CPU-d või andmeedastust siini kaudu, peate unustama SLI või Crossfire'i. See on tegelikult erinevus teatud mängude vahel, kui töötate paaritud kiirenditega. Meie mäng suurendab SLI-s endiselt jõudlust umbes 10%, kuid nüüd optimeerime mitmeid mooduleid, et sellistes režiimides jõudlust parandada.

"NVIDIA WORLD": Pikka aega on palju räägitud arvutituru kriisist ja mängude järkjärgulisest üleminekust konsoolidele. Kuid seda pole veel juhtunud. Kas me võime seda tulevikus oodata? Kas vastab tõele, et standardse riistvara tõttu on konsoolide graafika programmeerimine palju lihtsam? Või tasandab digibokside igavene mahajäämus "riistvara" osas ühtlust?

M. Zh.: Mängukonsoolidel on arendaja jaoks mitmeid eeliseid (üks platvorm, üks võimaluste komplekt ja sellest tulenevalt sama jõudlus kõigile mängijatele), kuid arvutimängude ja eriti võrgumängude turg kasvab pidevalt, nii et me ei saa oodata massilist üleminekut konsoolidele.kulud. Ärge unustage, et võimsama riistvaraga mängukonsoolide väljalaskmist piiravad konsoolitootjad ise, püüdes praeguste mängude müügi kaudu hüvitada eelmise põlvkonna konsoolide tootmiskulusid. Seetõttu kulub enne Playstation 4 või Xbox 720 väljaandmist palju aega ja palju projekte, mis on keskendunud praeguse põlvkonna konsoolidele. Mõnel juhul, näiteks Nintendo Wii puhul, on täiustatud riistvara suurepärase tulemuse saavutamiseks täiesti ebavajalik.

"NVIDIA WORLD": Kas on tõsi, et nüüd on mängudes kombinatsioon projektsioonimeetodist mudelitest varjude konstrueerimiseks ja varjude mahtude meetodist koos dünaamiliselt või staatiliselt arvutatud mahtudega varjude jaoks liikuvatel objektidel, mudelitel ja relvadel ning mudelite liikuvatel osadel enda peal?

M. Zh.: Varjumahtude asemel kasutatakse sageli sama projektsioonitehnikat koos modifikatsioonidega (kaskaadvarjukaardid, eraldi varjukaart isevarjutamiseks jne). Varjude mahud tagavad selge varjupiiri, kuid kannatavad kõrge täitumusastme, täiendavate CPU arvutuste ja pehmete varjuservade keeruka rakendamise tõttu.

"NVIDIA WORLD": Kas olemasolevatel varjutusmeetoditel on kogu stseeni jaoks dünaamilise valgustuse loomine perspektiivi? See tähendab, et videokiirendite võimsuse järkjärgulise suurenemisega saab neid kasutada kogu valgustuse arvutamiseks dünaamikas? Või on vaja rakendada uusi meetodeid?

M. Zh.: Projektiivsed varjud on kaasaegsetes mängudes kaugele jõudnud ja mõnda nende modifikatsiooni kasutatakse pikka aega koos lisaefektidega, nagu SSAO. Muidugi, kui on olemas tasuta GPU ray tracing, siis pole projektiivsetel ega mahulistel varjudel mingit võimalust.

"NVIDIA WORLD": Kuidas hindate Precomputed Radiance Transfer tehnoloogiat mängudes rakendamise seisukohast? Kas kavatsete seda tulevikus kasutada?

M. Zh.: PRT nõuab aeganõudvaid arvutusi, seda ei saa kombineerida animeeritud mudelitega ja põhimõtteliselt ei anna see visuaalses mõttes suuri eeliseid võrreldes sama Ambient Occlusioniga. Näitena võib võtta Halo 3, mis kasutab PRT-d, kuid ei paista valguse kvaliteedi poolest silma võrreldes sama Gears of Wari või Crysisega.

"NVIDIA WORLD": DirectX 11 ja Fermi arhitektuur, kas tasub oodata DirectX 11 kiirendeid ja mänge või on tegemist API läbipääsuversiooniga? Kas Direct X 11 kiirendi noorem mudel, mis annab absoluutse võimsuse ja täitumismäära, võib olla parem kui vana, kuid võimsam DirectX 10 toega mudel? Kas me võime Fermi arhitektuuri väljatulekuga oodata mingit kvalitatiivset hüpet mängugraafikas või on see ulatuslik kasv, rohkem kolmnurki, suurem kiirus kõrgete eraldusvõimetega jne? Kui Fermi oleks teie mängu arendamise ajal saadaval, siis kui erinev oleks mäng graafika poolest?

M. Zh.: DirectX-i üheteistkümnes versioon pakub rohkem võimalusi GPU-l arvutamiseks, samas kui DX10-ga võrreldes ei too see 3D-graafika jaoks radikaalseid täiustusi. Mis puutub Fermi, siis minu arvates on kõige huvitavam funktsioon 3D-mudelite jaoks täielikult juhitud tessellatsioon.

Mihhail Živets, projekti World of Tanks tehniline direktor, Wargaming.net

Pärast World of Warshipsi esilinastust gamescomis ja IgroMiris on mängu ametlik käivitamine aina lähemale ja lähemale. Suletud alfa testimine on praegu täies hoos ja meil, Wargamingu Peterburi divisjoni Lesta Studio arendajatel on veel terve hunnik küsimusi lahendada. Samas suutsime palju takistusi selja taha jätta. Allpool on lugu sellest, kuidas kohandasime oma mootori eksportijat laevade vajadustega ja ehitasime üles sisu kontrollimise protsessi.

Mootori standardvarustus

Iga mootor sisaldab tööriistakomplekti 3D-mudelite eksportimiseks 3D-redaktoritest oma andmevormingusse. Meie BigWorld, mille põhjal World of Tanks valmib, pole erand. See toetab eksporti 3D Maxist ja Mayast. Peaaegu iga mänguprojekt nõuab standardsete eksportijate kohandamist projekti spetsiifikaga. Meie projektis on laevamudelid spetsiifilised.

Maya kohandatud eksportija esimene versioon "koolitas" selle lihtsalt ümber, et ära tunda laevastseeni keerulisem struktuur. Olemasolevale C ++ koodile lisati natuke Pythoni juhtkoodi, samuti lisati Maya pistikprogramm koos kasutajaliidesega wxWidgetis. See nägi välja umbes selline:


Kohandatud eksportija kasutajaliides

Saadud tööriistal oli palju puudusi.

Eksporti sai teostada vaid kasutaja osalusel, kes pidi eksportijale "ütlema", mida stseen sisaldab. Selle tööriista kasutamine erinevate protsesside automatiseerimiseks, näiteks sisu automaatne kontrollimine levikomplekti koostamise etapis, ei tulnud kõne allagi.

Eksportija nõudis kasutajalt teadmisi kaugeltki mitte ilmsete parameetrite kohta, töötas aeglaselt, praktiliselt ei toetanud stseeni kontrollimist ja nõudis ka tohutul hulgal ressursse.

Arhitektuur oli suur väljakutse funktsionaalsuse edasisel laiendamisel. Eksport oli tegelikult tuumaoperatsioon (spagetifunktsioonide komplekt), mis tõlkis andmed ühest struktuurist (laaditud Maya stseen) teise struktuuri (BigWorld) otse füüsilistesse failidesse. Kui serialisaatorid ja äriloogika on realiseeritud "monoliidis" ja andmemudel lihtsalt puudub, on võimatu lisada andmetöötlust (eel- / järeltöötlust), aga ka taaskasutamist (koodi taaskasutamine) serialiseerijaid ja andmemudelit muudes tööriistades. mis rakendavad oma äriloogikat. Keerulisemaid sisutootmisprotsesse oli võimatu üles ehitada.

Aja jooksul on olemasolevale koodile uute funktsioonide lisamine muutunud peaaegu võimatuks. Eksportija otsustati "nullist" ümber kirjutada uue arhitektuuriga.

Karm igapäevaelu

Meie projekti tase on tõstnud nõudeid sisu kvaliteedile, keerukusele ja mahule. Meie stuudio on viimase paari aastaga kõvasti kasvanud. Nüüd on meil võimalus eraldada piisaval hulgal ressursse sisu tootmisega seotud ülesannete täitmiseks. Meie juurde tulid arhitektuuriarenduse, C ++ / C # tehnoloogiate taustaga spetsialistid. Samal ajal oli see eksportija arendajatele esimene Pythoni ja Maya API kasutamise kogemus. See tõi kaasa täiendavaid riske, millega tuli arvestada.

Eksportija ümbertöötlemiseks hindasime kaks-kolm inimkuud. Mänguarenduses ei saa hakkama ilma optimismita.

Tuvastasime järgmised riskid:

Vorminõuete puudumine;
Pythoni keele oskuse tase;
Maya API keerukus;
algoritmide ümbertegemine primitiivide töötlemiseks.

Suur osa tegelikust ajast kulus nõuete kogumisele mitteametlikest allikatest, nagu juhiks saanud arendajad, vanad taimerid, torsioonväljad ja olemasolev eksportija kood. Need teadmiste tükid on Confluence'is vormistatud ja kirjutatud nõuete, spetsifikatsioonide ja UML-diagrammide kujul.

Esimesed prototüübid näitasid vajadust kasutada nimeruumide ja Pythoni moodulite kontseptsiooni (__init__.py). Samuti on välja töötatud mehhanism, mis võimaldab "läbipaistvalt" kasutada C ++ teekide (.pyd) funktsioone.

Maya API keerukusest ja segadusest võib kirjutada eraldi raamatu. Kõik funktsioonid nõuavad prototüüpide loomist, konsulteerimist 3D-kunstnike ja mootorite arendajatega (renderdamine).

Tavalisel eksportijal oli oma rakendus suurel hulgal algoritme, näiteks hulknurga triangulatsioon, pesastatud sõlmede teisendusmaatriksite arvutamine jne. Loobusime neist Maya API kasutamise kasuks, mis parandas oluliselt eksportija jõudlust.

On viimane aeg lisada Murphy seadustesse reegel, et iga teie väljamõeldud projekt viiakse kindlasti ellu mitte rohkem kui "x3" ajaga kavandatust, kui te sellest ei loobu.

Tulemus oli meie tehtud pingutust väärt. Lõpuks leidis isegi meie peamine modellide ekspordi eest vastutav kunstnik pärast paarikuulist tegutsemist meie eksportija "peaaegu täiuslikuna".

Heidame pilgu kapoti alla

Meie stuudios kasutatakse aktiivselt Pythonis olevaid skripte. Üritasime kogu eksportija selle peale rakendada. Loomulikult ei sobi Python suurte binaarandmete (nt tipupuhvrid, indekspuhvrid jne) töötlemiseks. Selliste konteinerite andmemudel ja serialisaatorid realiseeriti C ++-s raamatukoguna (.pyd) , mis loomulikult "mahtub" andmemudel Pythonis. Kogu äriloogika rakendati Pythonis.

Eksportija raamistikku plaaniti kasutada mitte ainult Maya "käsitsi" eksportimiseks, vaid ka mis tahes ülesannete jaoks, kus selle funktsionaalsust saaks taaskasutada, näiteks sisu kontrollimise automatiseerimiseks. Iga meie arendatava tööriistakomplekti jaoks vajame Pythoni API-sid, käsurea ja kasutajaliidese tööriistu.

Arhitektuur

Eksportija raamistiku arhitektuur on modulaarne, kihiline. Seal on füüsiline ja loogiline kiht, samuti domeenikiht. Iga kiht sisaldab eraldi mooduleid: andmemudel, äriloogika, serialisaatorid, aga ka muundurid, mis suudavad teisendada ühe kihi andmemudeli teise kihi andmemudeliks. Füüsilised ja loogilised kihid rakendavad tegelikult ORM-i arhitektuuri analoogi.

Domeenikihi arhitektuur on loodud andmemudeli mugavaks töötlemiseks äriloogikaga. See on täielikult isoleeritud ega sisalda eeldusi selle kohta, kuidas see füüsiliseks salvestusruumiks järjestatakse.


Eksportija kihiline arhitektuur

Ekspordiprotsess

Kihiline arhitektuur tutvustab ekspordiprotsessi teatud funktsioone. Tegelikult deserialiseerime kahte (või enamat) mudelit erinevatest allikatest (Maya ja BigWorld Engine). Pärast seda liidetakse need mudelid üheks uueks. Seejärel muudetakse uus mudel BigWorld-Engine'i vormingusse.


Ekspordiprotsess

Sisu tootmisprotsessi paindlikkus

Rakendatud arhitektuur muudab keerukate sisutootmisprotsesside ülesehitamise lihtsaks. Näiteks koosneb meie esmane laevamudel tehnoloogiliselt kolmest eraldi Maya stseenist, millest igaüks on samaaegselt välja töötatud erinevate osakondade poolt:

Esimene stseen sisaldab visuaalset mudelit ja kokkupõrkemudelit.
Teine vaatus sisaldab ballistilist mudelit.
Kolmas sisaldab efektide porte.

Lisaks sellele lisab (redigeerib) mootori tööriistakast (toimetajad) tuletatud mootorivormingu mudelile oma andmed (neljas stseen).

Eksportija lahendab hõlpsasti mittetriviaalse ülesande ühendada kõik neli stseeni üheks saadud laevamudeliks.

Sisu kinnitamine

Sisu kontrollimise süsteem võimaldab otsida sisuvigu nii igast kihist (allikast) eraldi kui ka sellest tulenevast sisust. Tõendajate arv ulatub praegu mitmekümneni. Automaatne sisu kontrollimine on sisse ehitatud jaotamise ehitusprotsessi, mis võimaldab võimalikult palju elimineerida inimfaktorit ning garanteerida sisu terviklikkuse ja tehnilise puhtuse.


Näide laevamudeli kontrollimisest Mayas

Sisueelarved ja part vannitoas

Sisu kontrollimise protsessi oluline osa on eelarvete kontrollimine, näiteks hulknurkade eelarvete kontrollimine. Alloleval joonisel kuvatakse eelkõige teave iga nurga visuaalse mudeli kolmnurkade arvu kohta:


Maya kasutajaliidese pistikprogramm

Sellise kontrollimise vajaduse ilmekaks illustratsiooniks on kolleegide jutt ühe varasema projekti kohta. Kaardil oli krunt hoonestatud mittepurustavate majadega. Niipea, kui kaamera oma pilgu sellele alale pööras, langes FPS kohe metsikult. Pärast probleemi uurimist selgus, et ühes majas oli vann, milles ujus väike "plastmassist" part. Kõik see oleks tundunud kunstnike naljaka vembuna, kui mitte fakt, et pardi mudel sisaldas umbes miljonit hulknurka.

Praktikas on eelarvelist väärtust väga raske järgida. Paljud mudelid on objektiivselt erandid. Ka eelarve väärtuse määramine vahemiku kujul ei lahenda probleemi, kuna aja jooksul hakkavad hulknurga mudelid lihtsalt kalduma vahemiku ülemisele väärtusele. Meie puhul on plaanis muuta nende mudelite isiklikke eelarveid, mis ei vasta seda tüüpi mudelite standardeelarvele.

Sisu töötlemine

Igas ekspordietapis on vajalik töötlemine (eel- ja järeltöötlus). Näiteks enne Maya kihi loogilise andmemudeli teisendamist õhutõrjekahurite domeeniandmete mudeliks on vajalik kahuri skeleti eelpööramine 45 kraadi võrra Y-teljel ja skeleti eemaldamine. Meie arhitektuur võimaldas läbipaistvalt integreerida erinevaid töötlemisi ekspordi mis tahes etapis.




Mudeli näide enne ja pärast eeltöötlust

X64 tugi

Üsna hiljuti on meie artistid massiliselt üle läinud 32-bitise Maya 2012 pealt 64-bitise Maya 2014 vastu. Kuna eksportija on peaaegu täielikult Pythonis kirjutatud, siis x64 toega meil praktiliselt probleeme pole. Ainult C ++ keeles realiseeritud raamatukogu (.pyd) nõudis veidi "šamanismi".

Nüüd saab eksportijat hõlpsasti kasutada nii x32 kui ka x64 protsessides, kuna see määratleb ja laadib ise C ++ teegi (.pyd) nõutava koostu.

Kaardi kinnitamine

Eksportija arhitektuuri arendades ei osanud me ette ennustada, millistes muudes tööriistades ja automaatikates on võimalik seda taaskasutada. Kaardi kontrollimise automatiseerimine on näide sellest, kuidas "õige" eksportija arhitektuur leidis tee teise tööriista.

Kaartide kontrollimine koostab ja kontrollib kaardi sõltuvuste graafikut teistest sellel asuvatest objektidest. Eelkõige kasutatakse kaardil maastiku visuaalseid mudeleid (kivid, jäämäed), hooneid (majad, angaarid, jahisadamad), varustust (lennukid, paadid) jne.

Kaarditõendaja eripära on see, et see suudab eksportija raamistiku abil kontrollida mitte ainult nende visuaalsete mudelite failide olemasolu, vaid ka mudeleid endid. See välistas inimfaktori, kui kaardiarenduse osakond (LA) peab 3D-mudelite arendusosakonna (3D Art) sõna võtma, et kasutusel on tehniliselt korrektsed mudelid.

Jaotuse ehitamine

Eksportija raamistik leidis kasutust levitamiseks sisupaketi ettevalmistamise protsessis. Jaotus ei tohiks hõlmata mudeleid, mis:

Ei kasutata enam;
on veel väljatöötamisel;
mõeldud toote järgmistele versioonidele.

Mänguobjektide (juurmänguobjektide) põhiloendi alusel on vaja koostada sõltuvusgraafik, mille järgi täielik nimekiri nõutav sisu. Pole midagi lihtsamat kui mudeli deserialiseerimine eksportija raamistiku abil ja "välja selgitada", milliseid muid mudeleid on vaja (sisuviited).

Tulemused

Meie eksportija arengulugu on näidanud, kuidas ta on arenenud lihtsast kõrgelt spetsialiseerunud tööriistast võimsaks süsteemiks, mis lahendab oma vahetuid ülesandeid ning leidnud rakendust ka muudes sisutootmisprotsessides. Selle edukas arendamine ja taaskasutamine põhineb modulaarsel arhitektuuril, mis võimaldab selle üksikuid "kuubikuid" kasutada teiste süsteemide ehitamiseks.

Lähiajal ootab eksportijat ees veel üks BigWorld Engine failivormingu muutusega seotud test. Oleme kindlad, et aluseks olev arhitektuur ei tekita raskusi ja suudab toetada tööd nii olemasoleva kui ka uue failivorminguga.

  • Žanri orientatsioon: 3D MMO mis tahes žanrist;
  • Platvorm: PC, PS3, Xbox 360, iOS (iPad), veeb;
  • Programmeerimiskeel: C ++, Python;
  • Litsents: indie ja kommerts;
  • Avatud allikas: ei ole ette nähtud või ette nähtud kõrgendatud tasu eest;
  • Mitmikmäng: klient-server;
  • Eelised: võimas, toetus kõigele kaasaegsed tehnoloogiad, optimeeritud, iOS-i tugi, selliste funktsioonide jaoks odav;
  • Puudused: ei pakuta tasuta;
  • Mootori arendajad: BigWorld Tech, Inc.

    BigWorld Engine on kõige arenenum 3D-mootor MMO-mängude loomiseks. Sellel tehakse selliseid mänge nagu "World of Tanks", "Pealm of the Titans" saidilt Wargaming.net ja muud mängud teistelt maailma mänguarendusettevõtetelt. Selle mootoriga on tehtud üle 15 MMO mängu. Selle on välja töötanud BigWorld Technology.

    Optimeeritud mootor võimaldab teil luua suurepärase graafikaga vähenõudlikke mänge. Mootor võimaldab teil mänge iOS-i portida. See on kirjutatud C ++ programmeerimiskeeles, mänguloogika rakendamine selles on tehtud mugavas skriptikeeles Python. Seal on võimsad tööriistad ja klient-server mootor. Heli jaoks toetatakse FMOD-teeki ja kõik muud teegid on ühendatud pistikprogrammi kaudu. Töötab XML ja MySQL andmebaasidega. Tööriistakast sisaldab võimsat maailmaredaktorit, mudeliredaktorit ja osakeste redaktorit.

    See on väga taskukohase hinnaga. BigWorldi ehitamine: Indie Edition maksab ainult 299 dollarit; BigWorld: Indie Source Edition – 2999 dollarit; BigWorld: Commercial Edition – kokkuleppel individuaalselt.

    See täiustatud mootor ei jää oma võimaluste poolest alla teistele seda tüüpi maailmamootoritele. Mootor on saadaval vene, korea, ameerika ja jaapani keeles. Dokumentatsioon on olemas, see võib brauserites töötada. Üldiselt saab asja kallale, kui on teadmisi ja hoolsust.

    Pole enam saadaval kolmanda osapoole litsentsimiseks, nagu Wargaming otsustas oma mootori levitamise lõpetada.

    Ametlik sait: http://www.bigworldtech.com





    BigWorld Technology tööriistakett pakub täielikku ja täielikku MMOG-sisu loomise süsteemi, mis suurendab teie mängu kvaliteeti ja ajakohasust. Kõik tööriistad on loodud mänguvarade koostööks tootmiseks suures meeskonnakeskkonnas, tagades efektiivse ressursside kasutamise ja sujuva sisujuhtme.

  • Kas teil on probleeme konkreetse video leidmisega? Siis aitab see leht leida video, mida nii väga vajate. Töötleme teie taotlusi hõlpsalt ja anname teile kõik tulemused. Ükskõik, mis teid huvitab ja mida otsite, leiame hõlpsalt vajaliku video, olenemata sellest, mis suunas see on.


    Kui olete huvitatud päevakajalistest uudistest, siis oleme valmis pakkuma teile hetkel kõige asjakohasemaid uudiseid igas suunas. Jalgpallivõistluste tulemused, poliitilised sündmused või maailm, globaalsed probleemid. Kui kasutate meie imelist otsingut, olete alati kõigist sündmustest teadlik. Meie pakutavate videote teadlikkus ja nende kvaliteet ei sõltu meist endist, vaid nendest, kes need Internetti üles laadisid. Pakume teile lihtsalt seda, mida otsite ja nõuate. Igal juhul saate meie otsingut kasutades teada kõiki maailma uudiseid.


    Maailmamajandus on aga ka üsna huvitav teema, mis teeb muret paljudele. Üsna palju sõltub erinevate riikide majanduslikust olukorrast. Näiteks mis tahes toiduainete või seadmete import ja eksport. Sama elatustase sõltub otseselt riigi seisust, samuti palkadest jms. Kuidas saab selline teave kasulik olla? See ei aita mitte ainult tagajärgedega kohaneda, vaid võib ka hoiatada ühte või teise riiki reisimise eest. Kui olete kurikuulus reisija, kasutage kindlasti meie otsingut.


    Tänapäeval on väga raske mõista poliitilisi intriige ja olukorra mõistmiseks on vaja palju erinevat teavet leida ja võrrelda. Seetõttu leiame teie jaoks hõlpsasti riigiduuma saadikute erinevaid kõnesid ja nende avaldusi kõigi viimaste aastate kohta. Saate kergesti aru poliitikast ja olukorrast poliitilisel areenil. Sulle saab selgeks erinevate riikide poliitika ja saad end saabuvateks muutusteks kergesti ette valmistada või juba meie reaalsuses kohaneda.


    Siit leiate aga mitte ainult erinevaid uudiseid kogu maailmast. Samuti leiate hõlpsalt endale filmi, mida on õhtul õllepudeli või popkorniga mõnus vaadata. Meie otsinguandmebaasis on kilesid igale maitsele ja värvile, leiate hõlpsalt enda jaoks huvitava pildi. Leiame teie jaoks hõlpsalt üles ka kõige vanemad ja raskemini leitavad teosed, aga ka kõigile tuntud klassika – näiteks Star Wars: The Empire Strikes Back.


    Kui soovite lihtsalt veidi lõõgastuda ja otsite naljakaid videoid, siis saame ka siin teie janu kustutada. Leiame teile miljon erinevat meelelahutuslikku videot üle kogu planeedi. Lühikesed naljad rõõmustavad teid kergesti ja lõbustavad teid terve päeva. Mugava otsingusüsteemi abil leiate täpselt selle, mis teid naerma ajab.


    Nagu juba aru saite, töötame väsimatult selle nimel, et saaksite alati täpselt seda, mida vajate. Oleme selle imelise otsingu loonud spetsiaalselt Sinu jaoks, et saaksid video kujul vajaliku info üles leida ja mugavast pleierist vaadata.