Bagaimana Kami Melakukan World of Warships: Otomatisasi Ekspor dan Verifikasi Konten. BigWorld Engine - Mesin game - File untuk pengembang game - Pembuatan game Mesin game dunia besar

Dalam posting ini, kami terus mengajukan pertanyaan kepada pengembang game. Kali ini, wawancara diberikan oleh Mikhail Zhivets, direktur teknis proyek "", perusahaan Wargaming.net.

"NVIDIA DUNIA": Mesin grafis apa yang Anda gunakan dalam proyek Anda? Berapa minimal dan direkomendasikan? Persyaratan sistem? Apakah karena fitur tertentu atau Anda dipandu oleh tingkat prevalensi peta 3D tertentu? Apakah Anda menggunakan aksesibilitas kartu grafis generasi terbaru atau Anda menargetkan standar?

Proyek World of Tanks menggunakan mesin grafis BigWorld dengan modifikasinya sendiri, yang harus dibuat karena spesifikasi proyek. Fitur mesin ini adalah fokusnya pada dunia terbuka dengan bagian peta yang dimuat secara dinamis, seperti, misalnya, yang dilakukan di World of Warcraft. Kami mencoba menggunakan teknologi yang memungkinkan kami membuat gambar di layar monitor dekat dengan sketsa seniman kami dan menyesuaikannya dengan persyaratan sistem.

"NVIDIA DUNIA": Apakah kartu video dari NVIDIA dan ATI berbeda secara signifikan dalam hal pemrograman? Apakah mungkin untuk menulis melalui DirectX atau OpenGL dan mendapatkan kode yang efisien untuk kedua vendor, atau apakah Anda perlu membuat versi fungsi yang berbeda untuk setiap vendor? Pendekatan apa yang Anda gunakan?

M.Zh.: Kartu video dari berbagai produsen memilikinya sendiri fitur khusus... Ini dapat berupa dukungan untuk format tekstur khusus atau akses ke tekstur dari shader vertex. Pada saat yang sama, ketika menggunakan fungsionalitas umum yang disediakan oleh DirectX atau OpenGL API, perbedaan antara GPU dari kedua vendor minimal dan, sebagai konsekuensi dari perbedaan antara kartu video dari ATI dan NVIDIA, ada lebih banyak peluang daripada batasan apa pun. Sejauh "perlakuan khusus" yang bersangkutan dengan mesin, BigWorld tidak memberikan keuntungan yang menentukan bagi kedua vendor.

"NVIDIA DUNIA": Apa perbedaan kecepatan game pada kartu NVIDIA dan ATI? Apakah ini properti dari algoritme mesin game atau lebih bergantung pada adegan game? Artinya, misalnya, dalam satu permainan ada adegan poligonal yang lebih tinggi, dan di lain ada tingkat overdraw yang besar atau banyak tekstur tembus pandang dengan anti-aliasing yang kompleks, dan karena itu kartu video dengan fillrate yang lebih tinggi mengatasi lebih baik? (Apakah program Anda "menyukai" arsitektur apa pun?).

M.Zh.: Perbedaan utamanya terletak pada fitur perangkat keras (perbedaan lebar bus memori, jumlah unit ROP, unit shader, dll.), serta implementasi driver. Semakin seimbang beban pada CPU dan GPU dan semakin baik penataan panggung, semakin sedikit fitur kartu video yang memengaruhi kinerja secara keseluruhan. Ini termasuk sikap ramping terhadap jumlah dan resolusi tekstur, overdraw rendah dari partikel dan objek transparan, penggunaan LOD, pengelompokan objek ke dalam batch, dan sebagainya - semua ini, dalam ukuran yang sama, berada di pundak pengembang mesin dan desainer game.

"NVIDIA DUNIA": Saat menguji kartu video, sebagai aturan, set permainan yang kira-kira sama digunakan. Seberapa tepat generalisasi ini saat menampilkan hasil pengujian untuk genre yang berbeda seperti penembak 3D, RPG orang ketiga, dan strategi. Apakah tolok ukur populer menunjukkan kinerja game Anda?

M.Zh.: Saya tidak akan membagi aplikasi berdasarkan genre. Semuanya sepenuhnya ada di tangan para pengembang algoritma yang mereka gunakan. Bagaimanapun, para pengembang mencoba memuat sistem pengguna setimbang mungkin dan pada saat yang sama mencapai daya tarik maksimum produk.

Melihat angka FPS di game seperti Crysis atau Need for Speed ​​terbaru, Anda bisa membayangkan secara kasar performa di sejumlah game modern lainnya, jadi di sini kami dapat dengan yakin mengatakan bahwa tes ini cukup indikatif. Game level ini dapat digunakan sebagai tolok ukur untuk kartu video, karena pada pengaturan kualitas tinggi mereka memuat subsistem grafis secara maksimal.

"NVIDIA DUNIA": Apa alasan peningkatan beban pada CPU dengan peningkatan resolusi? Benarkah meningkatkan detail model untuk meminimalkan "angularitas" mereka membutuhkan lebih banyak daya CPU untuk animasi, memotong primitif tak terlihat, membangun volume bayangan, dll.? Apakah efek ini ada di game Anda?

M.Zh.: Peningkatan resolusi seharusnya tidak secara langsung mempengaruhi beban pada CPU, kecuali, tentu saja, mesin menyediakan peningkatan otomatis dalam poligonalitas model, tessellation tambahan, dan jumlah bingkai animasi yang lebih besar untuk model. Jika, saat resolusi meningkat, beban pada CPU bertambah tanpa alasan, masalahnya terletak pada kode permainan atau pada driver kartu video.

