Sistemas de objetos de jogo baseados em componentes na prática [fechado]

43

Vamos ver a história do sucesso. Quais jogos populares (e mecanismos de jogos) foram criados usando o sistema de objetos de jogo baseado em componentes ? Cada resposta deve conter:

  1. Título do jogo (um por resposta)
  2. Autor / Empresa
  3. Ano
  4. Tempo de desenvolvimento (opcional)
  5. Link para post-mortem (opcional)
  6. Links para documentos / código-fonte (opcional)
TopRight
fonte
7
-1, praticamente todo jogo escrito na última década vai usar um sistema de componentes em algum lugar, e não usar um sistema de componentes em outro lugar que poderia ter.
5
Você está errado. Muitos mecanismos ainda usam hierarquias estáticas. E é interessante coletar e ler trechos de documentos / postmortems / códigos de jogos e mecanismos que realmente usam sistemas de componentes.
Topright
4
Eu não disse que os mecanismos não usam hierarquias estáticas. Eu disse que seria difícil encontrar um mecanismo que use apenas hierarquias estáticas, assim como você seria pressionado a encontrar um usando apenas componentes.
2
Você está errado. Entidades do jogo (coração da lógica do jogo), efeitos visuais, mecanismo do jogo e infraestrutura do editor são baseados em componentes ou não.
Topright
2
@topright: Independentemente de Joe estar certo ou errado, começar seus comentários duas vezes seguidas com um simples e pessoal 'Você está errado' não é muito diplomático, você não acha? Aposto que seus comentários não perderiam nenhuma informação relevante sem essas três pequenas palavras, mas omiti-las contribuiria muito mais para uma conversa agradável e educada. Por favor, considere isso :)
Michael Klement

Respostas:

19

Dungeon Siege por Gas Powered Games

Scott Bilas divulgou muitas informações sobre o Dungeon Siege, que apresentavam sistemas baseados em componentes, entre outras coisas.

Dungeon Siege foi lançado em 2002.

DrDeth
fonte
Uau, excelente link. Sua palestra sobre sistemas de componentes realmente me ajudou a entender melhor a implementação de sistemas baseados em componentes. Discussão interessante sobre como o mundo contínuo também foi feito no DS. Gostaria de saber se técnicas semelhantes ainda estão sendo usadas em outros grandes jogos mundiais. Eu acho que a maioria tende a usar algo mais parecido com regiões ou pedaços (Minecraft, qualquer coisa da Bethesda).
CodexArcanum 20/10/10
19

Resistance 1-2 (possivelmente 3) (2006-2008) da Insomniac Games

Terrance Cohen lista esses jogos em sua palestra A Dynamic Component Architecture for High Performance Gameplay da GDC Canada 2010.

Não tenho certeza se isso foi aplicado aos jogos recentes do Ratchet & Clank.

Chris Waters
fonte
Você sabe se o áudio dessa apresentação está por trás do paywall do GDC Vault? Os slides por si só são bem legais, mas há algumas perguntas que suspeito que tenham sido respondidas na apresentação.
Eu não conhecia essa apresentação, muito obrigado!
Topright
13

O Unity3D usa um sistema baseado em componente por padrão. É excelente para criar entidades de jogos a partir de um arquivo de texto e injeção de dependência.

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


}

Esses componentes podem ficar assim

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
fonte
8
  1. Ladrão: O Projeto Sombrio
  2. Espelho
  3. 1996 - 1998
  4. 2-ish anos
  5. Postmortem
pentaphobe
fonte
8

Tony Hawk Pro Skater 3
Desenvolvedor: Neversoft
Ano: 2001
Tempo: cerca de dois anos
Post Mortem: evolua sua hierarquia (provavelmente o artigo baseado em componente mais vinculado)

pek
fonte
1

Que eu saiba, o melhor projeto que eu já vi é o Burger Engine. jst baixar o código e verificar o quão bem eles implementaram. A coisa toda é orientada a dados de xml e eles usaram muito bem a arquitetura baseada em entidade. vale a pena olhar para ele.

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

Ayyappa
fonte
2
-1, esse código parece realmente amador, desde o erro ortográfico de "Resumo" até a enumeração do tipo de componente estático, um grande número de funções virtuais, a inclusão de 28 bytes de dados de posição em cada componente ... Se é o melhor que você tem visto, procure outro lugar.
Infelizmente, você não gostou. O código inteiro é orientado por dados e eu não encontrei nenhuma implementação de código aberto que realize essa tarefa com tanta facilidade. Se você tiver links para um bom código, poste os links. com erros ortográficos, funções virtuais - É um bom recurso para as pessoas novas na 'arquitetura baseada em componentes'. Ele tem o objetivo de fornecer uma introdução valiosa sobre como o design orientado a dados funciona na prática.
Ayyappa
2
Não sei quanto ao código, mas apontar erros de ortografia é um argumento inválido, considerando que também existem muitos programadores de países que não falam inglês.
Rajavanya Subramaniyan