Saya telah mengerjakan beberapa proyek hobi 3-4 tahun terakhir. Game 2d dan 3d sederhana. Tapi belakangan ini saya sudah memulai proyek yang lebih besar. Soo dalam beberapa bulan terakhir saya sudah mencoba merancang kelas objek game yang bisa menjadi basis dari semua objek game saya. Jadi setelah banyak mencoba & mati pengujian saya beralih ke Google yang dengan cepat menunjuk saya ke beberapa GDC PDF dan PowerPoint. Dan sekarang saya mencoba untuk memahami objek permainan berbasis komponen.
Saya mengerti bahwa mesin menciptakan objek permainan dan kemudian menempel berbagai komponen yang menangani hal-hal seperti kesehatan, fisika, jaringan, dan apa pun yang Anda lakukan. Tapi yang tidak saya mengerti adalah bagaimana komponen X tahu jika Y telah mengubah keadaan objek. Seperti bagaimana PhysicsComponent tahu jika pemain masih hidup, karena kesehatan dikendalikan oleh HealthComponent ..? Dan bagaimana HealthComponent memainkan "pemain-mati-animasi"?
Saya mendapat kesan bahwa itu adalah sesuatu seperti ini (Dalam HealthComponent):
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
Tapi sekali lagi, bagaimana HealthComponent tahu bahwa objek game itu dilampirkan untuk memiliki AnimationComponent? Satu-satunya solusi yang saya lihat di sini adalah
Cek untuk melihat apakah AnimationComponent terpasang atau tidak (baik di dalam kode komponen atau di sisi mesin)
Memiliki komponen memerlukan komponen lain, tetapi itu tampaknya memperjuangkan seluruh desain komponen.
Tulis seperti, HealthWithAnimationComponent, HealthNoAnimationComponent, dan seterusnya, yang sekali lagi tampaknya memperjuangkan seluruh ide desain komponen.