Şu anda Varlık Sistemimi C ++ için yeniden tasarlıyorum ve bir çok Müdürüm var. Tasarımımda, kütüphanemi birbirine bağlamak için bu sınıflara sahibim. "Yönetici" dersleri söz konusu olduğunda çok kötü şeyler duydum, belki de sınıflarımı uygun şekilde adlandırmıyorum. Ancak, onları başka ne adlandıracağım hakkında hiçbir fikrim yok.
Kütüphanemdeki yöneticilerin çoğu bu sınıflardan oluşuyor (biraz değişmesine rağmen):
- Kapsayıcı - yöneticideki nesneler için bir kapsayıcı
- Nitelikler - yöneticideki nesnelerin nitelikleri
Kütüphanem için yeni tasarımımda kütüphanemi bağlamak için bu özel sınıflara sahibim.
ComponentManager - Varlık Sistemindeki bileşenleri yönetir
- ComponentContainer
- ComponentAttributes
- Sahne * - bir Sahneye referans (aşağıya bakınız)
SystemManager - Varlık Sistemindeki sistemleri yönetir
- SystemContainer
- Sahne * - bir Sahneye referans (aşağıya bakınız)
EntityManager - Varlık Sistemindeki varlıkları yönetir
- EntityPool - bir varlık havuzu
- EntityAttributes - Bir işletmenin özellikleri (bu, yalnızca ComponentContainer ve System sınıfları için erişilebilir olacak)
- Sahne * - bir Sahneye referans (aşağıya bakınız)
Sahne - tüm yöneticileri bir araya getirir
- ComponentManager
- Sistem Müdürü
- EntityManager
Tüm konteyner / havuzları sadece Scene sınıfına yerleştirmeyi düşünüyordum.
yani
Bunun yerine:
Scene scene; // create a Scene
// NOTE:
// I technically could wrap this line in a createEntity() call in the Scene class
Entity entity = scene.getEntityManager().getPool().create();
Bu olurdu:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Ancak, emin değilim. Eğer ikincisini yapacak olsaydım, bu, Scene sınıfımın içinde ilan ettiğim birçok nesne ve yöntem olacağı anlamına gelirdi.
NOTLAR:
- Bir varlık sistemi sadece oyunlar için kullanılan bir tasarımdır. Bileşenler, varlıklar ve sistemler: 3 ana bölümden oluşur. Bileşenler, varlıkların ayırt edici olabilmesi için varlıklara "eklenebilir" basit verilerdir. Bir varlık bir tamsayı ile temsil edilir. Sistemler, belirli bileşenlere sahip bir varlığın mantığını içerir.
- Tasarımımı kütüphanem için değiştirmemin sebebi, çok fazla değiştirilebileceğini düşünüyorum, şu anda ona olan his / akışı sevmiyorum.