Sistemas de objetos de juego basados ​​en componentes en la práctica [cerrado]

43

Veamos la historia del éxito. ¿Qué juegos populares (y motores de juegos) se crearon utilizando un sistema de objetos de juego basado en componentes ? Cada respuesta debe contener:

  1. Título del juego (uno por respuesta)
  2. Autor / Empresa
  3. Año
  4. Tiempo de desarrollo (opcional)
  5. Enlace a postmortem (opcional)
  6. Enlaces a documentos / código fuente (opcional)
arriba
fuente
77
-1, casi todos los juegos escritos en la última década usarán un sistema de componentes en algún lugar, y no usarán un sistema de componentes en otro lugar que podría haberlo hecho.
55
Está usted equivocado. Muchos motores todavía usan jerarquías estáticas. Y es interesante recopilar y leer documentos / postmortems / fragmentos de código de juegos y motores que realmente usan sistemas de componentes.
arriba el
44
No dije que los motores no usen jerarquías estáticas. Dije que sería difícil encontrar un motor que solo use jerarquías estáticas, al igual que se lo presionaría para encontrar uno que solo use componentes.
2
Está usted equivocado. Las entidades del juego (corazón de la lógica del juego), los efectos visuales, el motor del juego y la infraestructura del editor están basados ​​en componentes o no.
arriba el
2
@topright: Independientemente de si Joe tiene razón o no, comenzar sus comentarios dos veces seguidas con un simple y personal 'Estás equivocado' no es muy discreto, ¿no lo crees? Apuesto a que sus comentarios no perderían ninguna información relevante sin esas tres pequeñas palabras, pero omitirlas contribuiría mucho más a una conversación agradable y educada. Por favor considere esto :)
Michael Klement

Respuestas:

19

Dungeon Siege de Gas Powered Games

Scott Bilas lanzó mucha información sobre Dungeon Siege que presentaba sistemas basados ​​en componentes, entre otras cosas.

Dungeon Siege fue lanzado en 2002.

DrDeth
fuente
Wow, excelente enlace. Su charla sobre sistemas de componentes realmente me ayudó a comprender mejor la implementación de sistemas basados ​​en componentes. Habla bien de cómo se hizo el mundo continuo en DS también. Me pregunto si todavía se usan técnicas similares en otros grandes juegos mundiales. Creo que la mayoría tiende a usar algo más parecido a regiones o fragmentos (Minecraft, cualquier cosa de Bethesda).
CodexArcanum
19

Resistencia 1-2 (posiblemente 3) (2006-2008) por Insomniac Games

Terrance Cohen enumera estos juegos en su charla A Dynamic Component Architecture for High Performance Gameplay de GDC Canada 2010.

No estoy seguro de si esto se aplicó a los recientes juegos de Ratchet & Clank.

Chris Waters
fuente
¿Sabes si el audio de esa presentación está detrás del muro de pago de GDC Vault? Las diapositivas solas son geniales, pero tengo algunas preguntas que sospecho que se responden en la presentación.
No sabía sobre esta presentación, muchas gracias!
arriba el
13

Unity3D utiliza un sistema basado en componentes de forma predeterminada. Es excelente para crear entidades de juego a partir de un archivo de texto y la inyección de dependencias.

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


}

Esos componentes podrían verse así

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
fuente
8
  1. Ladrón: El Proyecto Oscuro
  2. Espejo
  3. 1996 - 1998
  4. 2 años
  5. Post mortem
pentaphobe
fuente
8

Tony Hawk Pro Skater 3
Desarrollador: Neversoft
Año: 2001
Tiempo: Aproximadamente dos años
Post Mortem: Evolucione su jerarquía (probablemente el artículo basado en componentes más vinculado)

pek
fuente
1

Que yo sepa, el mejor proyecto que he visto es Burger Engine. jst descargue el código y verifique qué tan bien se han implementado. Todo está basado en datos desde xml y utilizaron muy bien la arquitectura basada en entidades. Vale la pena mirarlo.

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

Ayyappa
fuente
2
-1, ese código parece realmente aficionado, desde la falta de ortografía de "Resumen" hasta la enumeración del tipo de componente estático, un gran número de funciones virtuales, la inclusión de 28 bytes de datos de posición en cada componente ... Si esto es lo mejor que tiene visto, mira a otro lado.
triste que no te haya gustado. Todo el código está basado en datos y no encontré ninguna implementación de código abierto que pueda realizar esta tarea con tanta facilidad. Si tienes algún enlace a un buen código, publícalo. a faltas de ortografía, funciones virtuales: es un buen recurso para las personas que son nuevas en la 'arquitectura basada en componentes'. Sirve para proporcionar una introducción valiosa sobre cómo funciona el diseño basado en datos en la práctica.
Ayyappa
2
No sé sobre el código, pero señalar errores ortográficos es un argumento no válido, considerando que también hay muchos programadores de países que no hablan inglés.
Rajavanya Subramaniyan