Sistemler, bir Bileşen Varlığı için anahtar / değer çiftini bir tür Harita, Sözlük Nesnesi veya İlişkilendirilebilir Dizi içinde (kullanılan dile bağlı olarak) saklamalıdır. Dahası, Varlık Nesnenizi oluşturduğunuzda, herhangi bir Sistemin kaydını silmeniz gerekmedikçe bir yöneticide saklamaktan endişe etmem. Varlık, bileşenlerin bir bileşimidir, ancak bileşen güncellemelerinin hiçbirini işlememelidir. Bunun Sistemler tarafından ele alınması gerekir. Bunun yerine, Varlığınızı sistemlerde içerdiği tüm bileşenlerle eşlenen bir anahtar ve bu bileşenlerin birbirleriyle konuşması için bir iletişim merkezi olarak ele alın.
Entity-Component-System modellerinin en önemli yanı, mesajları bir bileşenden bir varlığın bileşenlerinin geri kalanına kolayca iletebilmenizdir. Bu, bir bileşenin gerçekte kim olduğunu veya değiştirdiği bileşeni nasıl işleyeceğini bilmeden başka bir bileşenle konuşmasına olanak tanır. Bunun yerine bir ileti iletir ve bileşenin kendisini değiştirmesine izin verir (varsa)
Örneğin, bir Konum Sistemi içinde çok fazla kod bulunmayacak ve yalnızca Konum Bileşenleri ile eşlenmiş Varlık Nesnelerinin izini sürecektir. Ancak bir pozisyon değiştiğinde, ilgili Varlığa bir mesaj gönderebilir ve bu mesaj da o varlığın tüm bileşenlerine dağıtılır. Her ne sebeple bir pozisyon değişir? Konum Sistemi, Varlığa konumun değiştiğini söyleyen bir mesaj gönderir ve bir yerde o varlığın görüntü oluşturma bileşeni bu mesajı alır ve bir sonraki çizeceği yeri günceller.
Tersine, bir Fizik Sisteminin tüm nesnelerinin ne yaptığını bilmesi gerekir; Çarpışmaları test etmek için tüm dünya nesnelerini görebilmelidir. Bir çarpışma meydana geldiğinde, doğrudan Varlığın bileşenine başvurmak yerine bir tür "Yön Değişiklik Mesajı" göndererek Varlığın yön bileşenini günceller. Bu, yöneticinin, orada bulunan belirli bir bileşene güvenmek yerine bir mesaj kullanarak yönleri nasıl değiştireceğini bilmesine ihtiyaç duymasını engeller (bu hiç olmayabilir), bu durumda mesaj sadece bir hata yerine sağır kulaklara düşer çünkü beklenen bir nesne yoktu).
Bir Ağ Arayüzünüz olduğundan bahsettiğiniz için bundan büyük bir avantaj göreceksiniz. Bir Ağ Bileşeni, herkesin bilmesi gereken tüm mesajları dinler. Dedikoduyu çok seviyor. Daha sonra Ağ Sistemi güncellendiğinde, Ağ bileşenleri bu mesajları diğer istemci makinelerde diğer Ağ Sistemlerine gönderir, bu da oyuncu konumlarını güncellemek için bu mesajları diğer tüm bileşenlere tekrar gönderir. Yalnızca belirli varlıkların ağ üzerinden mesaj gönderin ancak Sistemin güzelliği budur, sadece doğru mantığı ona kaydederek bu mantığı kontrol etmesini sağlayabilirsiniz.
Kısacası:
Varlık, mesaj alabilen Bileşenlerin bir bileşimidir. Varlık mesaj alabilir, söz konusu mesajları güncellemek için tüm bileşenlerine devredebilir. (Konum değişti Mesaj, Hız Değiştirme Yönü, vb.) Tüm bileşenlerin doğrudan birbirleriyle konuşmak yerine birbirlerinden duyabileceği merkezi bir posta kutusu gibidir.
Bileşen, bir varlığın bir kısmını saklayan bir Varlığın küçük bir parçasıdır. Bunlar belirli mesajları ayrıştırabilir ve diğer mesajları dışarı atabilir. Örneğin, bir "Yön Bileşeni" yalnızca "Yön Değişikliği Mesajları" nı dikkate alır, ancak "Konum Değişikliği Mesajları" nı önemsemez. Bileşenler iletileri temel alarak kendi durumlarını güncelleştirir ve ardından Sistemlerinden ileti göndererek diğer bileşenlerin durumlarını güncelleştirir.
Sistem belirli bir türdeki tüm bileşenleri yönetir ve adı geçen bileşenleri her bir karenin güncellemesinden ve yönettikleri bileşenin Bileşenlerin ait olduğu Varlıklara mesaj göndermekten sorumludur
Sistemler tüm bileşenlerini paralel olarak güncelleyebilir ve tüm mesajları giderken depolayabilir. Ardından, tüm Sistemlerin güncelleme yöntemlerinin yürütülmesi tamamlandığında, her sistemden mesajlarını belirli bir sırada göndermesini istersiniz. Muhtemelen önce kontroller, ardından Fizik, ardından yön, konum, görüntü oluşturma, vb. Gönderilir. Fizik Yönü Değişimi Daima dışarıya bağlı olarak kontrol tabanlı bir yön değişikliğini tartmalıdır.
Bu yardımcı olur umarım. Bu bir Tasarım Deseni cehennemi, ama doğru yapılırsa gülünç derecede güçlü.