Los muchos tipos de herramientas para desarrolladores de juegos

Creo que todos los desarrolladores de juegos deberían usar todas las herramientas que puedan para mejorar su flujo de trabajo, en lugar de hacerlo todo a mano o desde cero. Pero, ¿qué quiero decir con herramientas? Editores de nivel, depuradores, analíticos…? ¡Todos esos, y más! En este artículo, desglosaré los diferentes tipos de herramientas disponibles para los desarrolladores de juegos y explicaré por qué querría usar cada una.


¿Por qué molestarse con herramientas adicionales??

Cuando estés desarrollando un juego, ciertamente llegará el momento en que tengas que comenzar a agregarle contenido. Esto podría ser una tarea fácil al principio: simplemente configure algunas matrices y objetos dentro de su código. Pero a medida que avanza su desarrollo, casi puedo garantizarle que su código de contenido comenzará a parecer desordenado.

Imagina que tienes diez niveles de un juego de plataformas establecido en código, con posiciones de engendro enemigo, objetos, objetos, fichas y todo lo demás. Cuando lo estás probando, notas que necesitas cambiar la posición de engendro de un enemigo. El contenido del nivel está en ese archivo grande con toda la información de todos los niveles. Seguro que suena como un dolor de cabeza atravesar todo el código buscando la línea exacta para cambiar. Y eso ni siquiera está considerando cambios que puedan afectar otros cambios, como la posición de una plataforma en la que se encuentra un enemigo..

Por supuesto, también es posible que desee visualizar su nivel y poder cambiarlo sobre la marcha. Esto no es posible mirando el código..

Escribir herramientas para ayudarte en tu proceso de desarrollo de juegos es un enfoque más complicado pero más gratificante. Podría escribir una herramienta que traduciría todo el código de contenido visualmente en el nivel mismo para usted y, a medida que lo cambie, la herramienta cambiará el código de contenido. También puede escribir herramientas para ayudar a crear más contenido para su juego, ayudarlo a depurar su juego e incluso ayudar a la implementación en múltiples plataformas. O podría subir un nivel más alto y lanzar la herramienta a sus jugadores y permitirles crear contenido para su juego también.!

Esto puede incluso aumentar el éxito de su juego, como puede observar si observa los juegos recientes que ya lo han estado haciendo..


Los diferentes tipos de herramientas

Echemos un vistazo a las diferentes herramientas que puede crear, cómo cada una puede ayudarlo a agregar y administrar contenido a su juego y las dificultades que conlleva su creación..

Herramientas de creación

Esta es la sección más amplia. Una herramienta de creación es cualquier cosa que agregue contenido a su juego: elementos, personajes, niveles, música ... Estas son las herramientas con las que pasará más tiempo, porque al terminar su juego girará en torno a ellos: crear niveles, elementos y enemigos; poniendo todo junto puliendo cada bit hasta sus más finos detalles. Cualquiera de estas tareas puede implicar una herramienta de creación..

Incluso si el editor de niveles solo lo usarán usted o su equipo, debe hacer que su interfaz sea intuitiva y fácil de usar.

Supongamos que tienes un juego basado en niveles. Para crear una buena herramienta para editar sus niveles, la primera tarea es hacer que la herramienta represente visualmente el nivel para usted. Eso significa que tiene que mostrarte exactamente cómo se verá el nivel para tus jugadores. Después de eso, debe permitirte editar el contenido de alguna manera, para que puedas crear el nivel. Esto se hace a través de una interfaz. Lea detenidamente ahora, porque esto es importante: incluso si usted o su equipo solo usarán el editor de niveles, debe hacer que su interfaz sea intuitiva y fácil de usar. ¿Por qué? Porque a nadie le gusta trabajar con algo que requiere presionar una combinación de botones o hacer clic en un grupo de botones para agregar algo tan simple como un objeto en la pantalla. Y eso te incluye a ti y a tu equipo..

Incluso si usted fue quien lo creó y sabe todo sobre el editor, crear una interfaz fácil de usar ayuda a todos a agregar contenido al juego. Y si alguien olvida el acceso directo de cómo marcar un objeto como "coleccionable", por ejemplo, tener una interfaz intuitiva será de gran ayuda..

Este es un ejemplo real: un editor de niveles simple que creé para un juego de reacción en cadena de Windows Phone 7:

Como habrá notado, existe todo el editor de niveles dentro del software Adobe Flash Professional; no creé una aplicación separada. Flash Pro era un entorno perfecto: no requería ningún esfuerzo para crear algo que me ayudara a dibujar gráficos en la pantalla, ya que estaba buscando una herramienta sencilla que me ayudara a crear los niveles para el juego. Lo único que tenía que hacer era crear una extensión muy simple (como se puede ver en el video) para guardar toda esa información de nivel en algún lugar para mí (usé un archivo XML).