"NVIDIA DUNIA": Bisakah beban CPU meningkat ketika pemfilteran anisotropik diaktifkan? Hal yang sama berlaku untuk Full Scene Antialiasing. Jika ini mengharuskan seluruh pemandangan digambar dengan resolusi dua kali lipat, maka secara teoritis jumlah segitiga juga dapat meningkat.

M.Zh.: Jawaban untuk kedua pertanyaan tersebut adalah tidak. Jika pemfilteran anisotropik diaktifkan, beban pada unit tekstur akan meningkat. Dengan FSAA diaktifkan, pipeline piksel mendapatkan lebih banyak pekerjaan. Sedangkan untuk resolusi yang lebih tinggi, menggandakan jumlah piksel akan meningkatkan jumlah operasi di shader piksel, unit ROP, dan TMU.

"NVIDIA DUNIA": Proses transfer kalkulasi ke GPU shader sudah berlangsung sangat lama, awalnya T&L, clipping. Apakah animasi model pada GPU dipertimbangkan saat ini? Apa, pertama-tama, tetap dalam hal mesin 3D untuk perhitungan pada CPU? (Apa yang Anda andalkan pada GPU selain T&L?).

M.Zh.: Mesin yang digunakan dalam proyek kami tidak melakukan perhitungan apa pun pada GPU. Secara teoritis, jika, katakanlah, kami harus menghitung fisika banyak objek secara real time, kami dapat menggunakan PhysX yang sama, yang melakukan perhitungan dengan sempurna pada GPU NVIDIA, tetapi karena spesifikasi proyek, kami memiliki kemampuan CPU yang cukup.

"NVIDIA DUNIA": Dalam beberapa tahun terakhir, akselerator video telah menjadi "pintar", mereka sendiri menggunakan metode untuk memotong primitif yang tidak terlihat, seperti: buffer-z hierarkis. Seberapa efektif mereka? Apakah mungkin sekarang untuk memasukkan semua segitiga ke dalam akselerator video sehingga ia menggambar semuanya dengan sendirinya? Pada zaman game 3D pertama (seri Quake dan Unreal), metode canggih digunakan untuk mereduksi segitiga yang dirender, pohon BSP, dll. Seberapa relevankah hal ini sekarang?

M.Zh.: Tentu saja, Anda tidak boleh mengandalkan akselerator video untuk secara mandiri menentukan objek mana yang harus digambar dan mana yang tidak akan terlihat. Kita harus menerapkan teknik kliping awal yang tidak perlu, karena transfer informasi yang berlebihan ke GPU menyebabkan penurunan kinerja. Jadi, masalahnya masih relevan, meskipun pada tingkat yang jauh lebih rendah. Terutama dalam kasus di mana Anda harus menggambar jumlah besar berbagai objek. Faktanya adalah bahwa kartu modern sibuk tidak hanya dengan memotong yang tidak perlu, tetapi juga sarat dengan perhitungan jenis pencahayaan yang lebih kompleks, dll. Oleh karena itu, jika ada kesempatan dan sumber daya untuk membantu kartu video, ini harus dilakukan.

Misalnya, di mesin BigWorld, perpustakaan Umbra digunakan untuk memotong objek yang tidak terlihat sebelum tahap menggambar. Adegan adalah pohon BSP, yang juga memungkinkan Anda dengan cepat dan efisien membuang fragmen adegan yang jelas-jelas di luar jangkauan.

"NVIDIA DUNIA": Pada suatu waktu ada situasi seperti itu, sekitar waktu krisis P4, bahwa kemacetan sistem adalah prosesor, yang tidak dapat "memuat" akselerator video, dan untuk meningkatkan FPS dalam game, pertama-tama, a model CPU top-end diperlukan. Apakah ada hubungan serupa antara CPU dan GPU sekarang, atau apakah prosesor telah melampaui tingkat kinerja kritis tertentu dan dapatkah kita menggunakan prosesor yang murah dan kartu video yang kuat? Ini mengacu pada game dengan penekanan pada grafis, dalam gaya seperti Quake dan Doom.

M.Zh.: Prosesor yang lemah dengan kartu video yang kuat adalah penghambat sistem, karena banyak operasi, baik rendah (pembentukan aliran perintah kontrol oleh pengemudi) dan tingkat tinggi (logika terapan - loop permainan, pembaruan partikel, karakter animasi, fisika, suara, dll.) secara langsung bergantung pada kinerja CPU. Peran penting dimainkan oleh memori cache prosesor, yang agak kecil pada model murah.

Untuk pengoperasian kartu video yang paling efisien, sumber daya sistem, bus sistem berkecepatan tinggi, dan jumlah RAM yang cukup dengan kinerja yang baik juga diperlukan. Seringkali, subsistem video tidak dapat menunjukkan kemampuannya, hanya karena CPU tidak punya waktu untuk mentransfer data yang diperlukan ke dalamnya. Jadi, dalam hal menghemat sumber daya, cukup membeli prosesor rata-rata, motherboard sedikit di atas rata-rata, tetapi tidak berhemat pada kartu video dan RAM.

"NVIDIA DUNIA": DirectX dari versi ke versi menjadi lebih dan lebih seperti mesin grafis. Benarkah saat ini program 3D praktis terdiri dari panggilan API Direct3D dan sebagian besar perhitungan dilakukan di dalamnya? Bagaimana Anda menilai? versi terbaru DirectX? Apakah itu menjadi mesin yang hampir lengkap dan berapa banyak versi lagi yang dibutuhkan?

