Game engine tasarımı ile ilgili basit notlarım şöyle
Entity Eklemek
Elimizde bir oyun senaryosu editörü olsun. Bu editör ile bir oyun senaryosu hazırlamak isteyelim. Senaryo editörü ile temel CRUD işlemlerini yapabilmek gerekir.
Burada tasarımda hem Senaryo Editörü hem de Game Engine birer entity container olarak düşünülebilir.
Game Engine çalıştırılması (yani tick'lenmesi gereken) her türlü nesne için bir container'dır
Senaryo Editörü ise kullanıcının ekranda gördüğü nesneler için bir container'dır. Bu fark önemli çünkü
1. Kullanıcı sadece kendisini ilgilendiren nesneleri ekranda görür
2. Game engine içinde çalışan ancak ekranda görünmesi gerekmeyen nesneler de olabilir.
Dolayısıyla varsayım şöyle
Senaryo Editörü, Game Enginde'ki container'a view olur. Muhtemelen her iki yapı farklı thread'ler üzerinde çalışacakları için aralarında bir listener mekanizması gerekir. Yani Game Engine'deki değişiklikler, Senayo Editörüne de bir şekilde yansıtılacaktır
1. Nesne Eklemek
Yeni nesne bir şekilde Senaryo Editöründe seçilir.
- Seçim GUI'deki menü, tree gibi bir bileşen aracılığıyla olabilir.
- Mevcut bir nesnenin kopyala/yapıştır yöntemiyle eklenmesi olabilir
Aslında nasıl olduğu çok önemli değil. Y
- Yeni nesne Game Engine'e eklenir.
- Game Engine haliyle Senaryo Editörü'nü bilgilendirir ve Senaryo Editörü de kendi container'ına bu nesneyi ekler.
- Nesne ilgili ekran açılır ve güncellemeler yapılır. Tamam düğmesi ile Game Engine'e güncel nesne gönderilir.
-Game Engine haliyle Senaryo Editörü'nü bilgilendirir
- Böylece her iki container'da asenkron olmalarına rağman senkronize olurlar
Hiç yorum yok:
Yorum Gönder