Apa saja pendekatan yang baik untuk secara prosedural menghasilkan tingkat 2d yang tak terbatas? Tingkat bisa dibatasi dalam dimensi mana pun tetapi tidak harus.
Pendekatan yang paling masuk akal bagi saya sejauh ini adalah menggunakan radius berbasis grid. misal, membagi area bermain menjadi kotak dengan kotak dengan ukuran tertentu dan kemudian memuat kotak X dalam radius di sekitar pemain. Kemudian ketika pemain bergerak ke kotak lain, buat set berikutnya dan jatuhkan lebih jauh (area yang tetap dieksplorasi tidak diperlukan.) Ketika kotak dibangun, itu berisi susunan objek acak. Ketika benda meninggalkan lingkaran luar kotak, mereka dikeluarkan dari dunia. Apakah ada cara yang lebih baik atau berbeda? Atau jika ini adalah pendekatan yang baik, apa masalah potensial?
Demi diskusi, Anda dapat menganggap tingkat sebagai bidang asteroid top-down dengan power up, dll tersebar di seluruh.
sumber
Jawaban:
Masalah dengan dunia "tak terbatas" adalah bahwa koordinat Anda yang mendasari mungkin tidak terbatas. Kadang-kadang, jika permainan cukup memperlambat pemain, itu mungkin tidak menjadi perhatian, karena waktu untuk mencapai bilangan bulat, misalnya, akan terlalu lama untuk dicapai. Tetapi jika Anda mengizinkan perbedaan kecepatan yang tinggi, Anda mungkin harus sangat tepat dan sangat jauh jangkauannya, sehingga Anda perlu memikirkan koordinat Anda. Perbaikan yang wajar adalah memiliki dua level, seperti koordinat bilangan bulat dari kisi Anda, dan koordinat apung di setiap referensi kisi.
Sebagai tambahan, Anda bahkan mungkin dapat bertahan dengan baik tata letak dunia Anda, dengan menggunakan koordinat kotak sebagai benih untuk menciptakan dunia acak Anda di kotak yang diberikan. Jadi, ketika pemain meninggalkan area, Anda dapat menjatuhkannya, dan ketika pemain kembali, Anda dapat membuat kembali dari benih.
sumber
float pos = 1000000000.0f; float nextPos = pos + 0.001f; float diff = nextPos - pos;
Di komputer saya, beda adalah 0.