Prefiero esto diciendo que no he visto una gran cantidad de fuente de juego, ni he construido mucho en el camino de los juegos.
Pero al tratar de emplear prácticas de codificación 'empresariales' en aplicaciones web, mirar el código fuente del juego me duele mucho la cabeza: "¿Qué está haciendo esta lógica de vista con la lógica de negocios? Esto necesita ser refactorizado ... así que esto, refactor, refactorrr "
Esto me preocupa cuando estoy a punto de comenzar un proyecto de juego, y no estoy seguro de si intentar hacer mvc / tdd el proceso de desarrollo nos va a obstaculizar o ayudar, ya que no veo muchos ejemplos de juegos que usen esto o mucho impulso para mejores prácticas arquitectónicas en la comunidad.
Lo siguiente es un extracto de un gran artículo sobre juegos de prototipos , aunque para mí parecía exactamente la actitud que muchos desarrolladores de juegos parecen usar al escribir el código de producción del juego:
Error # 4: construir un sistema, no un juego
... si alguna vez te encuentras trabajando en algo que no te mueve directamente hacia adelante, detente allí. Como programadores, tenemos la tendencia a tratar de generalizar nuestro código, hacerlo elegante y poder manejar cada situación. Encontramos que una picazón es terriblemente dura, no se rasca, pero necesitamos aprender cómo. Me llevó muchos años darme cuenta de que no se trata del código, sino del juego que envías al final.
No escriba un elegante sistema de componentes del juego, omita el editor por completo y conecte el estado del código, evite la locura basada en datos, el auto-análisis, XML, y simplemente codifique la maldita cosa.
... Solo obtén cosas en la pantalla lo más rápido que puedas.
Y nunca, nunca, use el argumento "si nos tomamos un tiempo extra y hacemos esto de la manera correcta, podemos reutilizarlo en el juego". SIEMPRE.
es porque los juegos están orientados visualmente (en su mayoría), por lo que tiene sentido que el código tenga un gran peso en la vista, por lo tanto, cualquier beneficio de mover cosas a modelos / controladores es bastante mínimo, entonces ¿por qué molestarse?
He escuchado el argumento de que MVC introduce una sobrecarga de rendimiento, pero esto me parece una optimización prematura, y que habría problemas de rendimiento más importantes que abordar antes de preocuparse por los gastos generales de MVC (por ejemplo, canalización de procesamiento, algoritmos de inteligencia artificial, estructura de datos transversal, etc.
Lo mismo con respecto a TDD. No es frecuente que vea juegos que emplean casos de prueba, pero tal vez esto se deba a los problemas de diseño anteriores (vista mixta / negocio) y al hecho de que es difícil probar componentes visuales o componentes que dependen de resultados probablísticos (por ejemplo, operar dentro de simulaciones físicas). )
Quizás solo estoy mirando el código fuente incorrecto, pero ¿por qué no vemos más de estas prácticas 'empresariales' empleadas en el diseño de juegos? ¿Los juegos son realmente tan diferentes en sus requisitos, o es un problema de personas / cultura (es decir, los desarrolladores de juegos provienen de un entorno diferente y por lo tanto tienen diferentes hábitos de codificación)?