El árbol de recursos de Game Maker Studio 2
Cuando creas un proyecto en Game Maker Studio 2, lo verdaderamente importante, el núcleo de tu juego, se hará a partir de los recursos añadidos al árbol de recursos. Aquí es donde puedes agregar todo lo que tu juego requiere para ejecutar, incluyendo una sala de juegos, sprites, objetos, caminos y una serie de otras cosas.
Un juego básico en GameMaker Studio 2 requerirá una sala, habitación o room para ejecutar (podrás encontrártelo de todas estas formas), y por lo general, al menos un objeto y un sprite, aunque lo más seguro es que uses mucho más!
Puedes añadir un recurso al árbol haciendo click derecho sobre él y seleccionando la opción Crear en el menú emergente que aparece. Esto es lo mismo para todos los recursos disponibles, pero cada uno tiene su propio editor único que se abrirá al hacerlo. Estos son todos los recursos que vemos en el árbol
Sobre los editores, hablaremos en detalle por cada uno de ellos, pero ahora puedes ver una breve descripción de cada uno de los recursos disponibles del árbol de recursos a continuación.
- 1 Sprites
- 2 TileSets
- 3 Sounds – sonidos
- 4 Paths – rutas
- 5 Scripts
- 6 Shaders
- 7 Fonts – Fuentes
- 8 Timelines – líneas de tiempo
- 9 Objects – objetos
- 10 Rooms – habitaciones
- 11 Notes – anotaciones
- 12 Included files – ficheros incluidos
- 13 Extensions – extensiones
- 14 Options – Opciones
- 15 Configurations – configuraciones
- 16 El menú secundario del árbol de recursos
- 17 Vistas del proyecto
- 18 Búsqueda en el árbol de recursos
- 19 Resumen final
Sprites
Los sprites son generalmente las representaciones visuales de los objetos dentro de los juegos que creas. Un sprite es una imagen dibujada usando el Editor de imágenes de GameMaker Studio 2, o con cualquier programa de dibujo externo e importado al programa.. Un sprite no tiene porque ser una imagen estática, podemos usar un conjunto de imágenes para hacer una animación, este conjunto de imágenes sería un único sprite.
Por ejemplo, aquí tenemos varias imágenes de un sprite que hacen este movimiento:
Un sprite como éste suele ser un archivo o varios en formato .png, pero GameMaker Studio 2 también acepta sprites de vectores en formato .swf, y Spine en .json (con su archivo de texturas incluído).
TileSets
Los Tilesets son en realidad sprites, pero Game Maker Studio 2 los clasifica aparte porque le da un tratamiento diferente. Un tileset o conjunto de mosaicos es una sola imagen que el programa dividirá en secciones separadas, dependiendo de los valores de la configuración que le hemos dado.
Luego en el editor de rooms puedes usarlos para generar un mapa de tiles, así que son ideales para dibujar fondos, porque son estáticos, como terreno, paredes, casas, árboles, ya que no consumen los mismos recursos que si colocáramos objetos.
En la imagen de ejemplo vemos que podemos dibidir la imagen en 16×16 píxeles, para elegir cada zona individualmente. Como vemos, cada tile debe ser cuadrado, aunque con una imagen transparente podamos tener diferentes formas, además de utilizar las capas para colocar unos encima de otros.
Sounds – sonidos
Los archivos de audio son una parte importante de cualquier juego, tanto para añadir efectos mientras jugamos como para añadir ambientación con música de fondo. GameMaker Studio 2 acepta archivos de formato WAV, MP3 y OGG.
En general, los archivos WAV se utilizan para todos los efectos de sonido cortos, ya que aunque son generalmente archivos más grandes se ejecutarán de inmediato, debido al hecho de que no necesitan ningún tipo de decodificación para jugar. Los archivos MP3 y OGG deben utilizarse para música de fondo, o cualquier efecto que se reproduzca durante un período de tiempo más largo o que tenga un tamaño de archivo bastante grande. Estos archivos son mucho más pequeños que un archivo WAV y tienen una sobrecarga de CPU asociada a ellos, ya que tienen que ser decodificados antes de ser reproducidos.
Eso depende mucho del dispositivo final de tu juego, ya que para ordenadores no se nota nada el cambio gracias a que los procesadores actuales pueden descodificar el audio bastante rápido.
Paths – rutas
Es posible que en algún momento de tu juego necesites una instancia de uno de los objetos para seguir un camino a través de un nivel. Sería posible hacerlo mediante programación, pero para testear puede ser algo dificil hacer cambios y probar diferentes cosas. Por eso existe este recurso llamado path o rutas.
La idea básica del path es bastante simple: se dibuja una ruta en el editor, luego se puede colocar una acción (o código GML) en un evento de un objeto para decirle cual va a ser el objeto que siga esa ruta en particular en la room. Puedes establecer la velocidad para seguir la ruta y una serie de otras acciones relacionadas con la posición y la orientación de la ruta dentro de la sala (por ejemplo, si te interesa que vuelva cuando llegue al final).
Scripts
Los scripts es un conjunto de código que has escrito para crear tu propia función. Por ejemplo, digamos que quieres que un enemigo cree un número de instancias cuando muere, como monedas de oro, una explosión y algo de sangre, así como reproducir un sonido. Imagina que tienes varios tipos de enemigos, más de diez, y añades todo el código necesario en cada objeto que lo requiera, pero en general sería mejor crear un solo script con el código necesario en él y luego llamarlo. Esto significa que sólo tienes que agregar una línea de código a los objetos para llamar a esta nueva función, y si quieres cambiar o añadir algo, sólo tienes que cambiar una vez en el script y todos los objetos se ejecutará automáticamente el nuevo código, en lugar de tener que pasar por todos los objetos y cambiar la misma cosa en varios lugares.
Shaders
Los shaders son una herramienta muy poderosa que se puede utilizar para manipular los gráficos que tu juego renderiza en la pantalla, permitiendo efectos increíblemente rápidos que pueden ir desde añadir un color a un sprite hasta efectos de distorsión (por ejemplo un efecto de agua) en pantalla completa . Básicamente es un programa que se ejecuta directamente en la tarjeta gráfica, aumentando el rendimiento ya que la GPU está haciendo todo el trabajo y libera la CPU para tu código del juego.
GameMaker Studio 2 admite los siguientes lenguajes de shaders:
- GLSL ES: todas las plataformas excepto Windows 8.
- HLSL9: Windows 32 solamente.
- HLSL11: Windows 8, Windows 10 y Windows Phone.
- GLSL: Mac y Ubuntu.
Como ves, es bastante importante elegir el lenguaje del shader dependiendo de la plataforma de destino de tu proyecto.
Fonts – Fuentes
Cuando quieres dibujar texto en tu juego, este texto será dibujado en una fuente estándar de Arial de 12 puntos por defecto, pero si quieres usar textos diferentes tendrás que añadir fuentes a tu proyecto. Aquí es donde se usa el editor de fuentes. Puedes seleccionar una fuente que tienes en tu ordenador e importarla a GameMaker Studio 2 para usarla en tu juego, estableciendo varios atributos como el tamaño o el estilo. Una vez importado y agregado como un recurso, puedes configurarlo para dibujar utilizando el código GML o acciones adecuadas.
Si estás agregando fuentes a tu juego, asegúrate de tener la licencia necesaria para poder distribuirlo, a menos que sea de dominio público o sin derechos de autor.
Timelines – líneas de tiempo
En la mayoría de juegos vas a querer que ciertas cosas sucedan en ciertos momentos en el tiempo. Puedes intentar lograrlo usando eventos de alarma en una instancia, pero cuando las cosas se complican demasiado esto no funcionará bien, especialmente porque se limita a sólo doce alarmas. Por eso tenemos el recurso de los timelines (al igual que pasa con los paths). En una línea de tiempo especificas qué acciones deben ocurrir en cualquier step o momento del juego, y puedes utilizar todas las acciones disponibles para un objeto en sus diferentes eventos (al igual que en GML). Una vez creas un timeline, puedes asignarlo a un objeto y la instancia de ese objeto ejecutará las acciones y el código en los momentos indicados, cuando se coloca o se crea en una habitación.
Objects – objetos
Los objetos son un recurso especial que usamos para controlar aspectos de un juego y para hacer cosas específicas. Es donde se programa todo lo que queremos que haga el juego. La mayoría de las veces tienen un sprite asociado con ellos, para que los puedas ver en la room, pero a veces se usan como un controlador invisible, para hacer cosas relacionadas con el usuario, el tiempo, datos que vemos en pantalla, etc… Se pueden programar comportamientos que pueden reaccionar a ciertos eventos, y la mayoría de las cosas que ves en un juego se basan en los objetos y sus interacciones. Ten en cuenta que decimos se basan porque en realidad no colocas objetos directamente en la room, sino que colocas instancias de estos objetos, que son básicamente copias (o clones o plantillas) del objeto. Esto es una cosa muy importante para recordar, las instancias y los objetos no son lo mismo cosa y cada uno tiene su propio conjunto de funciones que pueden afectar a ellos.
Todos los objetos tienen un conjunto de propiedades que se pueden especificar en el editor de objetos, como el sprite, si utiliza físicas o no, o si es un objeto heredado de otro. También tienen una serie de variables incorporadas que luego se pueden utilizar en acciones, scripts y código. Estas variables de sistema se utilizan para definir la posición de la instancia cuando se coloca en la room, la velocidad de la animación, la dirección del movimiento, y toda una serie de otras cosas. Para controlar cómo se comporta el objeto con el tiempo, cada paso o step del juego se divide en una serie de eventos, por lo que puedes añadir código o acciones a un evento específico y sólo se ejecutará cuando se desencadene el evento, como puede ser cuando presionas el botón del ratón o colisiones con otras instancias (hay un montón de eventos para un montón de situaciones).
Los objetos son los cimientos de tu juego, y junto con las habitaciones o rooms formarán el núcleo de cualquier proyecto que hagas.
Rooms – habitaciones
Todos los juegos que se hacen en GameMaker Studio 2 necesitan al menos una habitación o room para ejecutarse (pero pueden tener muchísimas más). Una habitación es básicamente un espacio donde se colocan instancias de los objetos que componen tu juego y donde la acción del juego tendrá lugar. Sin embargo, el Editor de rooms es uno de los recursos más poderosos disponibles, ya que permite no sólo agregar instancias de objetos, sino también configurar la vista o view en la room, agregar fondos y tiles que se dibujan para pintar como es tu juego, crear efectos especiales adicionales que son independientes del sistema de objetos/instancias, y además ejecutar código independientemente de un objeto. Las habitaciones también se pueden configurar para heredar propiedades de otras habitaciones, lo que significa que puedes crear una habitación individual con una carga de tiles, por ejemplo, y luego hacer otra habitación que hereda estos tiles, para que no tengas que volver a crearlos otra vez.
Notes – anotaciones
Las notas son solo un editor sencillo de texto para poder escribir cualquier cosa. Se utiliza como un lugar para guardar fragmentos de código, información del juego, listas de tareas pendientes, comunicaciones al equipo de desarrollo, etc… Así que olvídate de usar post-its y anota aquí todo lo que consideres necesario.
Included files – ficheros incluidos
Los archivos incluidos son, como su nombre indica, cualquier archivo que quieras incluir en el paquete de juegos cuando exportes el juego a la plataforma de destino. Estos archivos pueden ser cualquier cosa, desde documentos de texto a imágenes, archivos comprimidos, audio, etc. y se puede acceder utilizando las diversas funciones de archivo, siguiendo las reglas definidas por el sandbox.
Extensions – extensiones
Las extensiones son archivos y código adicionales que puedes añadir para ampliar la funcionalidad de GameMaker Studio 2, así como agregar elementos a tu juego desde el Marketplace. El formato de una extensión variará dependiendo de la plataforma de destino final, aunque en general están escritos en C++, C # o JavaScript, que luego son llamados utilizando funciones específicas en GML.
Options – Opciones
Las opciones de juego están compuestas por una serie de opciones diferentes para el proyecto en su conjunto, y para cada plataforma de destino diferente a la que quieras exportar. Independientemente de las plataformas que tengas disponibles, siempre tendrás una opción del juego principal para configurar cosas específicas del proyecto como la velocidad de tu juego.
Configurations – configuraciones
Aquí puedes elegir o crear una configuración que quieras utilizar para el árbol de recursos y, posteriormente, para todo el proyecto. Al comenzar, las configuraciones puede que no sean importantes, pero a medida que crece la complejidad y el número de plataformas de destino proyectadas, verá que son una herramienta muy buena para organizar y exportar sus juegos correctamente. Esencialmente guardan la configuración actual de las diferentes opciones de juego, y opciones de exportación para el árbol de recursos, lo que significa que puedes tener una configuración específica para Android, otra para Windows, etc…
Cuando trabajas con el árbol de recursos, puedes utilizar el botón derecho del ratón en cualquier recurso o carpeta para abrir un menú de opciones del árbol. Las opciones disponibles son:
- Create – crear: crea un nuevo recurso del tipo en el que has hecho click para abrir el menú.
- Open Properties – abrir propiedades: abre el editor de propiedades del recurso que se ha hecho click (es lo mismo que hacer doble click).
- Add Existing – añadir existente: agrega un recurso existente de una carpeta de otro proyecto de GameMaker Studio 2.
- Add Existing From My Library – añadir existente desde mi biblioteca: agrega recursos al árbol desde un elemento de tu biblioteca de Marketplace.
- Import Extension – importar extensión: importa una extensión de Tu proyecto (sólo disponible en el recurso extensions).
- Add Group – añadir grupo: agrega una nueva carpeta de grupos de recursos al árbol en la posición dónde se ha hecho clic.
- Rename – renombrar: cambia el nombre del recurso o de la carpeta de grupo.
- Delete – eliminar: elimina el recurso del proyecto (esto lo eliminará completamente, a menos que esté en una vista de proyecto distinta de la predeterminada).
- Duplicate – duplicar: crea un duplicado del recurso al que se ha hecho click.
- Open in Explorer – abrir en el explorador: se abrirá el explorador de archivos de Windows en la ubicación del archivo que se ha almacenado el recurso. Ten en cuenta que no todas las opciones estarán disponibles para todos los recursos y dependerá del tipo de recurso o de la carpeta en cuanto a cuáles puedes utilizar.
Vistas del proyecto
Hay una sección en la parte superior del árbol de recursos titulada Views (por eso las vistas de toda la vida ahora lo llaman cámara), que permite configurar uno o más árboles de recursos personalizados para mostrar sólo las partes del proyecto en las que quieres trabajar a la vez, o para organizar tu proyecto de una manera diferente, por ejemplo, ver los recursos que corresponden a cada nivel. La vista predeterminada es la disposición del árbol de recursos estándar descrita anteriormente, con una vista llamada Default. Si le damos al botón que pone Views, nos abrirá un menú con las siguientes opciones:
- Rename: la vista Default no permite ser modificada, pero las nuevas que creemos podemos ponerle el nombre que queramos.
- Add: creará una nueva vista del árbol de recursos sin recursos añadidos (es decir: una vista en blanco). A continuación, puedes utilizar el menú del botón derecho del ratón para añadir recursos y organizarlos como quieras.
- Clone: creará una nueva vista del árbol de recursos clonado desde la vista previamente seleccionada. Por lo tanto, si haces click en la vista predeterminada, por ejemplo, se realizará una copia exacta para que puedas editarla.
- Delete Current: elimina la vista actual del árbol de recursos.
Cuando utilices cualquier vista de proyecto que no sea la predeterminada, puedes arrastrar y soltar los recursos donde quieras y renombrar las carpetas como deseas. De esta manera, puedes configurar una vista del árbol de recursos que se adapte a tus necesidades. Por ejemplo, digamos que tienes un juego de plataformas con varios mundos/mapas – puedes crear una Vista Mundial Total del árbol de recursos con carpetas llamadas Mundo 1, Mundo 2, etc … y luego arrastrar los sprites, tilesets, instancias y rooms asociadas con cada mundo en las carpetas por separado. O puedes tener una vista llamada Vista Artistas, por lo que se crea un árbol de recursos que sólo muestra los sprites, instancias y rooms.
Ten en cuenta que al añadir un recurso en una vista personalizada también se añadirá en el lugar correspondiente de la vista predeterminada, y eliminar una vista no implica que elimines los recursos que ves en ella.
Búsqueda en el árbol de recursos
En la parte superior del árbol de recursos, nos encontramos con un buscador que nos facilitará la tarea de buscar cualquier recurso. Al lado del cuadro de búsqueda, nos encontramos tres botones.
El primera abre un marco con las siguientes opciones:
- Filter Tree: sólo muestra en el árbol los recursos que existen con la coincidencia de la búsqueda, en vez de colocarte en el recurso.
- Whole Word: coincidencia de palabra completa con la búsqueda.
- Reset: en la parte izquierda tenemos un listado de todas las búsquedas que vamos haciendo. Con este botón limpiamos todas estas palabras.
- Go: ejecuta la búsuqeda, que equivale a la tecla <Intro>.
Los otros botones, que parecen una flecha a la izquierda y a ala derecha, simplemente pone el foco en cada recurso que coincide con el filtro de búsqueda. De esta manera, si tienes muchos recursos en tu juego, jugando con las vistas y las búsquedas puedes localizarlos fácilmente.
Resumen final
Hemos visto un resumen de todos los recursos que podemos tener en nuestro juego, y como trabajar con ellos desde el árbol de recursos. Con Game Maker Studio 2 podemos filtrar estos recursos teniendo diferentes vistas del árbol haciendo la gestión mucho más ágil que en versiones anteriores.
Antes de hablar de cada uno de los editores que podemos encontrar, hablaremos de la ventana que hay encima del árbol, que nos permite compilar y depurar nuestro juego.