M.Zh.: Direct3D tidak dapat dilihat sebagai mesin grafis terpisah dan tidak mungkin, di masa mendatang, Microsoft akan mengambil langkah seperti membuat mesin permainannya sendiri. Ini tidak praktis karena sejumlah alasan, termasuk banyak perbedaan dalam persyaratan mesin untuk proyek game yang berbeda. Misalnya, simulator mobil, strategi waktu nyata, dan penembak 3D memiliki fitur khas yang tidak memungkinkan mesin yang sama digunakan secara efektif dalam ketiga kasus tersebut.

Di Direct3D versi kesepuluh, level abstraksi baru saat bekerja dengan sumber daya dan kemungkinan tambahan untuk mengembangkan shader muncul, trik seperti Stream Output menjadi tersedia. Pada saat yang sama, D3D tetap seperti sebelumnya - API tingkat rendah, yang dengannya pengembang dapat merancang mesin permainan untuk tugas tertentu.

"NVIDIA DUNIA": Umumnya, Akhir-akhir ini ada "globalisasi" game dan mesin 3D. Ada beberapa platform yang lebih populer tempat banyak game dibuat. Apakah ini proses yang objektif? Apakah masuk akal bagi pengembang untuk menulis mesin mereka sendiri sekarang, ketika Anda dapat melisensikan mesin berfitur lengkap yang sudah jadi. Misalnya, versi lain dari Unreal Engine baru-baru ini dirilis, yang telah diunduh puluhan ribu kali. Berapa lama sampai semua game akan menggunakan satu atau dua mesin 3D?

M.Zh.: Kami menggunakan BigWorld dan sejauh ini senang dengannya. Berkenaan dengan "globalisasi", keajaiban tidak mungkin terjadi, dan CryTek, Epic, dan sejumlah lainnya memutuskan untuk saling memberikan bagian dari pasar mesin game. Jangan lupa bahwa, sebagai suatu peraturan, game yang dibuat pada mesin yang sama sangat mirip, yang tidak selalu merupakan hal yang baik. Kemungkinan besar, jumlah mesin hanya akan bertambah, dengan keberangkatan ke spesialisasi yang semakin sempit. Bagaimanapun, akan selalu ada mesin unik.

"NVIDIA DUNIA": Benarkah kartu video terbaru telah menjadi sangat kuat dalam hal daya mentah dan, tidak berbeda dari model sebelumnya dalam hal efek, dapat mengungkapkan potensinya, pertama-tama, pada sistem dengan monitor besar (dari 1920x1200) dalam mode dengan antialiasing dan penyaringan anisotropik penuh? Apakah masuk akal bagi seseorang dengan monitor, misalnya, 1280x1024, bukan penggemar penyaringan dan AA, untuk membeli kartu video baru seperti GTX285 dan Radeon pada proses teknis baru?

M.Zh.: Saya setuju bahwa itu. Namun, bagaimanapun, jangan lupakan monitor yang layak, dengan kualitas reproduksi warna yang memadai, resolusi tinggi, kontras. Anda akan mendapatkan lebih banyak kesenangan dari permainan. Tetapi bahkan jika Anda memutuskan untuk tidak mengganti monitor favorit Anda, ada baiknya mengganti kartu, karena ini pasti akan mengarah pada peningkatan kinerja sistem Anda, karena beberapa algoritma perhitungan lama pada kartu baru sudah diterapkan di perangkat keras. .

"NVIDIA DUNIA": Sebelumnya, pengembang game konservatif dalam menggunakan kemampuan dan efek dari kartu video terbaru, karena mereka berfokus pada kartu yang paling umum saat ini. Artinya, misalnya, DirectX n bersyarat keluar, tetapi game masih ditulis untuk DirectX n-2. Apakah situasinya berubah baru-baru ini? Apakah mudah dalam permainan untuk memanfaatkan kemampuan efek baru untuk akselerator video yang baru saja dirilis?

M.Zh.: Jika Windows 7 telah dirilis beberapa tahun sebelumnya, atau Microsoft telah mengabaikan gagasan untuk menghubungkan DirectX 10 ke Windows Vista, pengembang game akan telah beralih ke setidaknya versi 10 dari API sejak lama. Namun, sekarang kami memiliki apa yang kami miliki: semua hits tahun terakhir gunakan DX9, dan dukungan DX10 sering kali merupakan taktik pemasaran.

"NVIDIA DUNIA": Seberapa intensif biasanya game menggunakan kekuatan akselerator video terbaru pada saat dirilis? Misalnya, apakah semua fitur arsitektur GT200 digunakan sekarang? Apakah ini situasi yang umum ketika, pada saat rilis, GPU baru hanya berkinerja sedikit lebih baik pada game yang ada, tetapi seiring waktu, karena game dioptimalkan untuk arsitektur baru dan fitur baru diterapkan, nilainya tampaknya tumbuh? Seberapa sering game Anda menggunakan fitur baru?

M.Zh.: Dalam hal arsitektur baru dan model shader terpadu, hampir semua orang menang. Beban kerja vertex GPU dan pipeline piksel telah merata di mana ada kemiringan besar di satu arah atau lainnya. Untuk fitur baru, semakin tinggi persentase kartu video yang mendukung fitur tertentu, semakin banyak pengembang game yang bersedia menggunakannya dalam proyek mereka. BigWorld yang kami gunakan berfokus pada kemampuan DirectX 9 dan SM 3.0.

