Saya memiliki strategi berbasis ubin 2D dalam karya. Saya mengembara bagaimana menangani hubungan antara peta dan unit di peta.
Diberikan koordinat ubin saya harus bisa mendapatkan unit berdiri di atasnya, jika ada. Pada saat yang sama, jika diberi unit saya ingin bisa mendapatkan koordinat unit.
Saya telah melihat dua solusi untuk ini. Solusi pertama adalah memiliki unit menyimpan koordinat dan unit referensi peta menyimpan di ubinnya. Ini menciptakan ketergantungan siklus antara peta dan unit. Saya perlu memastikan bahwa peta suatu unit apa pun tetap disinkronkan jika unit bergerak.
Solusi kedua adalah dengan hanya memiliki unit melacak koordinat mereka. Untuk mengetahui apakah ubin berisi unit dan untuk mendapatkan unit itu, saya akan mengulang seluruh rangkaian unit yang saya temukan dengan koordinat yang cocok. Itu mendapatkan rides dari ketergantungan siklik, tetapi kehilangan properti O (1) solusi pertama untuk mencari unit dari peta. Ini mungkin bertambah karena saya ingin dapat memindai peta secara teratur untuk hal-hal seperti pencarian jalur, menentukan rentang gerakan, dan menemukan target yang valid untuk unit tertentu.
Saya juga tidak bisa hanya menyimpan unit di peta (atau bisakah saya?). Unit dikaitkan dengan "pasukan", baik pemain atau AI. Pasukan harus dapat dengan mudah mengakses dan beralih ke semua unitnya.
Karena ini tampaknya menjadi masalah umum dalam permainan strategi, apakah ada pola lain selain dua yang saya jelaskan untuk mengelola hubungan unit / peta?
Nah, Anda kecuali Anda beberapa ribu unit per pemain, saya tidak akan khawatir tentang penggunaan memori, dan menggunakan solusi pertama. Memori sepertinya lebih murah daripada CPU.
Faktanya bahkan jika Anda memiliki 4000 unit per pemain, menggunakan dua bilangan bulat untuk menyimpan lokasi di sana, dan 8 pemain, yang hanya membutuhkan 2MB, tetapi dengan solusi pertama, Anda bisa menggunakan O (1) pengambil koordinat, daripada O (n) (dengan asumsi tidak disortir), yang dengan banyak unit bisa lambat.
Sebagian besar game tampaknya berbasis pixel, bukan tile, sekarang menjadi hari jadi mereka hanya perlu mendapatkan unit untuk menyimpan co-ords.
sumber