Última actualización: enero de 2020. Tiempo de lectura: 10 minutos

Prácticas recomendadas para crear juegos estables con menos errores

What you will get from this page: Tips on maintaining a stable and flexible build to save yourself time and money. Get pointers on using version control, utilizing your changelists, clean cheat functionality, bug tracking and more

After years of shipping large titles with even larger teams, typical AAA studios know how to keep their productions on track and maintain a clean and stable build. Sascha Gundlach, from MetalPop Games, highlights how independent game developers can adapt the AAA approach to their own production. 

With a clean build, it’s easy to change or add things, as well as maintain and debug features. Overall, you’ll be able to develop your game faster and more efficiently.

Los beneficios de una versión limpia

Mantén una versión del juego limpia y estable. A la larga, verás los frutos de hacerlo, ya que te permitirá:

  • Publicar juegos estables con menos errores.
  • Ahorrar tiempo de producción, debido a menos errores y una base de código más limpia.
  • Reducir tus probabilidades de "romper" la versión.
  • Crear versiones demo y especiales más fácilmente.

No todas las prácticas de programación AAA son adecuadas para los equipos independientes. Pero hay muchas cosas que son gratuitas (o accesibles) y pueden implementarse en equipos tanto grandes como pequeños para garantizar que el código se mantenga limpio y estable.

Incluso aunque se trate de una operación unipersonal, estos consejos te ayudarán a mantener una versión mejor y de mayor calidad de tu juego. 

Utiliza el control de versiones

Incluso hoy, con la capacidad de tener sistemas de control de versiones (VCS, por sus siglas en inglés) gratuitos, aún hay equipos que trabajan con carpetas compartidas o a través de plataformas como Dropbox para el proceso de colaboración. Desarrollar sin un control de versiones podría compararse a conducir sin usar el cinturón de seguridad. Usar un cinturón de seguridad puede no resultar cómodo y hasta puede ser restrictivo. Pero, si alguna vez chocas contra un árbol a toda velocidad, te salvará la vida.

No puedes darte el lujo de perder trabajo hecho, independientemente del tamaño de tu equipo. Si alguien hackea tu cuenta de Dropbox o se rompe el disco duro, eso no debería hacerte perder días o semanas de trabajo.

Hay muchas soluciones gratuitas que puedes usar. Perforce, Git y SVN ofrecen versiones gratuitas. Y, dado que Unity Teams viene integrado en Unity, todo es incluso más fácil.

Historial de carpetas de Perforce que muestra todos los cambios

Emplea tus listas de cambios

Además de la seguridad que proporciona un VCS, otro beneficio es que obtendrás listas de cambios. Eso te permitirá supervisar los cambios realizados. La imagen de arriba es un historial de carpetas de Perforce que muestra todos los cambios.

Si bien la mayoría de los sistemas no te obligan a presentar una descripción de un cambio que hiciste, es una práctica recomendada describir los cambios claramente.

Además, crear "notas de corrección" y otros documentos similares es fácil cuando comienzas a usar prefijos para tus cambios, por ejemplo: 

  • !B: La corrección de un error.
  • !V: Un cambio o mejora visual.
  • !G: Un cambio en el juego.
  • !X: Un cambio que debería omitirse en las notas de corrección.

Cuando envías cambios a tu VCS y los describes utilizando prefijos, puedes ejecutar un script más adelante en relación con cada entrada y ordenar todo en un lindo documento con las notas de las correcciones realizadas.
Un envío limpio a tu VCS se vería de la siguiente manera:

"!V Hizo que el efecto de partículas de la explosión sea mayor"

"!B Corrección del error al recoger un arma"

"!G Mayor nivel de salud en los kits médicos"

Si mantienes todas tus entradas (check-ins) limpias y con una descripción clara, te resultará fácil compilar los documentos de las notas de corrección cuando los necesites. Es un enfoque más eficiente que recorrer manualmente los cambios recientes para identificar las cosas que deberían estar mencionadas en tus notas de corrección.