Flash Pro se encargó de todo lo demás: pude establecer el tamaño de la pantalla exactamente al tamaño de la pantalla de mi juego, pude colocar todos los objetos en su tamaño real en la pantalla e insertar guías para ayudarme a visualizar dónde irían las tomas después de una El objeto había explotado. El proceso de prueba fue tan simple como "compilar" el proyecto en Flash, lo que abriría una ventana preguntando dónde guardar el archivo XML; cuando compilé mi juego otra vez, leería el XML actualizado.

Ahora, imaginemos que tienes un juego de disparos. ¿Alguna vez has tratado de crear uno antes? Es molesto (y complicado) configurar todos esos movimientos del enemigo y disparar patrones a través del propio código, y configurar el tiempo también es tedioso.

Aquí hay un editor de niveles de lanzamiento que creé como otro experimento:

Este es un ejemplo de lo que no que hacer. Aunque mi editor tenía la funcionalidad básica de permitirte configurar los patrones de movimiento del enemigo como te gustaban e incluso incluía algunas funciones de ayuda (en ese caso, reflejando al enemigo que estaba editando para crear un efecto "espejo" cuando los enemigos aparecían en el juego). La interfaz fue un completo fracaso..

No tenía una manera de visualizar todo el nivel al mismo tiempo: todo lo que podía hacer era visualizar onda por onda. ¿Alguna vez te has imaginado lo doloroso que sería cambiar algo en el nivel de esa manera? Si, por ejemplo, quisiera retrasar el tiempo de generación entre los enemigos de la onda actual en 400 milisegundos, tendría que pasar por todas las ondas subsiguientes y agregar (400 ms * número de enemigos cambiados) a todos los tiempos iniciales de desove de las otras olas. Por esta razón tan básica, tuve que recrear la herramienta desde cero..

Crear herramientas de creación es una tarea muy difícil. Quizás estas son las herramientas más difíciles de crear, ya que las tratarás a diario para hacer tu juego. Debes hacer que sean lo más rápidos y fáciles de usar posible, y no deben estorbar el contenido de tu juego. Si descubre que necesita dedicar minutos o incluso horas a cambiar las cosas en su editor porque cambió otra cosa que tenía que ser reparada, entonces es posible que desee reconsiderar si la herramienta está cumpliendo su propósito..

Editores en el juego (un caso especial)

Un enfoque excelente es crear editores en el juego. Estas herramientas te permiten cambiar el contenido mientras se ejecuta el juego y probar lo que has cambiado en el tiempo de ejecución.

Herramientas como estas llevan su productividad al límite, porque tiene comentarios instantáneos sobre los cambios que ha realizado. Algunos editores le permiten cambiar incluso el valor de los atributos a medida que se ejecuta su juego, lo que le permite ejecutar comandos en tiempo real y observar los resultados. También puedes "doblar el tiempo" y registrar las acciones que hiciste en el juego, luego cambiar los atributos en tu juego (gravedad, por ejemplo) y ver cómo se vería el movimiento del jugador que realiza las mismas acciones en ese nuevo entorno.

Eche un vistazo a este ejemplo de un editor de mapas en el juego para un juego en desarrollo, Concerned Joe:

Herramientas de depuración

Estos son probablemente los mejores amigos de un programador. Cuando algo sale mal con un juego, las herramientas de depuración te ayudan a descubrir qué era. También pueden mostrar estadísticas sobre su juego, examinar el tiempo de proceso de cada función llamada en su código, proporcionar volcados de memoria cuando algo falla, crear registros siempre que la aplicación se esté ejecutando, y más.

Al programar un juego, un programador a menudo utilizará muchas de estas herramientas, en particular el depurador del entorno de desarrollo, si es que tiene uno. Sin embargo, se pueden escribir muchas otras herramientas para ayudar con el proceso de desarrollo del juego en esta área..

Para un juego muy complejo, a menudo desea poder recuperar la función de la pila de llamadas cuando algo falla (para saber exactamente qué líneas de código causaron la falla) y generar registros tan a menudo como sea posible. Por supuesto, necesitas poder interpretar estos registros. Tal vez una herramienta que te ayude a analizar los registros podría ser útil ...

Por ejemplo, mire esta herramienta creada por Adobe, llamada SWF Investigator:

Esta herramienta, creada para analizar archivos SWF, permite al desarrollador investigar una variedad de cosas de su juego, incluido el análisis de código (es capaz de desarmar el SWF para examinar exactamente lo que está haciendo la aplicación), lo cual es muy importante para un desarrollador de juegos - particularmente cuando optimizamos código.

La tarea de escribir una herramienta de depuración, sin embargo, es muy difícil. No porque tenga una interfaz "perfecta" como las herramientas de creación; a menudo, estas herramientas son utilizadas solo por los programadores y el equipo de desarrollo central, y la interfaz no importa ese mucho. (Por supuesto, aún debe poder mostrarle todo lo que es importante para usted y permitirle manipular las cosas con facilidad). No, es difícil debido a la gran cantidad de detalles técnicos que debe incluir..

Sin embargo, estas herramientas podrían ayudarlo a hacer que su juego funcione mejor en las plataformas de sus jugadores, lo que, por supuesto, es muy importante..

