Eu prefácio isso dizendo que não procurei uma quantidade enorme de fontes de jogos nem construí muito na maneira de jogos.
Mas, ao tentar empregar práticas de codificação 'corporativas' em aplicativos da Web, olhar seriamente para o código-fonte do jogo me machuca: "O que essa lógica de visão está fazendo com a lógica de negócios? Isso precisa de refatoração ... o mesmo acontece com refatoração, refatoração e refatoração" "
Isso me preocupa, já que estou prestes a iniciar um projeto de jogo, e não tenho certeza se a tentativa de mvc / tdd o processo dev nos atrapalhará ou nos ajudará, pois não vejo muitos exemplos de jogos que usam isso. ou muita pressão por melhores práticas arquitetônicas na comunidade.
O que se segue é um extrato de um ótimo artigo sobre jogos de prototipagem , embora, para mim, parecesse exatamente a atitude que muitos desenvolvedores de jogos parecem usar ao escrever o código do jogo de produção:
Erro # 4: Construindo um sistema, não um jogo
... Se você se encontrar trabalhando em algo que não está avançando diretamente, pare aí. Como programadores, temos a tendência de tentar generalizar nosso código, torná-lo elegante e poder lidar com todas as situações. Achamos que uma coceira terrivelmente difícil não arranha, mas precisamos aprender como. Levei muitos anos para perceber que não é sobre o código, é sobre o jogo que você lança no final.
Não escreva um sistema elegante de componente de jogo, pule completamente o editor e conecte o estado no código, evite a loucura XML, baseada em dados e de análise automática, e apenas codifique a maldita coisa.
... Basta colocar as coisas na tela o mais rápido possível.
E nunca, jamais, use o argumento "se demorarmos um pouco mais e fizermos isso da maneira certa, podemos reutilizá-lo no jogo". SEMPRE.
é porque os jogos são (principalmente) orientados visualmente, por isso faz sentido que o código tenha um peso maior na visualização, portanto, quaisquer benefícios de mudar as coisas para modelos / controladores são bastante mínimos, então, por que se preocupar?
Ouvi o argumento de que o MVC introduz uma sobrecarga de desempenho, mas isso me parece uma otimização prematura e que havia problemas de desempenho mais importantes a serem resolvidos antes que você se preocupe com as sobrecargas do MVC (por exemplo, pipeline de renderização, algoritmos de IA, estrutura de dados passagem, etc).
A mesma coisa com relação ao TDD. Não é comum ver jogos empregando casos de teste, mas talvez isso se deva aos problemas de design acima (visão mista / empresa) e ao fato de ser difícil testar componentes visuais ou componentes que se baseiam em resultados probablísticos (por exemplo, operam em simulações físicas) )
Talvez eu esteja apenas olhando o código fonte errado, mas por que não vemos mais essas práticas "corporativas" empregadas no design de jogos? Os jogos são realmente tão diferentes em seus requisitos ou é um problema de pessoas / cultura (por exemplo, os desenvolvedores de jogos têm uma experiência diferente e, portanto, têm hábitos de codificação diferentes)?