Código del juego en la UI, donde se marcan claramente las modificaciones y las tareas por hacer

Cuida la calidad de tu código

Es importante que todos en tu equipo estén familiarizados con los fundamentos de una buena calidad de la versión. Estas son las cinco recomendaciones para mantenerlo limpio.

  1. No ingreses código que pueda romper lo ya hecho
    No ingreses (check in) código que sabes que no funciona. Si la función en la que estás trabajando no está terminada, pero necesitas ingresarla (check in), desactívala o deja los cambios de lado por el momento para que no estropeen el código de los demás. La versión que utiliza el resto del equipo no debería quedar bloqueada porque tú ingresaste código que no funciona.
     
  2. No uses atajos de teclado preprogramados
    Es conveniente agregar atajos personalizados para ciertas funcionalidades de depuración o que activan/desactivan privilegios (cheat). "Solo haz que la tecla F12 sea la que te da privilegios para el personaje del mono, porque igualmente nadie la va a presionar, ¿verdad?".
    Pero preprogramar (hardcode) una funcionalidad como esta en una tecla es peligroso porque es fácil olvidarse. Puede que termines publicando el videojuego sin quitar el atajo o que tus testers lo activen accidentalmente y eso contaminaría tus informes de errores.
     
  3. Marca los lugares en que falta código o el que está no funciona bien
    Hay veces en las que tendrás que hacer un rodeo (hack). Más allá de cuánto quieras evitarlo, en algún punto, tendrás rodeos temporales en tu código. Si agregas un hack o un rodeo, asegúrate de marcarlo en el código con palabras clave fáciles de encontrar. Marca un hack o rodeo con la palabra //HACK o el código que falta con //TODO o //POR HACER. Así, después resultará más fácil buscar esas palabras clave en todo el código para encontrar y reemplazar lo que necesitas.
     
  4. Elimina el spam
    Es útil registrar cosas en tu código, ya que puede ayudarte a ver los problemas. Pero es esencial eliminar el spam, es decir la información no importante, del registro de tanto en tanto para que las advertencias y errores importantes no queden sepultados bajo detalles innecesarios. A menos que estés activamente trabajando en una función, tu consola debe estar tan limpia y vacía como sea posible. De esa manera, si algo aparece, podrás verlo de inmediato.
     
  5. Nombres de los archivos y convenciones de nomenclatura
    El tamaño de tu versión crecerá en algún momento hasta tener cientos o quizás miles de archivos. Por eso, es importante que mantengas una convención de nomenclatura clara.

Cuando comiences un proyecto, tómate el tiempo para definir convenciones de nomenclatura que tengan sentido para ti y oblígate a usarlas. Si tus archivos tienen nombres tales como texturasFinal1.png o respaldo22.fbx en la versión, se volverá caótico bastante rápido.

Haz revisiones de rutina y corrige los nombres de archivo poco útiles que haya en el proyecto.
Aquí tienes algunos consejos rápidos:

  • Usa nombres descriptivos.
    ComportamientoDeBotonesDeAtaque.cs en lugar de BtnAtaq.cs
  • Usa camelCase o PascalCase.
    nombredearchivopococlaro.cs no es tan legible como NombreDeArchivoClaro.cs
  • Usa guiones bajos para que el nombre del archivo se entienda mejor.
    CasaDeMadera_Azul, CasaDeMadera_Verde, etc.
Menú de trucos de nuestro juego Galactic Colonies, que está en desarrollo

Mantén limpia la funcionalidad de activar y desactivar privilegios (cheat)

Durante el desarrollo de tu juego, constantemente necesitarás depurar y utilizar privilegios. Quizás quieras saltar a otro nivel, darle dinero extra a tu personaje, hacer que sea invulnerable, hacer que aparezcan enemigos adicionales, etc.

Puedes darte privilegios para hacer todo eso cuando lo necesitas y desactivarlos después. Pero es preferible tener una forma limpia de activar y desactivar esta funcionalidad de agregar privilegios.

