Sistem harus menyimpan pasangan nilai kunci Entity to Component dalam semacam Map, Object Dictionary, atau Associative Array (tergantung pada bahasa yang digunakan). Selain itu, ketika Anda membuat Objek Entitas Anda, saya tidak akan khawatir tentang menyimpannya di manajer kecuali Anda harus dapat membatalkan pendaftarannya dari salah satu Sistem. Entity adalah gabungan komponen, tetapi ia seharusnya tidak menangani pembaruan komponen apa pun. Itu harus ditangani oleh Sistem. Alih-alih memperlakukan Entitas Anda sebagai kunci yang dipetakan ke semua komponen yang dikandungnya dalam sistem, serta hub komunikasi untuk komponen-komponen tersebut untuk saling berbicara.
Bagian hebat dari model Entity-Component-System adalah Anda dapat mengimplementasikan kemampuan untuk meneruskan pesan dari satu komponen ke komponen entitas yang lain dengan cukup mudah. Ini memungkinkan komponen untuk berbicara dengan komponen lain tanpa benar-benar mengetahui siapa komponen itu atau bagaimana menangani komponen itu berubah. Alih-alih mengirimkan pesan dan membiarkan komponen itu mengubah dirinya sendiri (jika ada)
Misalnya, Sistem Posisi tidak akan memiliki banyak kode di dalamnya, hanya melacak Objek Entitas yang dipetakan ke Komponen Posisi mereka. Tetapi ketika suatu posisi berubah, mereka dapat mengirim pesan kepada Entitas yang terlibat, yang pada gilirannya diserahkan ke semua komponen entitas itu. Posisi berubah karena alasan apa pun? Position System mengirim Entity pesan yang mengatakan bahwa posisi berubah, dan di suatu tempat, komponen rendering gambar entitas itu mendapatkan pesan itu dan memperbarui di mana ia akan menggambar dirinya sendiri berikutnya.
Sebaliknya, Sistem Fisika perlu mengetahui apa yang dilakukan semua objeknya; Itu harus dapat melihat semua objek dunia untuk menguji tabrakan. Ketika tabrakan terjadi, itu memperbarui komponen arah Entitas dengan mengirimkan semacam "Pesan Perubahan Arah" ke entitas alih-alih merujuk ke komponen Entitas secara langsung. Ini memisahkan manajer agar tidak perlu tahu cara mengubah arah dengan menggunakan pesan alih-alih mengandalkan komponen tertentu yang ada di sana (yang mungkin tidak ada sama sekali, dalam hal ini pesan hanya akan jatuh di telinga tuli alih-alih beberapa kesalahan terjadi karena objek yang diharapkan tidak ada).
Anda akan melihat keuntungan besar dari ini karena Anda menyebutkan Anda memiliki Antarmuka Jaringan. Komponen Jaringan akan mendengarkan semua pesan yang masuk yang harus diketahui semua orang. Ia menyukai gosip. Kemudian ketika Sistem Jaringan memperbarui, komponen-komponen Jaringan mengirim pesan-pesan itu ke Sistem Jaringan lain pada mesin klien lain, yang kemudian mengirim ulang pesan-pesan itu ke semua komponen lain untuk memperbarui posisi pemain, dll. Logika khusus mungkin diperlukan sehingga hanya entitas tertentu yang dapat mengirim pesan melalui jaringan tetapi itulah keindahan Sistem, Anda bisa mengendalikannya dengan mendaftarkan hal-hal yang benar.
Pendeknya:
Entity adalah komposisi Komponen yang dapat menerima pesan. Entity dapat menerima pesan, mendelegasikan pesan tersebut ke semua komponennya untuk memperbaruinya. (Posisi berubah Pesan, Arah Perubahan Kecepatan, dll.) Ini seperti kotak surat pusat yang semua komponen dapat dengar satu sama lain alih-alih berbicara langsung satu sama lain.
Komponen adalah bagian kecil dari Entitas yang menyimpan beberapa status entitas. Ini dapat mengurai pesan tertentu dan membuang pesan lainnya. Misalnya, "Komponen Arah" hanya akan peduli tentang "Pesan Perubahan Arah" tetapi tidak "Pesan Perubahan Posisi". Komponen memperbarui status mereka sendiri berdasarkan pesan, dan kemudian memperbarui status komponen lain dengan mengirim pesan dari Sistem mereka.
Sistem mengelola semua komponen dari jenis tertentu, dan bertanggung jawab untuk memperbarui komponen-komponen tersebut di setiap frame, serta mengirim pesan dari komponen yang mereka kelola ke Entitas yang menjadi milik Komponen.
Sistem bisa dapat memperbarui semua komponennya secara paralel, dan menyimpan semua pesan saat digunakan. Kemudian ketika eksekusi semua metode pembaruan Sistem selesai, Anda meminta setiap sistem untuk mengirimkan pesan mereka dalam urutan tertentu. Kontrol pertama mungkin, diikuti oleh Fisika, diikuti oleh arah, posisi, render, dll. Yang penting urutan mana mereka dikirim karena Perubahan Arah Fisika harus Selalu keluar mempertimbangkan perubahan arah berdasarkan kontrol.
Semoga ini membantu. Ini seperti Pola Desain, tapi sangat kuat jika dilakukan dengan benar.