Mesin negara tampaknya menyebabkan ketergantungan berbahaya dalam arsitektur berbasis komponen.
Bagaimana, khususnya, komunikasi ditangani antara mesin negara dan komponen yang melakukan perilaku yang terkait dengan negara?
Di mana saya berada:
- Saya baru mengenal arsitektur berbasis komponen.
- Saya membuat permainan pertempuran, meskipun saya pikir itu tidak masalah. Saya membayangkan mesin negara saya digunakan untuk beralih negara seperti "berjongkok", "berlari", "memblokir", dll.
- Saya telah menemukan teknik manajemen negara ini menjadi sistem yang paling alami untuk arsitektur berbasis komponen, tetapi bertentangan dengan teknik yang saya baca tentang: Sistem Komponen Objek Permainan Dinamis untuk Karakter Perilaku yang Dapat Berubah-ubah. Menunjukkan bahwa semua komponen mengaktifkan / menonaktifkan diri mereka sendiri dengan terus-menerus memeriksa suatu kondisi untuk aktivasi.
- Saya pikir tindakan seperti "berlari" atau "berjalan" masuk akal sebagai keadaan, yang tidak setuju dengan respons yang diterima di sini: /gamedev//a/7934
Saya menemukan ini berguna, tetapi ambigu: Bagaimana menerapkan perilaku dalam arsitektur game berbasis komponen? Ini menyarankan memiliki komponen terpisah yang hanya berisi mesin negara. Tapi, ini membutuhkan semacam kopling antara komponen mesin negara dan hampir semua komponen lainnya. Saya tidak mengerti bagaimana kopling ini harus ditangani. Ini adalah beberapa tebakan:
A. Komponen tergantung pada mesin negara:
Komponen menerima referensi ke komponen mesin negaragetState()
, yang mengembalikan konstanta enumerasi. Komponen memperbarui diri secara teratur dan memeriksa ini sesuai kebutuhan.B. Mesin negara tergantung pada komponen:
Komponen mesin negara menerima referensi ke semua komponen yang dipantau. Itu menanyakangetState()
metode mereka untuk melihat di mana mereka berada.C. Beberapa abstraksi di antara mereka
Gunakan hub acara? Pola perintah?D. Pisahkan objek negara yang komponen referensi
Pola Negara digunakan. Objek keadaan terpisah dibuat, yang mengaktifkan / menonaktifkan satu set komponen. Mesin negara beralih di antara objek negara.Saya melihat komponen sebagai implementasi dari aspek . Mereka melakukan semua yang diperlukan secara internal untuk mewujudkan aspek itu. Sepertinya komponen harus berfungsi sendiri, tanpa bergantung pada komponen lain. Saya tahu beberapa dependensi diperlukan, tetapi mesin negara sepertinya ingin mengontrol semua komponen saya.