Saya mencoba membuat mesin game berbasis ubin yang fleksibel untuk membuat semua jenis game puzzle non-realtime, seperti Bejeweled, Civilization, Sokoban, dan sebagainya.
Pendekatan pertama yang saya miliki adalah memiliki array 2D objek Tile, dan kemudian memiliki kelas yang mewarisi dari Tile yang mewakili objek game. Sayangnya dengan cara itu saya tidak bisa menumpuk lebih banyak elemen game di Tile yang sama tanpa memiliki array 3D.
Lalu saya melakukan sesuatu yang berbeda: Saya masih memiliki array 2D objek Tile, tetapi setiap objek Tile berisi Daftar tempat saya meletakkan dan entitas yang berbeda. Ini berfungsi dengan baik hingga 20 menit yang lalu, ketika saya menyadari bahwa terlalu mahal untuk melakukan banyak hal, lihat contoh ini:
Saya memiliki entitas Wall. Setiap pembaruan saya harus memeriksa 8 Ubin yang berdekatan, lalu memeriksa semua entitas dalam Daftar Ubin, memeriksa apakah ada entitas yang merupakan Dinding, lalu akhirnya menggambar sprite yang benar. (Ini dilakukan untuk menggambar dinding yang bersebelahan dengan mulus)
Satu-satunya solusi yang saya lihat sekarang adalah memiliki array 3D, dengan banyak lapisan, yang dapat sesuai dengan setiap situasi. Tapi dengan begitu saya tidak bisa menumpuk dua entitas yang berbagi lapisan yang sama di ubin yang sama. Setiap kali saya ingin melakukan itu, saya harus membuat layer baru.
Apakah ada solusi yang lebih baik? Apa yang akan kamu lakukan?