Dalam menjawab pertanyaan ini untuk swquinn , jawabannya mengangkat pertanyaan yang lebih relevan yang ingin saya dengar jawabannya. Saya akan memposting strategi kami sendiri (berjanji saya tidak akan menerimanya sebagai jawaban), tetapi saya ingin mendengar orang lain.
Khususnya: bagaimana Anda menetapkan anggaran yang masuk akal untuk tim konten Anda. Biasanya salah satu pertanyaan pertama yang diajukan dalam suatu pengembangan adalah: berapa anggaran poligon kita? Tentu saja, hari-hari ini jarang bahwa vertex / jumlah poli saja adalah faktor pembatas, bukan kompleksitas shader, fill-rate, kompleksitas pencahayaan, semua ikut bermain.
Yang diinginkan tim konten adalah angka / batasan yang sulit untuk dikerjakan sedemikian rupa sehingga mereka memiliki harapan yang masuk akal bahwa konten mereka, begitu benar-benar masuk ke mesin, tidak akan terlalu berat. Mengingat bahwa 'itu tergantung' bukanlah jawaban yang sangat berguna, saya ingin mendengar strategi yang memungkinkan saya memberi mereka batasan yang bisa diterapkan tanpa a) menyesatkan, atau b) salah.
sumber
Jawaban:
Dari pemahaman saya, jauh lebih mudah untuk mengurangi kompleksitas model daripada menambahkan detail untuk model yang telah dikuliti dan dicurangi. Saya tahu beberapa perusahaan mengambil keuntungan dari ini dengan mengumpulkan aset yang sangat rinci dan menurunkannya tergantung pada situasinya.
Valve melakukan ini dengan NPC mereka. NPC dimodelkan dalam detail ekstrem tanpa pemetaan apa pun dan kemudian menurunkan detail ke tingkat yang dapat diterima oleh teknologi dan trik saat ini seperti berbagai teknik pemetaan yang diterapkan berdasarkan model terperinci (atau bahkan dibuat secara otomatis).
Ini juga membantu dengan pembuktian di masa depan karena Anda tidak perlu membuat ulang aset, hanya tweek mereka untuk setiap proyek baru. Ini juga memiliki keuntungan bahwa tidak perlu menunggu tim untuk melakukan pembandingan yang bersifat khusus sebelum aset dapat mulai dikembangkan. Para seniman dapat sepenuhnya terlibat sejak hari pertama.
sumber
Oke, jadi strategi kami adalah:
Akhirnya: bersikap konservatif dengan angka-angka Anda. Rendering bukan satu-satunya hal yang harus dilakukan gim Anda, jadi tentukan satu proporsi bingkai yang ingin Anda habiskan untuk rendering, dan jadikan itu sebagai target Anda. Misalnya jika Anda ingin menghabiskan dua pertiga dari frame Anda pada rendering 30fps, maka targetkan 1s / 22ms (45 fps) dalam pengujian Anda.
Dari semua itu, Anda harus bisa memberikan contoh adegan. Misalnya, ini adalah adegan dengan 200 ribu poligon, 5 lampu statis dan tidak lebih dari 3 lampu dinamis per model, dengan 15 karakter polys 50K dan 30 tulang, dan beroperasi pada 60fps dan menempati 30MB dalam memori.
sumber
Hitungan Vertex
Saya telah meneliti "Hitungan Poligon" selama lebih dari 15 tahun. Tidak ada cara ketat untuk mengetahui berapa batasan Anda, terutama dengan perangkat lunak dan perangkat keras yang lebih modern. Batas jauh lebih berguna pada mesin yang hanya mendukung 4.000 segitiga untuk seluruh level. Sekarang, Anda akan menemukan sebagian besar objek di lingkungan permainan akan melebihi itu secara individual.
Yang terpenting adalah apa yang dilakukan mesin dengan strip poligon.
Saat mesin membuat setiap model, dibutuhkan koordinat UV yang dipetakan, tekstur / bahan yang ditampilkan pada segitiga, dan membuat strip segitiga. Dalam kebanyakan kasus, kipas segitiga dipecah menjadi strip segitiga terpisah per segitiga. Ini meningkatkan jumlah strip segitiga, menurunkan kinerja.
Contoh utama untuk memperbaiki ini adalah bagian atas datar silinder. Paket 3D umumnya mengatur kipas segitiga dengan simpul di tengah. Saya menghapus tepi dan simpul tengah, lalu membuat paha depan. Ini kemudian harus melakukan triangulasi menjadi strip segitiga tunggal alih-alih beberapa strip wajah tunggal, tanpa mengubah jumlah poligon.
Ambil hitungan poligon sebagai panduan, dan perhatikan bagaimana Anda membuat model, dan UV Map mesh. Kurang perpecahan di jala ketika Pemetaan UV sering kali bisa lebih bermanfaat.
Selanjutnya, pertimbangkan apa yang bisa dipalsukan dengan peta normal. Wajah datar dengan banyak detail case biasanya dipetakan secara normal. Kurva hanya perlu bulat di mana Anda dapat melihat siluet. Saat melihat wajah melengkung ke depan, Anda tidak akan melihat perbedaan antara assett resolusi tinggi Anda, dan assett resolusi game. Siluet inilah yang membuat perbedaan dalam model Anda ketika peta normal terlibat. Silhouette sekarang dapat dimodifikasi dengan DirectX 11, menggunakan pemetaan tessellation dan perpindahan.
Desain permainan
Pertimbangkan hal berikut saat merancang game Anda:
Dengan menggunakan gim dan jenis tampilan, tentukan kedalaman tampilan seperti apa. Apakah Anda akan melihat objek yang jauh, dan dengan kejelasan apa? Apakah Anda membuat sesuatu dengan tampilan terbatas, seperti penembak koridor? (mis. Gears of War) Apakah Anda membuat sesuatu bebas berkeliaran dengan lanskap terbuka? (mis. Skyrim)
Setelah Anda tahu seperti apa tampilannya, Anda dapat meneliti game yang serupa.
Animasi kemudian akan membatasi kemampuan Anda untuk meningkatkan jumlah poligon. Sambungan statis, apa pun yang tetap berada di posisi yang sama paling murah pada GPU dan CPU. Apalagi jika mereka bukan benda fisika. Untuk objek fisika, Anda sering dapat membuat lambung tabrakan sederhana, dan jerat visual yang kompleks. Tidak ada interaksi yang cukup di sebagian besar game untuk melihat perbedaannya. Animasi menggerakkan model Anda 3-Dimensi, dengan beberapa tulang per titik, memadukan antara bobot masing-masing. Ini bisa mahal pada waktu CPU, yang dapat berbenturan dengan AI dan fisika berbasis perangkat lunak. Semakin banyak simpul yang dipengaruhi oleh jumlah tulang di seluruh model akan menurunkan kinerja CPU. Ini adalah alasan lain mengapa karakter permainan dianggap "seni". Sangat sulit untuk menentukan batas poligon.
Teladan saya
Saya menggunakan UDK, membuat penembak orang ketiga yang berjalan lambat, dengan jumlah pemain dan NPC terbatas di layar setiap saat. Untuk ini, saya menargetkan sekitar 10.000 segitiga per pemain, 5.000 segitiga untuk tipikal, musuh generik, dan jika saya membuat karakter gaya "bos", sekitar 15.000. Selain itu, senjata untuk orang ketiga sekitar 4.000 segitiga akan muncul sangat rinci. Kendaraan sekitar 10.000 segitiga. Semuanya akan membutuhkan Level of Detail, karena saya memerlukan jarak tampilan yang jauh.
Jika membuat orang pertama, saya akan mendasarkan lengan pada sekitar 2.000 segitiga, senjata sekitar 5.000 segitiga, dengan pemetaan normal untuk masing-masing.
Kesimpulan
Inilah yang mungkin berarti "Itu tergantung", tetapi saya pikir itu mungkin mengklarifikasi beberapa hal yang orang sering bertanya-tanya.
sumber
Salah satu metode yang dapat saya pikirkan adalah menggunakan adegan yang dibuat secara otomatis untuk menghasilkan data statistik dari mana Anda dapat menguraikan informasi yang Anda cari.
Dapatkan volume aset yang besar (berpotensi dihasilkan secara otomatis).
Buat alat untuk menghasilkan adegan yang bisa dimuat oleh mesin Anda menggunakan kumpulan aset.
Jalankan bot yang akan memindahkan kamera Anda di sekitar tempat kejadian. Anda mungkin juga ingin menjalankan beberapa bot lain untuk membuat adegan lebih dinamis, termasuk lampu.
Kumpulkan informasi sebanyak mungkin dan lemparkan ke dalam basis data; fps, hitungan poli, perubahan shader, jumlah lampu, panggilan, dll.
Buat / dapatkan beberapa alat untuk menampilkan data dalam database Anda sebanyak mungkin.
Tautan ini dapat memberikan beberapa ide lagi: Dead Rising Tools
sumber