"NVIDIA DUNIA": Saat ini, game online telah menjadi sangat populer. Apakah ini meninggalkan jejaknya di industri akselerator video? Karena mesin game semacam itu berfokus pada serangkaian fitur dasar yang dimiliki oleh banyak pengguna, dan tingkat FPS masih dibatasi oleh koneksi Internet, tampaknya tidak ada gunanya membeli akselerator video kelas atas untuk game online. Bukankah ini mengerem perkembangan grafis game? Peningkatan popularitas game browser dalam "2D penuh", yang tidak memerlukan akselerator.

M.Zh.: Jika Anda melihat jumlah pelanggan World of Warcraft dan membandingkannya dengan, katakanlah, Aion atau Age of Conan, jawabannya jelas: untuk game online, gameplay, elaborasi dunia permainan, komponen PvP yang menarik, dan momen lain yang tidak terkait langsung dengan jadwal. Ini tidak mengerem perkembangan grafis, karena para pemain tidak hidup dalam satu MMORPG. Penembak baru, simulator mobil, dan RPG pasti akan terus meningkatkan standar untuk game 3D. Game MMO perlahan tapi pasti berjalan dengan cara yang sama, bertujuan untuk menarik audiens game yang lebih besar. Omong-omong, Blizzard yang sama sekarang dikabarkan sedang mengerjakan MMOG baru dan mereka tidak mungkin menggunakan mesin berusia 8 tahun dalam proyek baru mereka.

"NVIDIA DUNIA": Sejauh mana teknologi SLI dan Crossfire membutuhkan dukungan dari pengembang game? Apa alasan efektivitas yang berbeda dari teknologi ini untuk game yang berbeda? Dengan fitur mesin game atau dengan adegan game? Seberapa besar keuntungan game Anda dengan menggunakan SLI dan Crossfire?

M.Zh.: Mengoptimalkan mesin untuk dua kartu video adalah proses yang sangat sulit. Penting untuk mengatur transfer data ringkas ke GPU dengan hati-hati dan menyeimbangkan mesin dalam hal beban antara GPU dan CPU. Jika aplikasi, saat bekerja pada satu kartu, sudah bersandar pada CPU atau transfer data melalui bus, Anda harus melupakan SLI atau Crossfire. Faktanya, inilah perbedaan antara game-game tertentu saat mengerjakan akselerator berpasangan. Game kami masih memberikan peningkatan kinerja sekitar 10% pada SLI, tetapi sekarang kami mengoptimalkan sejumlah modul untuk meningkatkan kinerja dalam mode tersebut.

"NVIDIA DUNIA": Untuk waktu yang lama, banyak yang telah dikatakan tentang krisis di pasar PC dan transisi bertahap dari game ke konsol. Tapi ini belum terjadi. Bisakah kita mengharapkan ini di masa depan? Benarkah karena perangkat keras standar, pemrograman grafis untuk konsol jauh lebih mudah? Atau apakah jeda abadi dari set-top box dalam hal "perangkat keras" menghilangkan keseragaman?

M.Zh.: Konsol game memiliki sejumlah keunggulan bagi pengembang (satu platform, satu set kemampuan dan, sebagai hasilnya, kinerja yang sama untuk semua pemain), tetapi pasar untuk game PC dan, khususnya, game online terus berkembang, jadi kita tidak bisa mengharapkan transisi besar-besaran ke konsol. Jangan lupa bahwa perilisan konsol game dengan perangkat keras yang lebih kuat dibatasi oleh produsen konsol itu sendiri, mencoba mengganti biaya produksi konsol generasi sebelumnya melalui penjualan game saat ini. Oleh karena itu, sebelum rilis Playstation 4 atau Xbox 720, akan memakan waktu lama dan akan banyak proyek yang berfokus pada konsol generasi saat ini. Dalam beberapa kasus, seperti Nintendo Wii, perangkat keras canggih sama sekali tidak diperlukan untuk mencapai hasil yang luar biasa.

"NVIDIA DUNIA": Benarkah sekarang dalam permainan kombinasi metode proyeksi untuk membangun bayangan dari model dan metode volume bayangan dengan volume yang dihitung secara dinamis atau statis untuk bayangan pada objek bergerak, model dan senjata, dan dari bagian model yang bergerak pada diri mereka sendiri?

M.Zh.: Alih-alih volume bayangan, teknik proyeksi yang sama sering digunakan, dengan modifikasi (peta bayangan bertingkat, peta bayangan terpisah untuk bayangan diri, dll.). Volume bayangan memberikan batas bayangan yang jelas, tetapi mengalami tingkat pengisian yang tinggi, perhitungan CPU tambahan, dan implementasi kompleks tepi bayangan lembut.

"NVIDIA DUNIA": Apakah metode shading yang ada memiliki perspektif, dalam hal membangun pencahayaan dinamis untuk seluruh pemandangan? Artinya, dengan peningkatan bertahap dalam kekuatan akselerator video, mereka dapat digunakan untuk menghitung semua pencahayaan dalam dinamika? Atau perlukah menerapkan beberapa metode baru?

M.Zh.: Bayangan proyektif telah berkembang jauh dalam permainan modern, dan beberapa modifikasi mereka akan digunakan untuk waktu yang lama, dikombinasikan dengan efek tambahan seperti SSAO. Tentu saja, jika ada pelacakan sinar GPU gratis, maka baik bayangan proyektif maupun volumetrik tidak memiliki peluang.

"NVIDIA DUNIA": Bagaimana Anda menilai teknologi Precomputed Radiance Transfer dari sudut pandang aplikasi dalam game? Apakah Anda akan menggunakannya di masa depan?