Incluso en el caso de los proyectos más pequeños, vale el esfuerzo invertir tiempo extra en crear un menú de depuración y activación/desactivación de privilegios que sea fácil de usar. Algo que los desarrolladores puedan activar y desactivar fácilmente y que brinde acceso a todas las opciones habituales de depuración y uso de privilegios.

De esta forma, se minimiza el riesgo de publicar el juego con privilegios accidentalmente activados. Además, si tienes todo el código que agrega privilegios centralizado en un mismo lugar, también te aseguras de que todo funcione bien y se lo pueda ampliar con facilidad.

Otra ventaja de este enfoque es que permite agregar privilegios para los desarrolladores mucho más rápido, lo que ahorra tiempo en la producción diaria. Solo presionar un botón en la hermosa ventana de depuración, que además es muy cómoda, es más rápido que definir valores preprogramados en tus scripts.

Hasta los tableros de Trello se pueden usar para facilitar el seguimiento errores

Administra los errores y hazles un seguimiento

Tu juego tendrá errores. Todos los juegos tienen errores y el tuyo no será una excepción. La pregunta es cómo lidiar con los errores.

El flujo de trabajo para administrarlos de manera eficiente es bastante directo: tu departamento de QA (aseguramiento de la calidad) busca los errores y los ingresa en el sistema de seguimiento. Luego, asigna los problemas a los desarrolladores. Estos, a su vez, corrigen los errores y los marcan como solucionados. Por último, tu equipo de QA verifica los problemas y los marca como cerrados. Un proceso de tres pasos sencillo, ¿verdad? 

Pero... ¿No tienes un departamento de QA dedicado? ¿Tus testers son también tus desarrolladores?

No te preocupes: no necesitas mucho para ocuparte de los errores. 

Primero, regístralos. Esto es sencillo, aunque tu equipo sea unipersonal.

Elige un software para hacer un seguimiento de los errores (hay muchos gratuitos o accesibles) y configúralo. Si te resulta muy complicado, puedes usar Excel o incluso el anotador que tienes en el escritorio. No importa, en realidad. Lo que sí importa es que tengas un lugar centralizado donde reúnas todos los problemas y les hagas un seguimiento. Una vez que tengas un sistema implementado para hacer un seguimiento de los errores, todo se trata de tener disciplina. Una versión con errores reduce la velocidad de la producción e incluso puede crear nuevos inconvenientes.

Aquí tienes algunas sugerencias para ocuparte de los errores:

Los viernes se dedican a corregir errores

Es una excelente manera de eliminar los errores del código. Todos los viernes, en lugar de trabajar en funciones nuevas, el equipo se dedica únicamente a solucionar los errores que tienen en su lista. Este enfoque asegura que comiences la semana entrante con un código estable, sin errores.

No lo pospongas demasiado

Si sabes que los errores se están descontrolando, quizás sea una buena idea dejar de trabajar en nuevas funciones y centrarse en estabilizar el código hasta que todo vuelva a ir sobre rieles. 

No estés todo el tiempo apagando incendios

Si tienes muchos errores que aparecen una y otra vez, investiga la causa raíz. ¿Hay alguna parte del canal de creación de niveles que siempre hace que los niveles se rompan? ¿Tiene problemas frecuentes la forma en que analizas los valores del juego provenientes de tus archivos .xml?

Si identificas un sistema que causa problemas constantemente, quizás sea mejor reconstruirlo en lugar de corregir una y otra vez los problemas que genera.

 

Tomando en cuenta todas estas recomendaciones y sugerencias, te queda actuar con disciplina y prestarle mucha atención al estado de tu código. Puedes combinar estas sugerencias como te resulte más conveniente y aplicarlas a tu producción independiente. El tiempo que uses en mantener tu código en buena forma siempre vale el esfuerzo.

¿Te gustó este contenido?

Usamos cookies para brindarte la mejor experiencia en nuestro sitio web. Visita nuestra página de política de cookies si deseas más información.

Listo