Setelah menghabiskan waktu hari ini untuk menuliskan beberapa catatan mengenai penerapan dinding ke dalam permainan berbasis ubin saya, tiba-tiba saya menyadari itu tidak akan sesederhana yang saya bayangkan sebelumnya. Sementara tahap pekerjaan saya saat ini bahkan tidak dekat dengan benar-benar membuat kode yang berhubungan dengan dinding, saya telah datang dengan tiga cara berbeda untuk melakukannya. Saat ini saya tidak yakin ide mana yang paling berhasil, dan apakah saya melewatkan sesuatu atau tidak.
Penting: karakter BISA berdiri di atas ubin yang memiliki dinding, terlepas dari bentuknya.
Hal umum untuk ketiga varian: tilemap akan "disimpan" dalam wadah berbasis std :: vector (atau serupa) berdimensi tunggal. Alasan untuk itu (luar biasa) dijelaskan dalam jawaban untuk pertanyaan yang berbeda.
Kelas penampung dalam game berbasis ubin.
Kembali ke tembok.
A) Pendekatan sederhana.
Tidak ada yang mewah di sini. Setiap ubin-wadah tidak hanya dapat menampung karakter, tetapi satu atau beberapa objek Dinding, yang melekat pada tepi di dalam ubin.
Kelebihan: mudah diimplementasikan, tidak ada perubahan di mesin. Cons: Dua hal. Satu - mungkin hanya di kepala saya, tetapi beberapa kombinasi hanya terlihat jelek. Kedua - pendekatan ini memungkinkan untuk membuat dinding ganda dari dua ubin yang berdekatan. Bangunan akan menjadi bagian penting dari gim ini, dan dinding ganda memungkinkan para pembangun untuk tidak lagi meningkatkan materi dinding melalui sarana gim, dan hanya mencapai peningkatan daya tahan dengan menggandakan dinding yang ada. Itu tidak diinginkan. Tentu, saya bisa memasukkan prosedur yang melarang tembok ganda, tetapi akan terasa buruk.
B) Pendekatan cerdas (?).
Alih-alih membiarkan para pemain mendobel dinding seluruh peta, saya akan mengalahkan mereka. Setiap dinding memiliki dua bagian yang melekat pada tepi ubin dari dalam. Jadi, untuk membuat satu "unit Wall" saya harus membuat dua objek Half-Wall di dua ubin yang berdekatan.
Pro: Ini simetris !!! Juga, tidak ada perubahan signifikan dari spesifikasi mesin saat ini yang diperlukan. Cons: Lebih banyak kerumitan, lebih banyak objek, dan, tentu saja, "topi". Seperti yang Anda lihat pada gambar, pada dasarnya sudut akan menangisi objek "topi". Saya sebenarnya asyik dengan itu, tidak begitu sulit untuk ditambahkan. Hei, saya sudah punya rencana untuk kolom tipis yang terbuat dari empat topi yang terhubung. Manis. Namun, saya masih khawatir tentang kemungkinan masalah Bidang Pandang dan Lini Penglihatan.
C) Varian total perbaikan.
Atau, saya bisa membuat batas dan sudut sebagai wadah terpisah untuk objek game. Seperti itu.
Pro: Bahkan tidak yakin. Yah, itu mudah. Pastinya. Cons: Ini akan membutuhkan perombakan. Syukurlah, bukan kode, tetapi mentalitas mekanik permainan saat ini - itu sudah pasti. Manfaatnya tidak begitu jelas. Juga, pendekatan ini membutuhkan lebih banyak wadah daripada dua yang sebelumnya. Matematika pengindeksan juga akan sedikit sakit.
Jadi di sini kita memilikinya - tiga cara berbeda membuat dinding antara ubin. Jika ada alternatif di luar sana - saya akan senang untuk memeriksanya. Jika ada manfaat / kelemahan dari salah satu pendekatan yang tidak saya lihat - tunjukkan.