M.Zh.: PRT membutuhkan perhitungan yang memakan waktu, tidak dapat digabungkan dengan model animasi dan, pada prinsipnya, tidak memberikan keuntungan besar dalam hal visual, dibandingkan dengan Ambient Occlusion yang sama. Sebagai contoh, Anda dapat mengambil Halo 3, yang menggunakan PRT, tetapi tidak menonjol untuk kualitas pencahayaan dibandingkan dengan Gears of War atau Crysis yang sama.

"NVIDIA DUNIA": Arsitektur DirectX 11 dan Fermi, apakah layak menunggu akselerator dan game DirectX 11, atau apakah itu versi API yang dapat dilewati? Dapatkah model akselerator Direct X 11 yang lebih muda, yang menghasilkan daya absolut, rasio pengisian, lebih baik daripada model lama, tetapi lebih bertenaga dengan dukungan DirectX 10? Bisakah kita mengharapkan, dengan dirilisnya arsitektur Fermi, semacam lompatan kualitatif dalam grafik game, atau akankah pertumbuhan ekstensif, lebih banyak segitiga, lebih cepat pada resolusi tinggi, dll.? Jika Fermi tersedia pada saat pengembangan gim Anda, seberapa berbeda gim tersebut, dalam hal grafis?

M.Zh.: Versi kesebelas DirectX menawarkan lebih banyak kemungkinan untuk komputasi pada GPU, sementara, dibandingkan dengan DX10, itu tidak membawa perbaikan radikal untuk grafis 3D. Sedangkan untuk Fermi, fitur yang paling menarik menurut saya adalah full guided tessellation untuk model 3D.

Mikhail Zhivets, direktur teknis proyek World of Tanks, Wargaming.net

Setelah pertunjukan tertutup perdana World of Warships di gamescom dan IgroMir, peluncuran resmi game semakin dekat. Pengujian alfa tertutup sedang berjalan lancar sekarang, dan kami, pengembang Lesta Studio, divisi Wargaming St. Petersburg, masih memiliki banyak pertanyaan untuk dipecahkan. Pada saat yang sama, kami berhasil meninggalkan banyak rintangan. Di bawah ini adalah cerita tentang bagaimana kami menyesuaikan eksportir mesin kami dengan kebutuhan Kapal dan membangun proses verifikasi konten.

Pengiriman standar mesin

Setiap mesin menyertakan toolkit untuk mengekspor model 3D dari editor 3D ke format datanya sendiri. BigWorld kami, yang menjadi dasar pembuatan World of Tanks, tidak terkecuali. Mendukung ekspor dari 3D Max dan Maya. Hampir semua proyek game memerlukan adaptasi eksportir standar dengan spesifikasi proyek. Dalam proyek kami, model kapal bersifat spesifik.

Versi pertama dari eksportir yang diadaptasi dari Maya hanya "melatih ulang" untuk mengenali struktur yang lebih kompleks dari adegan kapal. Sedikit kode kontrol Python ditambahkan ke kode C ++ yang ada, serta plugin untuk Maya dengan UI di wxWidget. Itu terlihat seperti ini:


UI dari eksportir yang disesuaikan

Alat yang dihasilkan memiliki banyak kekurangan.

Ekspor hanya dapat dilakukan dengan partisipasi pengguna, yang harus "memberi tahu" eksportir tentang isi adegan tersebut. Menggunakan alat ini untuk mengotomatiskan berbagai proses, misalnya, verifikasi otomatis konten pada tahap pembuatan kit distribusi, tidak mungkin dilakukan.

Eksportir menuntut pengetahuan pengguna tentang parameter yang jauh dari jelas, bekerja lambat, praktis tidak mendukung verifikasi adegan, dan juga membutuhkan sejumlah besar sumber daya untuk dukungan.

Arsitektur merupakan tantangan utama untuk perluasan fungsionalitas di masa depan. Ekspor sebenarnya adalah operasi atom (satu set fungsi spaghetti) yang menerjemahkan data dari satu struktur (adegan Maya yang dimuat) ke struktur lain (BigWorld) langsung ke file fisik. Ketika serializer dan logika bisnis diimplementasikan "dalam monolit" dan tidak ada model data, tidak mungkin untuk menambahkan pemrosesan data (pra / pasca-pemrosesan), serta penggunaan kembali (penggunaan kembali kode) serializer dan model data di alat lain yang mengimplementasikan bisnis mereka sendiri. Tidak mungkin membangun proses produksi konten yang lebih kompleks.

Seiring waktu, menambahkan fungsionalitas baru ke kode yang ada menjadi hampir tidak mungkin. Diputuskan untuk menulis ulang eksportir "dari awal" dengan arsitektur baru.

Kehidupan sehari-hari yang keras

Tingkat proyek kami telah meningkatkan persyaratan untuk kualitas, kompleksitas, dan volume konten. Studio kami telah berkembang pesat selama beberapa tahun terakhir. Kami sekarang memiliki kesempatan untuk mengalokasikan sumber daya dalam jumlah yang cukup untuk tugas-tugas yang terkait dengan produksi konten. Profesional dengan latar belakang besar dalam pengembangan arsitektur, teknologi dalam C ++ / C # datang kepada kami. Pada saat yang sama, untuk pengembang eksportir ini adalah pengalaman pertama menggunakan Python dan Maya API. Ini memperkenalkan risiko tambahan yang perlu diperhitungkan.

Kami memperkirakan refactoring eksportir pada dua atau tiga man-months. Seseorang tidak dapat melakukannya tanpa optimisme dalam pengembangan game.

Kami mengidentifikasi risiko berikut sebagai:

Kurangnya persyaratan formal;
tingkat kemahiran dalam Python;
kompleksitas API Maya;
refactoring algoritma untuk memproses primitif.

