Saat ini saya bekerja dengan Phaser, membuat game yang dihasilkan secara prosedural. Saya ingin menggunakan beberapa seni pembuat RPG dalam game saya (untuk referensi, saya menggunakan RTP). Saya sengaja menemukan artikel ini , yang memecah bagaimana ubin otomatis bekerja. Saya juga menemukan jawaban ini yang menghubungkan ke artikel lain yang menjelaskan pemasangan otomatis.
Begini masalahnya, saya tidak tahu bagaimana saya akan mengimplementasikan sesuatu seperti ini. Saya yakin saya harus melacak set genteng mana yang dapat terhubung ke tileset lain (yaitu, beberapa ubin memiliki rumput di luar, dan pasir di dalam, jadi dalam contoh ini saya harus mencatat bahwa "rumput "ubin adalah ubin luar).
Saya telah membuat generator peta (lihat di sini ), dan saya ingin membuat koneksi yang mulus antara area ubin saya. Misalnya, area cokelat akan menjadi area "padat" (hutan, gua, dll). Area ungu akan menjadi lantai batu, dan area hijau adalah rumput. Ada tileset yang berfungsi sangat baik untuk hal-hal seperti ini:
Jadi saya ingin menggunakan rumput kiri atas, dan set ubin ketiga, batu, yang menghubungkan ke rumput.
Hal-hal apa yang harus saya pertimbangkan ketika menerapkan ubin otomatis menggunakan ubin jenis ini, dan apakah ada algoritma yang dapat saya lihat untuk diterapkan?
sumber
Jawaban:
Saya telah menerapkan ini (menggunakan RTP) dengan cara yang sederhana (tapi cukup membosankan).
Saya mengambil daftar semua tetangga untuk sel saat ini, dan dengan banyak
if
pernyataan saya menggambar ubin sebagai 4 ubin lebih kecil / seperempat.Bagi saya metode ini menyebabkan beberapa kesalahan yang hampir tidak terlihat, tetapi mereka dapat diselesaikan dengan menguji beberapa kasus tepi dan mengoreksi sesuai.
Jika Anda melihat gambar sumber dan gambar yang dihasilkan di pembuat RPG, Anda harus dapat melakukan ini (mungkin dengan beberapa trial-and-error) dengan
if
pernyataan, mengidentifikasi apa kasus saat ini untuk ubin kuartal yang diberikan dan menggambar sesuai .Metode ini dapat lebih ditingkatkan dan dibuat tidak terlalu membosankan dengan bitmask (seperti yang disebutkan oleh jzx).
Menjawab komentar Anda:
Dengan merender hanya seperempat ubin, kemungkinan berkurang secara dramatis.
Anda tidak harus menangani ubin di ubin, karena mereka harus berada pada lapisan yang berbeda sesuai urutan atau warna satu sama lain.
Juga, saya tidak mengerti mengapa Anda membutuhkan tetangga bawaan, tapi itu bisa ditangani secara terpisah dalam perhitungan tetangga, mungkin menggunakan semacam peta (daftar pasangan yang menyatu).
Peta biasanya statis, dan gambar-gambarnya rendah, jadi tidak perlu khawatir tentang kinerja.
sumber