Les systèmes d'objets de jeu basés sur des composants dans la pratique [fermé]

43

Voyons l'histoire du succès. Quels jeux (et moteurs de jeu) populaires ont été construits en utilisant un système d'objet de jeu à base de composants ? Chaque réponse doit contenir:

  1. Titre du jeu (un par réponse)
  2. Auteur / Société
  3. An
  4. Temps de développement (optionnel)
  5. Lien vers post mortem (facultatif)
  6. Liens vers docs / code source (facultatif)
redressement
la source
7
-1, à peu près tous les jeux écrits au cours de la dernière décennie utiliseront un système de composants quelque part et non un système de composants ailleurs.
5
Vous avez tort. De nombreux moteurs utilisent encore des hiérarchies statiques. Et il est intéressant de collecter et de lire des extraits de documents / postmortems / de code de jeux et de moteurs qui utilisent réellement des systèmes de composants.
topright
4
Je n'ai pas dit que les moteurs n'utilisent pas de hiérarchies statiques. J'ai dit que vous seriez mal à trouver un moteur qui n'utilise des hiérarchies statiques, comme vous seriez mal à trouver un seul en utilisant des composants.
2
Vous avez tort. Les entités de jeu (cœur de la logique de jeu), les effets visuels, le moteur de jeu et l'infrastructure d'éditeur sont basés sur des composants ou non.
topright
2
@topright: Peu importe si Joe a raison ou tort, commencer vos commentaires deux fois de suite avec un simple et personnel "Vous avez tort" n'est pas très délicat, vous ne pensez pas aussi? Je parie que vos commentaires ne manqueraient à aucune information pertinente sans ces trois petits mots, mais les omettre contribuerait tellement plus à une conversation agréable et polie. Veuillez considérer ceci :)
Michael Klement

Réponses:

19

Dungeon Siege par Gas Powered Games

Scott Bilas a publié de nombreuses informations sur Dungeon Siege, notamment des systèmes à base de composants.

Dungeon Siege est sorti en 2002.

DrDeth
la source
Wow, excellent lien. Son exposé sur les systèmes de composants m'a vraiment aidé à mieux comprendre la mise en œuvre de systèmes à composants. Neat talk sur la façon dont le monde continu a été créé dans DS. Je me demande si des techniques similaires sont encore utilisées dans d'autres grands jeux mondiaux. Je pense que la plupart ont tendance à utiliser quelque chose de plus proche des régions ou des morceaux (Minecraft, n'importe quoi de Bethesda).
CodexArcanum
19

Résistance 1-2 (éventuellement 3) (2006-2008) de Insomniac Games

Terrance Cohen répertorie ces jeux dans son exposé intitulé Une architecture de composants dynamiques pour un jeu à hautes performances de GDC Canada 2010.

Je ne sais pas si cela a été appliqué aux récents jeux Ratchet & Clank.

Chris Waters
la source
Savez-vous si l'audio de cette présentation se situe derrière le paywall de GDC Vault? Les diapositives à elles seules sont plutôt chouettes, mais il y a quelques questions que je soupçonne d'obtenir une réponse dans la présentation.
Je ne connaissais pas cette présentation, merci beaucoup!
topright
13

Unity3D utilise un système à base de composants par défaut. C'est superbe pour créer des entités de jeu à partir d'un fichier texte et une injection de dépendance.

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


}

Ces composants pourraient ressembler à ceci

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
la source
8
  1. Voleur: The Dark Project
  2. Miroir
  3. 1996 - 1998
  4. 2 ans
  5. Autopsie
pentaphobe
la source
1

À ma connaissance, le meilleur projet que j'ai vu est Burger Engine. jst télécharger le code et vérifier si elles ont bien été implémentées. Le tout est piloté par les données à partir du xml et ils ont très bien utilisé architecture.worth basé sur des entités.

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

Ayyappa
la source
2
-1, ce code a l'air vraiment amateur, de la faute d'orthographe de "Résumé" à l'énumération de type de composant statique, en passant par un grand nombre de fonctions virtuelles, l'inclusion de 28 octets de données de position sur chaque composant ... Si c'est le meilleur que vous avez vu, regarde ailleurs.
Tout le code est basé sur les données et je n'ai trouvé aucune implémentation open source permettant d'accomplir cette tâche avec autant de facilité. Si vous avez des liens vers du bon code, postez les liens. fictif, virtual func - C’est une bonne ressource pour les débutants en «architecture à base de composants». Son objectif est de donner une introduction précieuse sur le fonctionnement pratique de la conception basée sur les données.
Ayyappa
2
Je ne connais pas le code, mais signaler des fautes d'orthographe est un argument invalide, étant donné qu'il existe également de nombreux programmeurs de pays non anglophones.
Rajavanya Subramaniyan le