Sebagian besar waktu sebenarnya dihabiskan untuk mengumpulkan persyaratan dari sumber informal seperti pengembang yang menjadi manajer, pekerja lama, bidang torsi, dan kode eksportir yang ada. Nugget pengetahuan ini telah diformalkan dan ditulis dalam bentuk persyaratan, spesifikasi, dan diagram UML di Confluence.

Prototipe pertama menunjukkan kebutuhan untuk menggunakan konsep ruang nama dan modul Python (__init__.py). Juga, sebuah mekanisme telah dibuat yang memungkinkan Anda untuk "secara transparan" menggunakan fungsionalitas dari pustaka C ++ (.pyd).

Sebuah buku terpisah dapat ditulis tentang kerumitan dan kebingungan API Maya. Fungsionalitas apa pun memerlukan pembuatan prototipe, konsultasi dengan seniman 3D, dan pengembang mesin (rendering).

Eksportir standar memiliki implementasi sendiri dari sejumlah besar algoritma, misalnya, triangulasi poligon, perhitungan matriks transformasi node bersarang, dll. Kami membuang mereka demi menggunakan API Maya, yang sangat meningkatkan kinerja eksportir.

Sudah saatnya untuk menambahkan aturan ke hukum Murphy bahwa setiap proyek yang Anda buat pasti akan dilaksanakan tidak lebih dari waktu "x3" dari yang direncanakan, jika Anda tidak meninggalkannya.

Hasilnya sepadan dengan usaha yang kami lakukan. Pada akhirnya, bahkan artis utama kami yang bertanggung jawab untuk mengekspor model, setelah beberapa bulan beroperasi, menemukan eksportir kami "hampir sempurna".

Mari kita lihat di bawah tenda

Di studio kami, skrip dengan Python digunakan secara aktif. Kami mencoba menerapkan seluruh eksportir di atasnya. Secara alami, Python tidak cocok untuk memproses data biner besar seperti buffer vertex, buffer indeks, dll. Model data dan serializer dari wadah tersebut diimplementasikan dalam C ++ sebagai library (.pyd) , yang secara alami "cocok" ke dalam model data dengan Python. Semua logika bisnis diimplementasikan dengan Python.

Kerangka kerja eksportir direncanakan akan digunakan tidak hanya untuk tugas ekspor "manual" dari Maya, tetapi juga untuk tugas apa pun yang fungsinya dapat digunakan kembali, misalnya, untuk mengotomatiskan verifikasi konten. Untuk setiap toolkit yang kami kembangkan, kami memerlukan API Python, baris perintah, dan alat UI.

Arsitektur

Arsitektur kerangka kerja eksportir bersifat modular, berlapis. Ada lapisan fisik dan logis, serta lapisan domain. Setiap lapisan berisi modul terpisah: model data, logika bisnis, serializer, serta konverter yang dapat mengubah model data dari satu lapisan ke model data lapisan lain. Lapisan fisik dan logis sebenarnya mengimplementasikan analog dari arsitektur ORM.

Arsitektur lapisan domain dirancang untuk pemrosesan model data yang nyaman dengan logika bisnis. Itu benar-benar terisolasi dan tidak mengandung asumsi tentang bagaimana itu akan diserialkan ke penyimpanan fisik.


Arsitektur berlapis eksportir

Proses ekspor

Arsitektur berlapis memperkenalkan fitur tertentu dari proses ekspor. Kami sebenarnya sedang melakukan deserializing dua (atau lebih) model dari sumber yang berbeda (Maya dan BigWorld Engine). Setelah itu, model-model ini digabungkan menjadi satu yang baru. Model baru ini kemudian diserialkan ke dalam format BigWorld-Engine.


Proses ekspor

Fleksibilitas proses produksi konten

Arsitektur yang diimplementasikan memudahkan untuk membangun proses produksi konten yang kompleks. Misalnya, model kapal utama kami secara teknologi terdiri dari tiga adegan Maya yang terpisah, yang masing-masing dikembangkan secara bersamaan oleh departemen yang berbeda:

Adegan pertama berisi model visual dan model tabrakan.
Adegan kedua berisi model balistik.
Yang ketiga berisi port efek.

Selain itu, kotak peralatan mesin (editor) menambahkan (mengedit) datanya sendiri ke model format mesin yang diturunkan (adegan keempat).

Eksportir dengan mudah menyelesaikan tugas non-sepele menggabungkan keempat adegan menjadi satu model kapal yang dihasilkan.

Verifikasi konten

Sistem verifikasi konten memungkinkan kami untuk mencari kesalahan konten baik di setiap lapisan (sumber) secara terpisah, dan di konten yang dihasilkan. Jumlah verifikator kini mencapai beberapa lusin. Verifikasi konten otomatis dibangun ke dalam proses pembangunan distribusi, yang memungkinkan untuk mengecualikan faktor manusia sebanyak mungkin dan menjamin integritas dan kemurnian teknis konten.


Contoh verifikasi model kapal di Maya

Anggaran konten dan bebek di kamar mandi

Bagian penting dari proses verifikasi konten adalah memeriksa anggaran, misalnya, memverifikasi anggaran poligon. Gambar di bawah ini menampilkan, khususnya, informasi tentang jumlah segitiga untuk model visual untuk setiap lapisan:


Plugin Maya UI

