Motorum için bir varlık bileşeni sistemi tasarlarken, belirli bir bileşen türünü depolama ve alma yolunda küçük bir engelle karşılaştım.
İlk olarak, bu soruda kullanacağım terminolojiyi biraz açıklayayım:
- " Bileşen " i belirli bir sistem için ilgili verileri depolayan bir veri yapısı olarak adlandırıyorum.
- Kullanıcıya oyun durumunu / arayüzünü güncellemek için Bileşenleri kullanan yöntemlerin ve veri yapılarının toplanmasını " Sistem " olarak adlandırıyorum .
- " Varlık " temel olarak sadece belirli bileşenleri almak ve oyun mantığındaki verilerini değiştirmek için kullanılan bir kimliktir.
Her sistem, veri üzerinde verimli bir şekilde tekrarlayabilmesi için kendi Bileşen tipinde (örneğin, Fizik-> Fizik Bileşeni, AI-> AIComponent, Rendering-> RenderingComponent) bir (ID-mapped) dizisine sahiptir.
Bununla birlikte, tüm bileşenlerin özel olarak bir sisteme ait olması gerekmez. Örneğin, bir Transform bileşeni bir nesnenin konumunu, dönüşünü ve ölçeğini saklar. Fiziksel, Yapay Zeka, İşleme gibi birçok sistem tarafından kullanıldığı için, bir varlığın en önemli kısımlarından biridir (Birlik onu zorunlu kılar).
Karşılaştığım sorun bu. Transform birçok başka sistem tarafından kullanıldığından, her bir Bileşen için kullanmak üzere bir tane almaya nasıl başlamalıyım? Gördüğüm olası bir çözüm, her bir Bileşenin kendi Varlık Kimliğini depolamasını sağlamaktır. Bunun gibi herhangi bir bileşeni almak kolay olurdu, ancak bu kadar verimli olmayacaktı ve aynı zamanda, başka hiçbir şeyin farkında olmayan, izole edilmiş ve bağımsız bir veri paketi olarak bir Bileşen kavramına karşı çıkacaktı.
Bu sorunu çözmenin uygun bir yolu var mı? Dönüşüm bile bir bileşen olmalı mı?