Bileşen tabanlı oyun nesne sistemleri pratikte [kapalı]


43

Başarı tarihini görelim. Bileşen tabanlı oyun nesnesi sistemi kullanılarak hangi popüler oyunlar (ve oyun motorları) yapıldı ? Her cevap şunları içermelidir:

  1. Oyun Başlığı (cevap başına bir tane)
  2. Yazar / Şirket
  3. Yıl
  4. Geliştirme zamanı (isteğe bağlı)
  5. Ölüm sonrası bağlantı (isteğe bağlı)
  6. Dokümanlara / kaynak koduna bağlantılar (isteğe bağlı)

7
-1, son on yılda yazılan hemen hemen her oyun bir yerde bir bileşen sistemi kullanacak ve sahip olabileceği başka bir yerde bileşen sistemi kullanmayacak.

5
Hatalısınız. Birçok motor hala statik hiyerarşiler kullanıyor. Gerçekten de bileşen sistemlerini kullanan oyun ve motor parçalarını / dokümanlarını / postmortemlerini / kod parçalarını toplamak ve okumak ilginçtir.
Topright

4
Motorların statik hiyerarşiler kullanmadığını söylemedim. Sadece statik hiyerarşileri kullanan bir motor bulmak için zorlanacağınızı söyledim , tıpkı yalnızca bileşenleri kullanan birini bulmak için bastırdığınız gibi .

2
Hatalısınız. Oyun varlıkları (oyun mantığının kalbi), görsel efektler, oyun motoru ve editör altyapısı bileşen bazındadır veya değildir.
topright

2
@topright: Joe'nun doğru ya da yanlış olup olmadığına bakılmaksızın, yorumlarınızı sade ve kişisel bir şekilde 'arka arkaya basmak' ile iki kez üst üste yorum yapmak çok incecik değildir, siz de öyle düşünmüyor musunuz? Bahse girerim, yorumlarınız bu üç küçük kelime olmadan hiçbir ilgili bilgiyi kaçırmaz, ancak bunları reddetmek hoş ve kibar bir sohbete çok daha fazla katkıda bulunur. Lütfen bunu düşünün :)
Michael Klement

Yanıtlar:


19

Dungeon Siege tarafından Gaz Oyunları Powered

Scott Bilas , diğer şeylerin yanı sıra, bileşen tabanlı sistemler içeren Dungeon Siege hakkında birçok bilgi yayınladı.

Zindan Kuşatması 2002 yılında serbest bırakıldı.


Vay, mükemmel bağlantı. Bileşen sistemleri konusundaki konuşması, bileşen tabanlı sistemlerin uygulanmasını daha iyi anlamama yardımcı oldu. Sürekli dünyanın DS'de nasıl yapıldığı hakkında da güzel konuşma. Benzer tekniklerin diğer büyük dünya oyunlarında hala kullanılmakta olup olmadığını merak ediyorum. Bence çoğu bölge veya parçalara daha çok benzeyen bir şeyler kullanma eğilimindedir (Minecraft, Bethesda'nın herhangi bir şeyi).
CodexArcanum

19

Insomniac Games tarafından Direnç 1-2 (muhtemelen 3) (2006-2008)

Terrance Cohen, bu oyunları GDC Canada 2010'dan Yüksek Performanslı Oynanış için Dinamik Bileşen Mimarisi konuşmasında listeliyor .

Bunun son Cırcır ve Clank oyunlarına uygulandığından emin değilim.


Bu sunumun sesinin GDC Vault ödeme duvarının arkasında olup olmadığını biliyor musunuz? Yalnız slaytlar oldukça güzel ama sunumda cevaplandığından şüphelendiğim birkaç soru var.

Bu sunumdan haberim yoktu, çok teşekkür ederim!
Topright,

13

Unity3D , varsayılan olarak bileşen tabanlı bir sistem kullanır. Bir metin dosyasından oyun varlıkları oluşturmak ve bağımlılık enjeksiyonundan mükemmeldir.

function createEnemy() {

   // extract AI type for enemy
   // definition is a custom structure holding parameters to create the enemy
   var aitypename = definition.ai;

   // AIType can be an interface or abstract class
   // you can create a component from a string or from a type
   var ai : AIType = this.gameObject.AddComponent(aitypename);
   ai.setup(definition.ai_settings);

   // set rule for enemy when it is destroyed
   this.gameObject.AddComponent(definition.when_destoryed); 


}

Bu bileşenler böyle görünebilir

class AI_Scout extends AIType
{
  // called per update-frame on the game-object with this script
  public function Update() {
    // run Scout AI here
   }
}


class Spawn_Ammo_On_Destroyed extends When_Destroyed
{
   // automatically called by the engine when the game object this script is attached to is
   // destroyed
   public function OnDestroyed() {
    // spawn ammo
    }
}


8

Tony Hawk Pro Skater 3
Geliştirici: Neversoft
Yıl: 2001
Süre: Yaklaşık iki yıl
Mortem: Hiyerarşinizi Geliştirin (muhtemelen en bağlantılı bileşen tabanlı makale)


1

Bildiğim kadarıyla gördüğüm en iyi proje Burger Engine. jst kodu indirin ve ne kadar iyi uyguladıklarını kontrol edin. Her şey xml'den veri odaklı ve çok iyi varlık temelli architecture.worth kullanıyorlardı.

http://code.google.com/p/burger-engine/source/browse/


2
-1, bu kod "Amatörce" nin yanlış yazılmasından statik bileşen tipi numaralandırmasına, çok sayıda sanal fonksiyona, her bir bileşene 28 bayt konum verisinin dahil edilmesine kadar gerçekten amatör görünüyor. görüldü, başka bir yere bak.

beğenmediniz üzgünüm.Tüm kod veri odaklı ve bu görevi bu kadar kolaylaştıracak herhangi bir açık kaynak uygulaması bulamadım.İyi koda herhangi bir bağlantınız varsa, lütfen bağlantıları gönderin. yazım hatası yapma, sanal işlev - 'Bileşen tabanlı mimari'de yeni olan insanlar için iyi bir kaynaktır. Veri odaklı tasarımın pratikte nasıl çalıştığı konusunda değerli bir tanıtım yapma amacına hizmet eder.
Ayyappa

2
Dunno kod hakkında, ancak yazım hatalarını işaret etmek, ingilizce konuşamayan ülkelerden gelen birçok programcı olduğunu da düşünerek geçersiz bir argümandır.
Rajavanya Subramaniyan,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.