Sebuah ilustrasi yang jelas tentang perlunya verifikasi tersebut adalah cerita yang diceritakan kepada saya oleh rekan-rekan tentang salah satu proyek sebelumnya. Di peta ada sebidang tanah yang dibangun dengan rumah-rumah yang tidak bisa dihancurkan. Begitu kamera mengalihkan pandangannya ke area ini, FPS langsung turun dengan liar. Setelah mempelajari masalahnya, ternyata di dalam salah satu rumah ada bak mandi yang di dalamnya ada bebek "plastik" kecil yang sedang berenang. Semua ini akan tampak seperti lelucon lucu para seniman, jika bukan karena fakta bahwa model bebek berisi sekitar satu juta poligon.

Dalam praktiknya, sangat sulit untuk memenuhi nilai anggaran. Banyak model secara objektif merupakan pengecualian. Menetapkan nilai anggaran dalam bentuk rentang juga tidak menyelesaikan masalah, karena seiring waktu, model poligon mulai cenderung ke nilai rentang yang lebih tinggi. Dalam kasus kami, kami berencana untuk mengubah anggaran pribadi model tersebut yang tidak sesuai dengan anggaran standar model jenis ini.

Pemrosesan konten

Pada setiap tahapan ekspor diperlukan pengolahan (pre/post-processing). Misalnya, sebelum mengubah model data logis dari lapisan Maya ke model data domain untuk meriam pertahanan udara, diperlukan rotasi awal kerangka meriam sebesar 45 derajat pada sumbu Y dan pemindahan kerangka tersebut. Arsitektur kami memungkinkan untuk mengintegrasikan berbagai pemrosesan secara transparan pada setiap tahap ekspor.




Contoh model sebelum dan sesudah pra-pemrosesan

dukungan X64

Baru-baru ini, artis kami secara massal beralih dari 32-bit Maya 2012 ke 64-bit Maya 2014. Karena eksportir hampir seluruhnya ditulis dengan Python, kami praktis tidak memiliki masalah dengan dukungan x64. Hanya perpustakaan (.pyd), yang diimplementasikan dalam C ++, memerlukan sedikit "perdukunan".

Sekarang eksportir dapat dengan mudah digunakan dalam proses x32 dan x64, karena eksportir itu sendiri mendefinisikan dan memuat rakitan pustaka C ++ (.pyd) yang diperlukan.

Verifikasi kartu

Saat mengembangkan arsitektur eksportir, kami tidak dapat memprediksi sebelumnya alat dan otomatisasi apa yang memungkinkan untuk digunakan kembali. Otomatisasi verifikasi kartu adalah contoh bagaimana arsitektur eksportir "benar" menemukan jalannya ke alat lain.

Verifikasi peta membangun dan memverifikasi grafik ketergantungan peta dari objek lain yang terletak di atasnya. Secara khusus, peta menggunakan model visual lanskap (batu, gunung es), bangunan (rumah, hanggar, marina), peralatan (pesawat, kapal), dll.

Keunikan pemverifikasi kartu adalah dapat memverifikasi tidak hanya keberadaan file model visual ini, tetapi juga model itu sendiri, menggunakan kerangka kerja eksportir. Ini menghilangkan faktor manusia, ketika departemen pengembangan peta (LA) harus mengambil kata dari departemen pengembangan model 3D (3D Art) bahwa model yang benar secara teknis sedang digunakan.

Membangun distribusi

Kerangka kerja eksportir menemukan kegunaannya dalam proses menyiapkan paket konten untuk distribusi. Distribusi tidak boleh mencakup model yang:

Tidak digunakan lagi;
masih dalam pengembangan;
ditujukan untuk versi produk berikutnya.

Berdasarkan daftar dasar objek game (objek game root), diperlukan untuk membangun grafik ketergantungan, yang menurutnya: daftar lengkap konten yang dibutuhkan. Tidak ada yang lebih mudah daripada mendeserialisasi model menggunakan kerangka kerja eksportir dan "mencari tahu" model lain apa yang diperlukan (referensi konten).

hasil

Sejarah pengembangan eksportir kami telah menunjukkan bagaimana ia berkembang dari alat sederhana yang sangat khusus menjadi sistem yang kuat yang menyelesaikan tugas-tugas langsungnya, dan juga menemukan aplikasi dalam proses produksi konten lainnya. Pengembangan dan penggunaan kembali yang sukses didasarkan pada arsitektur modular yang memungkinkan "kubus" individualnya digunakan untuk membangun sistem lain.

