Para un desarrollador de software sólido de propósito general, ¿qué es específicamente diferente del desarrollo del juego, ya sea fundamentalmente o simplemente diferencias de grado?
He hecho juegos de juguete como Tic-tac-toe, Tetris y un solucionador de sudoku de fuerza bruta (con interfaz de usuario) y ahora me estoy embarcando en un proyecto de tamaño mediano (de tamaño mediano por ser un desarrollador único y no tener hecho muchos juegos) y una cosa que he encontrado con este proyecto en particular es que la separación de las preocupaciones es mucho más difícil ya que todo afecta el estado y cada objeto puede interactuar con todos los demás de una infinidad de formas.
Hasta ahora he logrado mantener el código razonablemente limpio para mi satisfacción, pero encuentro que mantener el código limpio en juegos no triviales es mucho más difícil de lo que es para mi trabajo diario.
El juego en el que estoy trabajando es por turnos y los gráficos serán bastante simples (basados en la web, principalmente a través de la manipulación DOM), por lo que el tiempo real y el trabajo en 3D no son realmente aplicables para mí, pero aún así sería interesado en respuestas con respecto a aquellos si son interesantes. Aunque principalmente interesado en la lógica general del juego.
PD Siéntase libre de volver a etiquetar esto, no estoy realmente seguro de qué etiquetas son aplicables.
fuente
Soy principalmente un desarrollador de juegos y no un desarrollador de software tradicional, pero creo que hay varias diferencias clave.
Obviamente, se trata de varias generalizaciones y no son exhaustivas:
equipos más grandes. Fondos más variados (artistas, programadores, productores, con cada uno hay aún más variación). Ciclos de desarrollo más largos. Mayores estándares de rendimiento. Mayor escala de proyectos. Mayor y más costoso riesgo de fracaso. Ambiente más estresante.
En cuanto a las interacciones de objetos y el diseño de su arquitectura, aún puede desacoplar adecuadamente los sistemas. Sus objetos y comportamiento de juego claramente dependerán entre sí y de estos sistemas. Sin embargo, esa es la naturaleza del juego (juego de palabras), combina todos estos sistemas en una sola unidad cohesiva, y eso no tiene nada de malo. Puede parecerlo porque la escala de todo es más grande de lo que estás acostumbrado.
¿Algunos sistemas fácilmente identificados y segregados?
fuente
No creo que la programación de juegos sea diferente de otros dominios de aplicación desde el punto de vista de que es más difícil elegir la separación correcta de preocupaciones. Cada vez que lleve sus habilidades a un tipo diferente de dominio de aplicación, encontrará que la transición no es tan fluida como esperaba porque siempre hay diferencias. Lo que funcionó en su aplicación de base de datos tiene muchos patrones / modismos que no funcionan tan bien en su aplicación integrada, que tiene muchos patrones / modismos que no funcionan tan bien en ese sistema en tiempo real que también tiene muchos patrones / modismos que no trabajes en la programación de juegos. Sin embargo, los programadores de juegos tienen los mismos problemas cuando dejan su dominio de programación de juegos. Todo es solo una cuestión de lo que estás acostumbrado.
Dicho esto, creo que la programación de juegos parece más difícil para muchas personas porque requiere que trabajes con partes de la computadora con las que la mayoría de los programadores nunca tienen que lidiar en su trabajo real (gráficos y sonidos de bajo nivel) y más matemáticas aplicadas que muchas las personas se sienten cómodas y no por la separación de preocupaciones. Si bien siempre hay dificultades para determinar la elección correcta para la separación de las preocupaciones, creo que la dificultad con la separación de las preocupaciones que está experimentando es simplemente pasar a un nuevo dominio de problemas. Una vez que cree algunas aplicaciones, será como cualquier otra cosa, aprenderá lo que le gusta y no usará lo que no.
fuente
Creo que tienes una respuesta allí, hay muchas interacciones. Hice algunos juegos con XNA (C #), ahora estoy haciendo un juego de tamaño medio como dices, un juego de simulación de estrategia, he estado trabajando en él durante casi 2 meses, y lo hago solo sin ayuda, así que debo mantener mi código simple. Creo que una gran diferencia es comprender y diseñar algunas clases para la funcionalidad, y otras para dibujar, esto ayuda y hace que su programa sea más limpio. Por supuesto, si estás haciendo un juego necesitas tener más recursos, como imágenes (2d o 3d) y música (o sonidos). Así que hay diferencias, creo que es más difícil, pero es muy divertido.
fuente
Creo que la programación de juegos es más divertida. Puedes probar constantemente tu juego, implementas diferentes físicas, lo que resulta en un comportamiento diferente.
Desde mi experiencia, la programación de juegos es en realidad mucho más divertida en comparación con el desarrollo de software. En el desarrollo de software, usted tiene que cumplir ciertas reglas comerciales, se vuelve poco aburrido. Estás creando un software, no es divertido. Usar software es genial, útil, útil, pero no divertido.
Los juegos son divertidos. Tal vez soy solo yo, pero encuentro el desarrollo de juegos mucho más intrigante y emocionante que el desarrollo de software tradicional, independientemente del uso de herramientas.
PD: Utilizo las últimas herramientas para el desarrollo de software, HTML5, Asp.Net, C #, etc. Todavía me parece más divertido codificar DirectX, UDK, XNA, Unity.
fuente