Jogo ou mecanismo de código aberto baseado em componentes?


15

Eu li um pouco sobre o design de jogos com base em componentes, mas ainda estou tendo problemas para descobrir como exatamente você implementaria o jogo. Existem bons exemplos de jogos baseados em componentes ou mecanismos de jogos que eu poderia ler para ter uma idéia melhor disso?

Respostas:


7

Pessoalmente, acho que não há bons exemplos, principalmente porque a definição de um "sistema baseado em componentes" para jogos é tão vagamente definida que pode significar quase nada.

Você pode achar útil algumas das discussões nesta resposta: Como implementar um sistema baseado em componentes para itens em um jogo na web

No geral, a abordagem é simplesmente alterar qualquer tipo de GameObject ou Actor de uma classe grande que lida com todo comportamento em uma classe mais simples que contém objetos que executam comportamento. Eu acho que trabalhar com você mesmo e criar componentes diferentes para o seu jogo geralmente será a melhor maneira de prosseguir.


Eu ouvi isso. Ao tentar encontrar bons recursos, descobri que quase todas as pessoas usam terminologias diferentes para descrever as coisas. Tornou difícil comparar diferentes implementações quando você passa metade do tempo traduzindo as estruturas básicas. Sistema de entidades, Sistema de componentes, Objeto de jogo, Modelo, Montagem, Montagem de componentes, etc ...
Leniência

2

Aqui estão alguns recursos que você pode gostar:
Existe esse tópico incrível. Não é um mecanismo de jogo em si, mas o design e a discussão são ótimos.
Uma pergunta no StackOverflow sobre um tópico muito semelhante.

Para responder à pergunta original, a estrutura do Elephant em C # é exatamente o que você deseja: foi descontinuada, mas ainda existe aqui para referência da implementação.


1

Este site começa em uma implementação básica.

A maioria dos itens acima é inspirada neste artigo em T = Machine

Comecei em uma implementação básica inspirada nos dois links acima. Tenho certeza de que desviei muito da teoria pura dos sistemas de componentes e, sem dúvida, há bugs, mas pode ser útil se você estiver procurando por alguns exemplos simples.

Bricle (C # / XNA)

No momento, basta carregar algumas entidades básicas, manipular alguns eventos etc. Os principais locais que você procura são a pasta Engine.EntitySystem e provavelmente a PlayScreen onde as entidades são realmente criadas.

Criar um armazenamento de componentes simples baseado em tipo e ocultar isso atrás de um EntityManager comum era relativamente simples.

O primeiro desafio que encontrei foi quando sistemas individuais podem exigir vários tipos de componentes (por exemplo, componentes físicos e InputMoveable). Para usar a linguagem de banco de dados relacional, tive que encontrar uma maneira de fazer uma consulta JOIN. Para isso, criei outro tipo de coleção para entidades criadas a partir das consultas do tipo de componente correspondente - cada coleção de entidades é conectada a um evento OnEntityCreate e verifica se ela corresponde. Ainda há alguns bugs lá.

O segundo desafio foi realmente criar um 'objeto de jogo' - eu os chamei de modelos. Aqui provavelmente não sou muito puro de acordo com as especificações de T = Machine, mas parece funcionar. Os modelos agrupam instanciações de componentes e permitem uma composição mais fácil da entidade (ou seja, a bola é extraível e física).

Espero que seja útil - os sistemas de entidade / componente podem ser um desafio para superar alguns dos obstáculos iniciais.


1

Outro, que eu não usei, mas examinei um pouco o código, é Artemis . Bem comentado e bastante ativo. Originalmente uma estrutura Java, mas foi portada para C # / XNA.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.