MVC ou componentes, ou ambos?

9

Sou um desenvolvedor experiente, mas recentemente estou querendo entrar na programação de jogos, mas como você sabe, o desenvolvimento de jogos é uma fera totalmente diferente da maioria das outras formas de programação (talvez apenas superada pelo desenvolvimento de sistemas operacionais).

Dito isto, eu tenho lido Game Coding Complete (ISBN 978-1-58450-680-5) por Mike McShaffry.

Originalmente, eu tentava desenvolver um modelo de componente com a variedade de componentes usuais (por exemplo, SpacialComponent, VisualComponent, EntityLogicComponent etc.). pode fazê-lo funcionar com o modelo de componente, se possível, mas, sem componentes, o modelo MVC parece um monstro maligno da herança monolítica e não muito flexível, pelo qual não estou realmente interessado.

Estou realmente confuso sobre para onde ir a partir deste ponto.

Você tem mais experiência ou experiência com especialistas em codificação de jogos?

Muito obrigado!

JamesK89
fonte
Esta pergunta no StackOverflow fala sobre design baseado em componentes, pode ajudá-lo.
Macke 11/05

Respostas:

6

Perguntas úteis:

Arquitetura do mecanismo de jogo MVC (Model-View-Controller) - Sim ou Não?

Por que o MVC e o TDD não são mais empregados na arquitetura de jogos?

Compartimento MVC-like em jogos?

Para mim, eu tenho uma classe base RenderComponent e, em seguida, algumas que herdam dela (GameSprite, UISprite, ou se você estiver executando 3d StaticModel, DynamicModel, BillboardModel etc.) e, se o objeto quiser ser renderizado, o objeto envia sua Membro RenderComponent ao sistema de renderização. Não é necessário que o sistema de renderização saiba que tipo de objeto enviou o RenderComponent. Só sabe que tem algo para renderizar e é melhor fazê-lo, ou então!

Mantenha-o básico e centrado na composição, e não na herança. Separar lógica, dados e representação não é incompatível com um sistema de componentes.

michael.bartnett
fonte
6

Eu recomendo ignorar os componentes do seu primeiro jogo, porque eles resolvem alguns tipos de complexidade, adicionando mais complexidade em outras áreas, e se você ainda não criou um jogo, não tem idéia se essa troca vale a pena ou não.

Na maioria das vezes, porém, não fique atolado em paradigmas de programação e apenas codifique um jogo. Não existem maneiras certas ou erradas, caso contrário, ninguém precisaria fazer esse tipo de pergunta. Exercite-se à medida que avança.

Kylotan
fonte
11
+1 em "eles resolvem alguns tipos de complexidade adicionando mais complexidade em outras áreas". Isso é verdade para quase 99% dos "padrões de design" existentes, ou mesmo para a tecnologia em geral.
Julio
2

Eu não usaria um padrão MVC estrito, mas separaria sua renderização da simulação e a colocaria em outro encadeamento.

Eu acho que os componentes são muito úteis, na verdade, mas muitas vezes vejo pessoas simplesmente os ignorando e gravando seu código diretamente no componente "principal", seja o que for. Você deve se lembrar que os jogos estão cheios de hacks, porque geralmente são escritos em um prazo, com a suposição de que o código não será reutilizado.

Estou um pouco confuso sobre o motivo pelo qual você acha que essas abordagens são incompatíveis. Que código de jogo você olhou?

Pessoalmente, acho que os jogos exigem um design inicial. Eu já vi algumas bases de código que eram pesadelos por causa da "mentalidade de apenas codificar".

Dito isto, acho que você deveria entrar e codificar um jogo. Você cometerá tantos erros ao escrever seu primeiro jogo que esse tipo de problema não importará muito. Depois de entender melhor o que é necessário, você pode voltar e começar a examinar a arquitetura e ver como ela resolve os problemas encontrados.

BigSandwich
fonte