Herramientas de implementación

Las herramientas de implementación son necesarias cuando tiene un equipo que trabaja en diferentes aspectos del juego (tal vez un artista y un programador) y cuando está desarrollando para múltiples plataformas. Al desarrollar para múltiples plataformas, debe tener en cuenta el tamaño de la pantalla de cada dispositivo (especialmente para juegos móviles) y las limitaciones técnicas de cada plataforma..

Imagina desarrollar un juego para un teléfono inteligente con una resolución de 1280x768 y una tableta con una resolución de 1920x1200. Probablemente querrá usar dos conjuntos diferentes de imágenes para cada dispositivo, ya que no desea usar imágenes para el teléfono inteligente y ampliarlas para la tableta, lo que parecería feo. Además, es probable que su teléfono inteligente no tenga suficiente memoria y capacidad de procesamiento para manejar las grandes imágenes que está utilizando para su tableta. Debido a eso, se necesita una herramienta de implementación para ayudarlo a administrar los activos para su juego.

Hablando de administrar activos, suponga ahora que está trabajando en un equipo, que consiste en un artista y un programador. El artista definitivamente creará una gran cantidad de recursos de arte, pero ¿cómo va a manejar el programador hacer referencia a estos archivos de arte en el juego? El enfoque más perezoso sería simplemente cambiar o agregar el nombre del archivo en cada lugar donde el código lo usa cada vez que el artista cambia o agrega archivos de arte. Sin embargo, para grandes proyectos esto no es posible, ya que le quitaría un buen tiempo de desarrollo.

Una buena manera de manejarlo sería crear una herramienta para administrar los activos de arte para el equipo: el artista simplemente especifica qué archivo de arte se refiere a qué, y la herramienta convertirá automáticamente los nombres de los archivos a un nombre predefinido establecido por la propia herramienta. . De esa manera, el programador no tiene que preocuparse por cambiar los nombres en el código cada vez que el artista cambia algo.

Herramientas de lanzamiento

Estas herramientas son fáciles de pasar por alto, pero definitivamente deberías usarlas en tus juegos. Las herramientas posteriores al lanzamiento lo ayudan a realizar un seguimiento de cómo se está desempeñando su juego en el mercado y cómo lo reciben los jugadores.

Esto es muy importante para la web viral y los juegos móviles, pero los juegos de escritorio también pueden beneficiarse mucho de estas herramientas. Te dejarán saber dónde está disponible el juego y cuántos jugadores han jugado tu juego. Pueden ir incluso más lejos: herramientas como Playtomic, Mochi Analytics y GamesAnalytics pueden rastrear cuántas veces se jugó un nivel dado, cuántas veces se hizo clic en un botón, cuántos jugadores abandonaron su juego (en el primer minuto, los primeros cinco minutos, el segundo nivel, y así sucesivamente) y más. Luego, puede utilizar esta información para inferir que un nivel en particular es demasiado difícil (según la cantidad de jugadores que no lo completan) y luego corregirlo..

Hay más: también puede escribir herramientas para rastrear la recepción pública de su juego en Internet, utilizando bots que recopilan información de publicaciones de Facebook o Tweets que incluyen el nombre de su juego, le muestran qué sitios de reseñas han revisado su juego, etc. Tampoco olvidemos las Alertas de Google, una gran herramienta que le notifica cuando aparece un término específico en la web.


Tengo que escribir mis propias herramientas?

Aunque realmente necesitas utilizar herramientas para ayudar a su proceso de desarrollo de juegos, a veces encontrará que no necesita realmente crear ellos, ya que la comunidad de desarrollo de juegos ha creado muchas herramientas ya.

Muchas excelentes herramientas de desarrollo de juegos están disponibles en línea, disponibles para que las uses, solo toma un poco de tiempo encontrarlas. Pero úselos con precaución: si siente que una herramienta no hace exactamente lo que necesita, puede ser mejor que escriba la suya que perder el tiempo retorciéndolo para adaptarlo a su juego. Este es a menudo el caso de herramientas específicas de juegos o géneros..

En realidad, crear una herramienta es un gran tema que merece varios artículos por sí solo, pero te daré un consejo aquí: a menudo necesitarás estandarizar la forma en que manejas el contenido de tu juego. Esto significa que debe encontrar una manera de almacenar la información de su juego, poder cargarla y guardarla. La mayoría de las personas utilizan XML o JSON para describir información, pero es posible que desee crear su propio formato binario si necesita una forma más específica de describir las cosas..


Conclusión

Ese es el final de mi análisis de las diferentes herramientas que puede usar para ayudarlo con el desarrollo de su juego. ¡Espero que hayan disfrutado el artículo y aprendido de él! Si tiene alguna pregunta, no dude en preguntar..

Nota del editor: Vamos a compilar una lista de excelentes herramientas como Ogmo Editor, Tiled y SFXR. Si tiene alguna sugerencia, háganoslo saber.!