Compilar y depurar nuestro juego en Game Maker Studio 2
Cuando compilamos nuestro juego en Game Maker Studio 2, lo haremos por dos motivos: compilamos para hacer pruebas, ejecutando nuestro juego, o compilamos para generar un paquete ejecutable, para que se pueda usar sin necesidad de GMS 2.
Para ejecutar una compilación, como pruebas, sólo hace falta darle al botón de Play , y lo hará en el destino especificado que se ve en la parte superior. También se puede compilar en modo debug, con el botón de depuración . Ejecutará el juego, pero también abrirá la Ventana de Depuración, dónde se puede supervisar como se ejecuta en cada paso y depurar cualquier problema.
Por defecto, Game Maker Studio 2 se ejecutará utilizando una máquina virtual. Al ser un programa multiplataforma, porque tiene diferentes exportaciones, se puede probar, depurar y compilar en diferentes dispositivos de destino (un teléfono Android, un iPad, un navegador web o un ordenador con Ubuntu, por ejemplo). Si queremos cambiar la plataforma de destino, buscamos el botón de Targets . Al pulsarlo, abrirá una ventana que se parecerá a la imagen de abajo (dependiendo de la licencia del programa, se verá más datos o menos).
En la parte superior, justo al lado del botón que hemos comentado, tenemos el destino configurado actualmente cuando compilamos. El resto de la ventana nos muestra las distintas opciones que disponemos. Explicamos las cuatro secciones en que se divide.
Plataforma – Plataforma
En esta sección se enumeran las plataformas de destino disponibles. Este es el contenido que depende de la licencia que hayamos comprado, pero al menos veremos un destino llamado Test. Para seleccionar un destino, simplemente hay que clickar con el botón izquierdo del ratón y, a continuación, se actualizará el resto de secciones dependiendo de la plataforma elegida.
Output – Salida
Cada plataforma puede tener una o varias salidas, siendo los dos principales.
- VM – máquina virtual: una máquina virtual usa un ejecutable genérico, diferente para cada plataforma, que interpreta el código y recursos de tu juego. Normalmente se utiliza esta opción para poder hacer pruebas rápidas, ya que los tiempos de compilación son más reducidos, pero no ofrece el mismo rendimiento que la otra opción. Igualmente, si tu juego es lo suficientmente pequeño para que no tenga problemas de rendimiento, se puede compilar definitivamente con esta opción.
- YYC – compilador de YoYo: el YoYo Compiler, como también lo puedes encontrar, genera código nativo a la plataforma de destino que has definido, descartando las funciones que no son necesarias, por ejemplo si usas el Game Center para tu juego en iOS y también tienes tu juego en Windows, ignorando en la última opción). Así tendremos un ejecutable más pequeño y una mejora de rendimiento notable, estamos hablando del doble o el triple dependiendo del juego que se ha desarrollado. Por contra, los tiempos de compilación su mucho más lentos, y siempre es recomendable borrar la caché para generar los paquetes definitivos. Además, esta compilación a código nativo puede requerir instalar herramientas adicionales (como el SDK de Android), sino, no funcionará.
- JavaScript: este target sólo está disponible en algunas plataformas, como puede ser el de HTML5, y define el juego para ser compilado en JavaScript puro.
Device – Dispositivo
Algunas plataformas (como puede ser iOS o Android), permite asociar uno o más dispositivos a Game Maker Studio 2. De esta manera, los juegos pueden compilar de una manera selectiva a uno de ellos. Al principio la lista de dispositivos estará vacía, así que hacemos click en el botón del lápiz para abrir una ventana del Editor de Dispositivos.
Aquí puedes añadir nuevos dispositivos, así como probar si el dispositivo está conectado, mediante el botón Test Connection. Esta ventana puede cambiar dependiendo de la plataforma elegida (en la imagen se ve el ejemplo de Android). De estas opciones hablaremos en el futuro, pero una vez hemos añadido o tengamos conectado un dispositivo aparecerá en la lista.
Config – Configuración
Aquí es dónde se muestra las diferentes configuraciones que tengamos de nuestro juego. Sobre como tener distintas configuraciones también hablaremos en otro post, pero que sepas que siempre hay una por defecto.
Creación de un paquete ejecutable final
Para crear un paquete ejecutable final de nuestro juego hecho en Game Maker Studio 2, es necesario configurar una serie de herramientas, llamadas SDKs, además de una serie de Preferencias de la Plataforma. Ya hablamos en su momento de las Preferencias de Game Maker Studio 2, dónde podíamos cambiar muchos aspectos del programa, pero aquí hablaremos de las preferencias de cada una de las exportaciones destino. Veremos que son opciones muy sencillas, pero diferentes dependiendo de cada caso.
Una vez hemos configurado estas Preferencias, solo hay que hacer click en el botón Create Executable , o desde el menú Build. Cualquiera de las opciones de exportación abrirá una ventana del explorador de Windows para decidir dónde guardar el fichero final. Se iniciará el proceso de compilación y después el de construcción del archivo.
Cada target de destino guardará el fichero en un formato específico de la plataforma.
- Windows: con esta opción podemos elegir dos opciones: generar un instalador o crear un fichero .zip. El instalador será un único ejecutable que instalará tu juego, mientras que el .zip contendrá todos los ficheros necesarios del juego para ejecutar, una vez descomprimido.Si marcamos la casilla Remember Packaging Option?, podemos recordar lo que hemos elegido para compilaciones futuras, y así no sale siempre esta ventana. Si lo queremos cambiar, debemos hacerlo en las Preferencias de Windows.
- Ubuntu (Linux): las aplicaciones de Ubuntu se compilan como ficheros .zip.
- HTML5: si has elegido esta opción, se creará un fichero index.html, que se puede cambiar en las preferencias, más una carpeta con todos los recursos del juego generados. Si tienes conocimientos de HTML, puedes cambiar el fichero index.html, para cambiar el color de fondo, posición, etc. También podemos especificar un fichero index que hayamos creado nosotros en las Game Options.
- Android: para los dispositivos Android genera un fichero .apk, que podemos instalar en cualquier móvil o tablet o subir en tiendas como en Google Play o Amazon.
- iOS: generará un fichero .xarchive que luego se usará en las XTools de tu ordenador Mac OS para generar el paquete final. Además del ordenador, necesitas configurar certificados y permisos.
- MAC OS: generará un archivo .app o .pkg, dependiendo de si lo quieres cargar en el Mac App Store o no. Lo mismo que con iOS, necesitas el ordenador y los certificados pertinentes.
- Windows UWP: Para Windows UWP, GMS 2 creará un fichero .appx, que puede ser subido en el Windows Store.
Cuando ya tengas el fichero, puedes distribuirlo a otras personas, subirlo a tu sitio web o ponerlo en algunas tiendas como itch.io.
Preferencias de cada plataforma en Game Maker Studio 2
Ahora detallamos las preferencias de cada exportación específica, para poder configurar como queremos compilar nuestros juegos. Lo habitual es configurarlo sólo una vez, pero hay que vigilar en los cambios de versión, leerse las Release Notes para ver si hay cambios significativos, en éste o en otras configuraciones. Recuerda que estas opciones cambian dependiendo de la licencia que tengas.
- Android: Las preferencias de Android tiene varias secciones. Empezamos con la primera.En la parte superior, puedes establecer el tamaño de memoria del JDK de Java que ocupará. Después tienes dos opciones de Packaging:
- Always do full install of APK: si lo marcas, Game Maker Studio 2 siempre eliminará los ejecutables anteriores instalados en el dispositivo, así como todos los archivos asociados (por ejemplo, si has creados ficheros .ini dónde guardas partidas de juego) antes de instalar la nueva versión.
- Install on Package: Cuando hagas el ejecutable final, también se instalará en los dispositivos conectados.
Después está la sección de Paths, dónde deberás de configurar las diferentes rutas para encontrar los diferentes SDKs necesarios para Android. Estos SDKs son el Java SDK, Android SDK y el Android NDK. También tiene los botones de Check Android SDK y Check Android NDK para ver si la configuración es correcta (saldrá un mensaje).
En Keystore tendremos guardado el fichero que usamos para firmar todos los juegos de Android. Todos los datos deben estar rellenados y que sean correctos, para generar y actualizar nuestros proyectos en Google Play. ¡Recuerda hacer una copia de seguridad de todos estos datos! Si lo pierdes, adiós actualizaciones. - iOS: Las preferencias de iOS son las siguientes:
- Suppress build and run (just create Xcode project on macOS): Por defecto, cuando compilas un proyecto y luego creas el ejecutable final, se instala en los dispositivos conectados. Marcando esta opción solamente crea el fichero y no lo intenta instalar.
- macOs install Path: ruta de instalación de los archivos de proyecto cuando compilas en el Mac.
- macOS: Las preferencias de macOS son las siguientes:
- macOs install Path: ruta de instalación de los archivos en el Mac.
- Steam: El Steam SDK se utiliza para los ejecutables finales deWindows, Mac y Ubuntu, para la plataforma Steam. La configuración es la siguiente:
- Path to Steam SDK: ruta dónde se ha instalado el Steam SDK. Una vez está definida la ruta, hay que dar en Game Options el App ID en cada plataforma.
- Windows: Las preferencias de Windows son:
- Visual Studio Path: es la ruta de la instalación de MS Visual Studio de tu PC.
- Default Packaging Type: cuando creas un paquete ejecutable final, puedes elegir entre un instalador, utilizando NSIS, o un fichero .zip como hemos comentado antes. Si hemos establecido una preferencia por alguna de estas opciones, desde aquí podemos volver a activar que se muestre la ventana.
Recuerda que después de configurar estas preferencias hay que configurar los diferentes dispositivos para poder compilar y testear tus juegos.
Depurar errores con Game Maker Studio 2
Al programar tu juego, ya sea mediante código o acciones Drag&Drop, es muy normal cometer errores: usar las variables incorrectamente, pasar argumentos equivocados a las funciones, etc. Cuando compilamos un juego, se hace una comprobación de sintaxis que mira si lo que hay escrito es correcto, pero no siempre estos errores son detectados. Los detectaremos cuando probemos y ejecutemos nuestro juego, pueden ser errores muy evidentes o pueden estar un poco más ocultos, dependiendo de una casuística determinada.
En este caso, es muy importante poder disponer de algunos datos, como por ejemplo el valor de algunas variables, cuantas instancias hay en la room, etc. Una manera sería mostrando mensajes que hemos añadido en el código en el evento que nos interesa, pero es un montón de trabajo extra, además que tienes que ir probando con ensayo y error hasta encontrar el problema.
Por eso GMS 2 permite ejecutar en modo depuración, con el botón correspondiente, ejecutando el módulo de depuración del que ya hemos hablado en el enlace. También existe un sistema integral de registro de errores, que muestra mensajes en tiempo de ejecución para ayudar a localizar algún problema del juego.
Las siguientes secciones cubren las diferentes maneras que podemos tener para depurar tu proyecto.
Informe de errores
Cuando ocurre un error durante la compilación de un proyecto, se informa con un mensaje en la ventana Output, de forma muy parecida a ésta
La mayoría de mensajes de compilación siguen un esquema parecido: indica el objeto que lo ha generado, el evento relacionado y la línea que provoca el error, junto a una pequeña descripción. Esta descripción es muy importante, porque es una sugerencia de cómo se puede arreglar. Recuerda que para según que errores hay que ejecutar el juego y probarlo en el módulo de depuración.
Aparte de los errores de compilación, también puedes tener errores de sintaxis. Éstos se irán detectando conforme escribes código o arrastres acciones D&D, y se mostrará igualmente en la Ventana de Salida, pero en la pestaña Syntax Errors.
De una manera muy parecida a los errores de compilación, aquí podemos ver el objeto, el evento y las líneas dónde se produce el error. También encontraremos una explicación del error.
Modo Debug
Si es necesario comprobar cosas con más cuidado, se puede ejecutar el juego en modo depuración tal y como hemos comentado. Al hacerlo, el módulo de depuración se ejecutará junto con la primera room. Aquí podrás ver desde el rendimiento global, hasta las instancias y sus variables. Toda la información la encontrarás aquí:
También podemos poner puntos de interrupción en el código o en la acción Drag & Drop. Esto hará que el juego se detenga en ese momento, pudiendo ver los valores de instancias, variables locales y globales que tienen en ese momento. Para añadir un punto de interrupción, se puede hacer con la tecla <F9>, al igual que para desactivarlo.
Comprobación de rendimiento
Es posible que nuestro juego no tenga ningún error, pero que funcione muy lentamente. Es posible ver si tenemos problemas de rendimiento en el módulo del debug. Si vemos que hay algo del rendimiento que penalice, como puede ser al ejecutar el evento Draw o Step, podemos verlo aquí y decidir que hacer. La explicación en detalle en el enlace
Mejorar rendimiento de nuestro juego
Resumen final
Hemos visto cómo cambiar la compilación final, y decidir la exportación y el dispositivo para probar y distribuir nuestro juego. Hemos visto las diferentes exportaciones que existen, y cambiar sus preferencias. Al final hemos visto distintas formas para detectar y depurar los posibles errores que podamos tener.
En el próximo post empezaremos por fin a ver los distintos editores de los recurso de Game Maker Studio 2, empezando por el editor de sprites.
Tengo un problema con el programa yo le doy al play y no funciona