Sejauh yang saya tahu, melangkah lebih jauh dari 1 juta unit dari dunia asal di Unity hampir tidak mungkin karena masalah presisi floating point.
Membuat dunia lebih dari 1M unit dalam radius akan membutuhkan baik menggunakan double
vars untuk koordinat atau memanfaatkan beberapa teknik pembagian ruang untuk membagi adegan besar menjadi potongan hirarkis dengan yang terkecil dari mereka sekitar 10.000 unit, yaitu setiap posisi ruang-dunia akan diekspresikan oleh hierarki chunk objek dalam dan sekelompok float
vars mewakili posisi lokalnya (dan mungkin rotasi dan scaling) di dalam chunk terakhir.
Either way, melakukan ini akan membutuhkan penerapan sistem koordinat baru yang lengkap, jadi saya ingin tahu apakah itu mungkin atau tidak di Unity, dan jika demikian, bagaimana saya membuatnya bekerja dengan sistem Unity yang ada seperti fisika dan sebagainya.
PS Saya tidak bisa begitu saja mengubah dunia menjadi asal ketika pemain bergerak karena saya ingin semua hal terjadi secara bersamaan di seluruh planet ini.
Terima kasih!
sumber
Itu pertanyaan yang sering muncul. Saya akan mengambil kebebasan untuk meneruskan Anda ke jawaban lain yang cukup terperinci yang telah saya berikan untuk masalah yang sama, alih-alih hanya mengulanginya di sini: Apakah sistem koordinat kustom dimungkinkan di Unity
Dari sana, apa yang paling saya sarankan adalah Anda membaca makalah yang luar biasa di: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.471.7201&rep=rep1&type=pdf . Ini membandingkan beberapa cara untuk mengatasi masalah yang Anda gambarkan (termasuk koordinat lokal, seperti yang dijelaskan oleh Arcane Engineer dalam jawabannya) dan masuk ke detail tentang solusi asal-mengambang yang terkenal saat ini. Yang sebenarnya adalah apa yang akan saya gunakan dalam banyak kasus (pada kenyataannya, itulah yang saya gunakan dalam aplikasi saya).
Tentu, Anda menyebutkan solusi asal float tidak sesuai dengan kebutuhan Anda. Tapi itu mungkin tidak menjadi masalah bahkan jika Anda ingin hal-hal terus terjadi di bagian dunia yang sangat jauh. Anda dapat memiliki hampir semua AI yang terjadi di mana pun Anda inginkan - Anda tidak seharusnya melakukan pemeriksaan tabrakan atau penentuan posisi yang tepat terlalu jauh dari pemain (yaitu di luar ambang ketidaktepatan float). Tapi bagaimanapun, sejujurnya, dalam aplikasi nyata Anda mungkin tidak akan pernah bisa memiliki banyak tabrakan dan pemosisian dalam permainan karena keterbatasan pemrosesan. Dan masih, mungkin ada solusi bahkan untuk batasan yang Anda lihat pada solusi asal mengambang, tergantung pada karakteristik permainan Anda. Sekali lagi, saya sarankan Anda tidak membuang solusi itu sebelum membaca lebih menyeluruh tentang hal itu.
Namun, jika Anda memutuskan bahwa Anda harus mencoba sistem koordinat lokal (yang bisa menjadi solusi yang sangat kompleks tergantung di mana Anda pergi dengannya), maka item kedua dalam jawaban saya yang tertaut adalah untuk Anda. Bagian paling penting di sana adalah kertas yang ditulis oleh pria yang pertama kali mengimplementasikan solusi itu dalam game perintis Dungeon Siege: http://scottbilas.com/files/2003/gdc_san_jose/continuous_world_paper.pdf
Ada juga video dari beberapa tahun yang lalu, di mana orang-orang dari Unity mengomentari solusi itu dan bahkan menjelaskan implementasi modern dari konsep di Unity:
https://www.youtube.com/watch?v=VKWvAuTGVrQ
Semoga ini bisa membantu.
sumber
Tidak yakin apakah Anda telah menyetujui suatu solusi, tetapi saya ingin menyebutkan dua sumber daya lain yang mungkin berguna bagi Anda dan pembaca lain di masa depan.
Pembicaraan CppCon baru-baru ini: "Demystifying Floating Point" , yang sangat relevan terlepas dari bahasa pemrograman. Satu hal yang sangat menarik yang disajikan tentang presisi adalah bahwa sweet-spot akurasi float berada di antara rentang [-1, + 1]. Jadi pelampung yang dinormalisasi adalah cara terbaik untuk pergi jika Anda bisa menggunakannya.
Tempat lain yang mungkin ingin Anda tinjau untuk mendapatkan beberapa gagasan adalah dalam permainan Dungeon Siege klasik . Gim ini menggunakan sistem dunia kontinu yang berbasis simpul / ubin dan setiap posisi relatif terhadap simpul saat ini. Ada deskripsi yang sangat rinci tentang sistem yang digunakan oleh game di whitepaper ini . Saya juga menulis beberapa paragraf tentang itu di blog saya . Pengaturan ini adalah novel pada saat itu, tetapi mungkin tidak berguna hari ini, makalah yang terkait di atas menyebutkan beberapa masalah yang mereka miliki. Meskipun demikian, ini menarik dari perspektif sejarah dan mungkin masih melayani Anda sebagai sumber ide dan inspirasi.
sumber