Komponentenbasierte Spielobjektsysteme in der Praxis [geschlossen]

43

Lassen Sie uns die Erfolgsgeschichte sehen. Welche beliebten Spiele (und Spiele-Engines) wurden mit komponentenbasierten Spielobjektsystemen erstellt ? Jede Antwort sollte enthalten:

  1. Spieltitel (einer pro Antwort)
  2. Autor / Firma
  3. Jahr
  4. Entwicklungszeit (optional)
  5. Link zum Postmortem (optional)
  6. Links zu Dokumenten / Quellcode (optional)
topright
quelle
7
-1, so ziemlich jedes Spiel, das in den letzten zehn Jahren geschrieben wurde, wird irgendwo ein Komponentensystem verwenden und nicht irgendwo anders ein Komponentensystem, das es haben könnte.
5
Sie liegen falsch. Viele Engines verwenden immer noch statische Hierarchien. Und es ist interessant, Dokumente / Postmortems / Codeausschnitte von Spielen und Engines zu sammeln und zu lesen, die wirklich Komponentensysteme verwenden.
topright
4
Ich habe nicht gesagt, dass Motoren keine statischen Hierarchien verwenden. Ich sagte, es würde Ihnen schwer fallen, eine Engine zu finden, die nur statische Hierarchien verwendet, genauso wie Sie es tun würden, wenn Sie eine Engine nur mit Komponenten finden würden.
2
Sie liegen falsch. Spielelemente (Kern der Spielelogik), visuelle Effekte, Game Engine und Editor-Infrastruktur sind entweder komponentenbasiert oder nicht.
topright
2
@topright: Unabhängig davon, ob Joe Recht oder Unrecht hat, ist es nicht sehr taktvoll, Ihre Kommentare zweimal hintereinander mit einem einfachen und persönlichen "Sie liegen falsch" zu beginnen, oder? Ich wette, Ihre Kommentare würden ohne diese drei kleinen Wörter keine relevanten Informationen verpassen, aber wenn Sie sie weglassen, würde dies viel mehr zu einem netten und höflichen Gespräch beitragen. Bitte beachten Sie dies :)
Michael Klement

Antworten:

19

Dungeon Siege von Gas Powered Games

Scott Bilas veröffentlichte viele Informationen über Dungeon Siege, unter anderem über komponentenbasierte Systeme.

Dungeon Siege wurde 2002 veröffentlicht.

DrDeth
quelle
Wow, exzellenter Link. Sein Vortrag über Komponentensysteme hat mir wirklich geholfen, die Implementierung komponentenbasierter Systeme besser zu verstehen. Nettes Gespräch darüber, wie die kontinuierliche Welt auch in DS gemacht wurde. Ich frage mich, ob ähnliche Techniken in anderen großen Weltspielen noch verwendet werden. Ich denke, die meisten verwenden eher Regionen oder Stücke (Minecraft, irgendetwas von Bethesda).
CodexArcanum 20.10.10
19

Resistance 1-2 (möglicherweise 3) (2006-2008) von Insomniac Games

Terrance Cohen listet diese Spiele in seinem Vortrag über A Dynamic Component Architecture für High Performance Gameplay von GDC Canada 2010 auf.

Ich bin mir nicht sicher, ob dies auf die letzten Ratchet & Clank-Spiele zutrifft.

Chris Waters
quelle
Wissen Sie, ob der Ton für diese Präsentation hinter der Paywall von GDC Vault liegt? Alleine die Folien sind ziemlich cool, aber ich habe ein paar Fragen, von denen ich vermute, dass sie in der Präsentation beantwortet werden.
Ich wusste nichts von dieser Präsentation, vielen Dank!
topright
13

Unity3D verwendet standardmäßig ein komponentenbasiertes System. Es ist hervorragend geeignet, um Spielelemente aus einer Textdatei und Abhängigkeitsinjektion zu erstellen.

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); 


}

Diese Komponenten könnten so aussehen

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
    }
}
Extrakun
quelle
8
  1. Dieb: Das dunkle Projekt
  2. Spiegel
  3. 1996 - 1998
  4. 2 Jahre
  5. Postmortem
Pentaphobe
quelle
8

Tony Hawk Pro Skater 3
Entwickler: Neversoft
Jahr: 2001
Zeit: Ungefähr zwei Jahre
Post Mortem: Evolve Your Hierarchy (wahrscheinlich der am meisten verknüpfte Artikel auf Komponentenbasis)

pek
quelle
1

Meines Wissens ist Burger Engine das beste Projekt, das ich je gesehen habe. Laden Sie den Code herunter und überprüfen Sie, wie gut sie ihn implementiert haben. Das Ganze basiert auf XML-Daten und sie verwendeten eine sehr gute, auf Entitäten basierende Architektur.

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

Ayyappa
quelle
2
-1, dieser Code sieht wirklich amateurhaft aus, von der falschen Schreibweise von "Abstract" bis zur statischen Aufzählung von Komponententypen, einer großen Anzahl virtueller Funktionen, der Aufnahme von 28 Bytes Positionsdaten auf jeder Komponente ... Wenn dies der beste ist, den Sie haben gesehen, woanders suchen.
Schade, dass es dir nicht gefallen hat. Der gesamte Code ist datengetrieben und ich habe keine Open-Source-Implementierung gefunden, die diese Aufgabe so einfach erledigen kann. Wenn du Links zu gutem Code hast, poste bitte die Links zu Rechtschreibfehlern, virtuelle Funktion - Es ist eine gute Ressource für die Menschen, die neu in der "komponentenbasierten Architektur" sind. Es dient dem Zweck, eine wertvolle Einführung in die Funktionsweise von datengetriebenem Design in der Praxis zu geben.
Ayyappa
2
Keine Ahnung von Code, aber Rechtschreibfehler aufzuzeigen ist ein ungültiges Argument, da es auch viele Programmierer aus nicht englischsprachigen Ländern gibt.
Rajavanya Subramaniyan