Saya telah membaca Kerangka Sistem Entitas khusus Artemis. Saya mencoba memutuskan apakah itu tepat untuk saya. Saya benar-benar bekerja pada game art pixel 2d berbasis ubin, dan saya tidak berpikir mereka akan menjadi sumber daya yang intensif. Saya selalu menggunakan OOP standar dengan banyak warisan di masa lalu.
Pemahaman saya tentang Kerangka Kerja Sistem Entitas saat ini (saya belum yakin apakah saya sudah sepenuhnya memahami) adalah:
- Entitas tidak lain adalah ID
- Komponen tidak lain adalah data bodoh yang ditambahkan ke kumpulan komponen entitas
- Sistem adalah fungsi pembaruan yang melekat pada dunia untuk menangani setiap entitas yang cocok dengan tanda tangan komponen Sistem
Jika pemahaman saya benar maka saya mengalami sedikit kesulitan mengkonsep menambahkan tilemaps dan Pohon Perilaku AI ke dalam kerangka kerja ini. Saya akan bertanya tentang AI di masa depan.
Haruskah tilemap dibangun ke dalam kerangka kerja ini? Atau haruskah disimpan terpisah agar mudah dibuat dengan editor tilemap?
Jika tilemap harus dibangun ke dalam kerangka kerja ini, apakah setiap ubin entitas yang berbeda? Dan tilemap suatu sistem? Atau apakah tilemap itu sendiri merupakan entitas tunggal dengan warisan yang dibangun darinya?
Jika tilemap sperate, apa cara terbaik untuk mendeteksi entitas terhadap tilemap eksternal?
Saya mengerti bahwa beberapa opsi yang telah saya daftarkan mungkin benar, tetapi jika ada orang yang telah melakukan ini di masa lalu, mereka mungkin dapat menjelaskan kebingungan saya. Mungkin ada alternatif lain yang belum saya pikirkan?
Terima kasih.
sumber
Jawaban:
Saya menerapkan kerangka komponen entitas (mirip dengan Artemis) setelah saya sudah dalam pengembangan untuk sementara waktu, tetapi saya tidak berpikir saya akan melakukan hal-hal yang berbeda jika mulai dari batu tulis kosong.
Dunia saya benar-benar terpisah dari kerangka entitas. Tidak masuk akal bagi saya untuk mengubah dunia menjadi semacam entitas atau kumpulan entitas. Dunia saya adalah 3D dengan kubus, tapi saya percaya hal yang sama berlaku untuk ubin. Entitas membentuk segalanya di dunia, tetapi medannya terpisah. Namun, ketika kubus dihapus, mereka memang menelurkan entitas "material".
Deteksi tabrakan tidak terlalu sulit untuk diikat. Dunia Anda mungkin memiliki
isSolidAt(x,y)
metode tipe yang akan digunakan sistem tabrakan Anda. Kejujuran, saya sudah mengatakan ini sekali hari ini dalam jawaban yang berbeda , lakukan apa pun yang paling masuk akal bagi Anda. Anda tidak melanggar aturan apa pun dengan membuat petak peta terpisah atau menjadikannya entitas. Apa pun yang bisa Anda lekatkan adalah yang terbaik. Bagi saya, itu membuat dunia terpisah dan membuat segalanya menjadi entitas.sumber
isSolidAt
?Saya menambahkan tilemap sebagai komponen terpisah ke entitas (dengan semua ubin di dalamnya) dan ada juga penyaji yang terpisah untuk peta ubin, jadi saya dapat merendernya dalam 3d atau 2d. Untuk membuat semua ubin sebagai entitas adalah mungkin tetapi mahal.
sesuatu seperti itu:
manfaat dalam memisahkan gambar dari logika adalah ide dasar dari pola MVC
sumber