Saya membuat game XNA yang membutuhkan ruang besar untuk pemain. Saat ini, heightmap tes yang saya gunakan adalah 4096x4096, dan disimpan sebagai BMP 4-bit.
Apa yang saya coba lakukan adalah mengambil file heightmap yang sangat besar dan merendernya di dalam game. Masalah yang saya hadapi adalah kenyataan bahwa tidak efisien untuk memuat seluruh medan ke memori sekaligus, karena akan menggunakan sebagian besar memori yang tersedia.
Masalah lain yang saya temui adalah bahwa saya tidak dapat membuat semua medan dalam satu primitif karena batasan keras yang ditetapkan dalam XNA.
Dengan itu, saya telah menemukan sejumlah solusi, yang semuanya telah saya cantumkan di bawah ini:
- Rendering berdasarkan lokasi pengguna saat ini - pada dasarnya menggambar kotak di sekitar pengguna tidak peduli orientasi mereka di dunia. Ini juga bukan yang saya inginkan, karena Anda masih memberikan ruang yang tidak dilihat pengguna.
- Rendering berdasarkan orientasi dan posisi pengguna - Saya menemukan rumus untuk mengambil segitiga yang seharusnya memiliki piksel dari peta ketinggian apa yang seharusnya dirender, tetapi ini terbukti sangat sulit.
- Membagi medan menjadi beberapa bongkahan dan merender yang paling dekat dengan pengguna - Masih tidak terlalu efisien karena Anda masih merender bongkahan yang tidak akan dilihat orang. Dan ini pekerjaan yang intensif karena saya harus membagi tinggi peta saya menjadi beberapa bagian, dan skalabilitas menjadi masalah besar.
Setelah mencoba solusi itu, saya kehabisan ide untuk apa yang harus dilakukan. Saya telah menerima beberapa jawaban di mana orang-orang mengatakan kepada saya untuk melakukan algoritma yang kompleks ini, tetapi saya tidak tahu bagaimana cara melakukannya.
Jadi pada dasarnya saya meminta cara yang sederhana dan langsung untuk memberikan medan yang sangat besar di XNA dengan efisiensi maksimal.
Saya agak baru dalam pengembangan game pada umumnya, tetapi saya bersedia untuk meneliti jika tampaknya menjanjikan.
Pembaruan 1: Setelah meneliti metode geoclipmapping, saya mulai membuat kode dengan itu. Saya sudah menyelesaikan semua matematika, dan permainan berjalan. Namun, ini sangat tidak efisien - yang mungkin merupakan pengkodean yang buruk di pihak saya. Ini berjalan pada 2FPS dan menggunakan seluruh inti CPU saya. Saya akan mencoba dan meningkatkan kodenya, tetapi saya pikir saya akan memerlukan lebih banyak bantuan, jadi ini adalah Pastebin dari kode untuk kelas manajer Terrain. Saya akan memposting kembali dengan hasil lebih banyak nanti jika saya membuatnya lebih efisien.