Como integrar o editor de jogos ao mecanismo?


7

O que estou tentando descobrir é qual é a melhor maneira de integrar o editor (nível, efeitos, modelo, etc ...) da maneira mais eficaz?

Agora, a primeira coisa que pensei seria criar o mecanismo de jogo (*) extremamente modular. Por exemplo, tomei o exemplo de estados de jogo. Você pode ter vários estados de jogo, todos com seus próprios métodos update () e draw (), entre outros. Cada classe de estado do jogo herdaria de uma classe GameState base. Isso permite uma abordagem mais modular e útil.

Agora, a abordagem mais eficiente seria implementar o editor junto com o mecanismo modular ou criar dois designs diferentes para o jogo e o editor? Pensei em pegar o exemplo do estado do jogo e estendê-lo aos estados da janela, e poderia ser usado para muito mais sistemas. Existe uma melhor implementação desse design (estado do jogo) para uso em outros sistemas usados ​​no mecanismo?

*: Agora eu sei que o termo mecanismo de jogo é meio irrelevante e mal utilizado em muitas situações. O que estou me referindo como "mecanismo de jogo" é a combinação dos sistemas com os quais o jogo deve interagir para abreviar.

Além disso, isso é mais uma questão de teoria / design do que uma implementação. Embora ambos combinem, eu gostaria de ter uma ideia mais geral de como o editor é construído de maneira eficiente e ainda usando o mesmo código de mecanismo usado pelo jogo.

PS Se você precisar de mais esclarecimentos ou bits extras, deixe um comentário.

Respostas:


5

Eu acho que sua pergunta é mais sobre design, mas geralmente você não deseja projetar algo que não pode ser implementado; portanto, a implementação aparece de vez em quando.

Quanto ao editor, acho que depende do que a biblioteca de mecanismos de jogos em tempo de execução possa suportar. Ele suporta algum tipo de arquitetura geral de aplicativos (por exemplo, sistema de eventos, manipulação de exceções, GUI, etc ...) ou é mais focado na execução de um tipo específico de jogo para o qual foi criado? Se ele suporta essa arquitetura, acho que seria possível implementar o editor semelhante a um jogo. Caso contrário, o editor poderia ser um programa independente usando alguma estrutura estabelecida.

Você pode conferir a Game Engine Architecture, de Jason Gregory. Neste livro, o autor aponta que o UnrealEd é um exemplo de editor criado usando o mecanismo que ele suporta e que esse design tem prós e contras. (pro: tudo é nativo, por isso é fácil pressionar 'play' e pular direto para o jogo a partir do editor. con: se seu mecanismo não estiver estável / em desenvolvimento, o uso do editor poderá ser afetado.)

Abaixo está uma imagem da arquitetura de um mecanismo do mesmo livro, por exemplo. Para integrar um editor, você provavelmente desejaria adicionar uma GUI genérica ao Frontend. Você também pode querer um sistema de Eventos de aplicativo (que possa ser ligado / desligado) que fica em algum lugar entre o HID e o Frontend. Provavelmente, você pode obter uma quantidade razoável de funcionalidades com isso, mas pode haver um balão Editor / Subsistemas Específicos de Aplicativos Genéricos ao lado do jogo e outros balões preexistentes podem ser estendidos, conforme necessário.

http://www.bennychen.cn/wp-content/uploads/2011/03/RuntimeGameEngineArchitecture.png


Obrigado por uma boa visão. Certificarei-me de pegar esse livro, já que foi sugerido várias vezes.
21712 Daniel

11
A arquitetura Game Engine Architecture é um livro incrível, mas se estende demais. Ele fala sobre subsistemas, mas nunca em muitos detalhes. No entanto, eu o recomendaria para quem quiser construir seu próprio mecanismo.
precisa

Obrigado. Compreender como construir um mecanismo e, basicamente, como o processo de implementação seria seria minha primeira tarefa, pois eu gostaria de colocar mais jogos para entender realmente o que eu preciso e o que não preciso.
21712 Daniel
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.