Dalam waktu dekat, eksportir akan melakukan tes lagi terkait perubahan format file BigWorld Engine. Kami yakin bahwa arsitektur yang mendasarinya tidak akan mengalami kesulitan dan akan dapat mendukung pekerjaan dengan format file yang ada dan yang baru.

  • Orientasi genre: MMO 3D dari genre apa pun;
  • Peron: PC, PS3, Xbox 360, iOS (iPad), Web;
  • Bahasa pemrograman: C++, Python;
  • Lisensi: indie dan komersial;
  • Membuka sumber: tidak disediakan atau disediakan untuk biaya yang meningkat;
  • Multipemain: server klien;
  • Keuntungan: kuat, dukungan untuk semuanya teknologi modern, dioptimalkan, dukungan iOS, murah untuk fitur seperti itu;
  • Kekurangan: tidak diberikan secara cuma-cuma;
  • Pengembang mesin: BigWorld Tech, Inc.

    BigWorld Engine adalah mesin 3D paling canggih untuk membuat game MMO. Game seperti "World of Tanks", "Pealm of the Titans" dari Wargaming.net dan game lain dari perusahaan pengembang game dunia lainnya dibuat di dalamnya. Lebih dari 15 game MMO telah dibuat di mesin ini. Ini dikembangkan oleh Teknologi BigWorld.

    Mesin yang dioptimalkan memungkinkan Anda membuat game dengan permintaan rendah dengan grafis yang memukau. Mesin memungkinkan Anda untuk port game ke iOS. Itu ditulis dalam bahasa pemrograman C ++, implementasi logika permainan di dalamnya dibuat dalam bahasa skrip Python yang nyaman. Ada alat yang kuat dan mesin klien-server. Untuk suara, perpustakaan FMOD didukung, dan perpustakaan lainnya terhubung melalui sistem plug-in. Bekerja dengan database XML dan MySQL. Kotak alat termasuk Editor Dunia yang kuat, Editor Model dan Editor Partikel.

    Harganya sangat terjangkau. Build BigWorld: Edisi Indie hanya berharga $299; BigWorld: Edisi Sumber Indie - $2,999; BigWorld: Edisi Komersial - dinegosiasikan secara individual.

    Mesin canggih ini tidak kalah kemampuannya dengan mesin dunia lain yang sejenis. Mesin ini tersedia dalam bahasa Rusia, Korea, Amerika, dan Jepang. Ada dokumentasinya, bisa bekerja di browser. Secara umum, Anda bisa mulai bekerja jika Anda memiliki pengetahuan dan ketekunan.

    Tidak lagi tersedia untuk lisensi pihak ketiga, karena Wargaming memutuskan untuk berhenti mendistribusikan mesinnya.

    Situs resmi: http://www.bigworldtech.com





    Rantai alat Teknologi BigWorld menyediakan sistem pembuatan konten MMOG ujung-ke-ujung yang lengkap yang akan meningkatkan kualitas dan ketepatan waktu permainan Anda. Semua alat dirancang untuk produksi kooperatif aset game dalam lingkungan tim yang besar, memastikan penggunaan sumber daya yang efektif dan alur konten yang lancar.

  • Kesulitan menemukan video tertentu? Maka halaman ini akan membantu Anda menemukan video yang sangat Anda butuhkan. Kami akan dengan mudah memproses permintaan Anda dan memberi Anda semua hasilnya. Tidak peduli apa yang Anda minati dan apa yang Anda cari, kami dapat dengan mudah menemukan video yang diperlukan, ke mana pun arahnya.


    Jika Anda tertarik dengan berita terkini, maka kami siap menawarkan kepada Anda berita terkini yang paling relevan di segala arah. Hasil pertandingan sepak bola, peristiwa politik atau dunia, masalah global. Anda akan selalu mengetahui semua peristiwa jika Anda menggunakan pencarian kami yang luar biasa. Kesadaran akan video yang kami sediakan dan kualitasnya tidak bergantung pada kami, tetapi pada mereka yang mengunggahnya ke Internet. Kami hanya menyediakan Anda dengan apa yang Anda cari dan permintaan. Bagaimanapun, menggunakan pencarian kami, Anda akan mengetahui semua berita di dunia.


    Namun, ekonomi dunia juga merupakan topik yang agak menarik yang mengkhawatirkan banyak orang. Cukup banyak tergantung pada kondisi ekonomi berbagai negara. Misalnya, impor dan ekspor produk atau peralatan makanan apa pun. Standar hidup yang sama secara langsung tergantung pada keadaan negara, serta gaji dan sebagainya. Bagaimana informasi seperti itu bisa berguna? Ini akan membantu Anda tidak hanya beradaptasi dengan konsekuensinya, tetapi juga dapat memperingatkan Anda agar tidak bepergian ke satu negara atau negara lain. Jika Anda seorang musafir terkenal, maka pastikan untuk menggunakan pencarian kami.


    Saat ini sangat sulit untuk memahami intrik politik dan untuk memahami situasi yang Anda butuhkan untuk menemukan dan membandingkan banyak informasi yang berbeda. Oleh karena itu, kami dapat dengan mudah menemukan untuk Anda berbagai pidato para deputi Duma Negara dan pernyataan mereka selama beberapa tahun terakhir. Anda dapat dengan mudah memahami politik dan situasi di arena politik. Politik dari berbagai negara akan menjadi jelas bagi Anda dan Anda dapat dengan mudah mempersiapkan diri untuk perubahan yang akan datang atau sudah beradaptasi dengan realitas kita.


    Namun, di sini Anda tidak hanya dapat menemukan berbagai berita dari seluruh dunia. Anda juga dapat dengan mudah menemukan film yang menyenangkan untuk ditonton di malam hari dengan sebotol bir atau popcorn. Dalam database pencarian kami ada film untuk setiap selera dan warna, Anda dapat dengan mudah menemukan gambar yang menarik untuk diri Anda sendiri. Kami dapat dengan mudah menemukan untuk Anda bahkan karya tertua dan paling sulit ditemukan, serta karya klasik yang diketahui semua orang - misalnya, Star Wars: The Empire Strikes Back.


    Jika Anda hanya ingin sedikit bersantai dan mencari video lucu, kami juga dapat menghilangkan dahaga Anda di sini. Kami akan menemukan untuk Anda sejuta video menghibur yang berbeda dari seluruh planet ini. Lelucon pendek akan dengan mudah menghibur Anda dan akan menghibur Anda sepanjang hari. Menggunakan sistem pencarian yang nyaman, Anda dapat menemukan apa yang akan membuat Anda tertawa.


    Seperti yang sudah Anda pahami, kami bekerja tanpa lelah agar Anda selalu mendapatkan apa yang Anda butuhkan. Kami telah membuat pencarian yang luar biasa ini khusus untuk Anda, sehingga Anda dapat menemukan informasi yang diperlukan dalam bentuk video dan menontonnya di pemutar yang nyaman.