Gu - A de Game Maker Studio
Gu - A de Game Maker Studio
Gu - A de Game Maker Studio
http:/www.aprendegamemaker.com/
David Lpez
Contenido
Empezamos.............................................................................................................................................. 10
Que encontrars................................................................................................................................... 10
Suscrbete para recibir todas las novedades y ayudar al blog ...................................................................... 10
Qu es Game Maker Studio ........................................................................................................................ 11
Que nos ofrece Game Maker Studio ...................................................................................................... 11
Versiones de Game Maker Studio.......................................................................................................... 12
Conclusin final .................................................................................................................................... 13
Requisitos de Game Maker Studio ................................................................................................................ 14
Requisitos de Game Maker Studio: uso de la aplicacin ............................................................................. 14
Requisitos de Game Maker para Android, HTML5, Tizen ........................................................................... 14
Requisitos de Game Maker para Mac OS X y juegos en iOS ........................................................................ 15
Requisitos de Game Maker para Ubuntu Linux ......................................................................................... 15
Requisitos de Game Maker para videoconsolas ........................................................................................ 15
Gua de cmo empezar con Game Maker Studio............................................................................................. 17
Antes de empezar: otras versiones de Game Maker ................................................................................. 17
Descargar e instalar Game Maker Studio ................................................................................................. 18
Activacin de Game Maker Studio .......................................................................................................... 18
Qu opcin elegir: canal Beta o canal Estable ........................................................................................... 19
La primera pantalla: un vistazo al interface de Game Maker ....................................................................... 19
Pestaa Welcome: Bienvenido a Game Maker Studio ........................................................................ 19
Pestaa Open: Abrir un proyecto ...................................................................................................... 20
Pestaa New: Crear un nuevo proyecto............................................................................................. 20
Pestaa Import: Importar nuestro proyecto....................................................................................... 20
Pestaa Release notes: Notas de la versin ........................................................................................ 20
Pestaa Demos: Proyectos de ejemplo .............................................................................................. 20
Pestaa Tutorials: Tutoriales para aprender ....................................................................................... 21
Pestaa News: Noticias .................................................................................................................... 21
Pestaa License: Licencias................................................................................................................. 21
Paso Final............................................................................................................................................. 21
Qu es Game Maker Studio: Early Access...................................................................................................... 22
Beta channel vs Stable Channel: elegir entre canal Beta o canal Estable de Game Maker Studio ................. 22
2
www.aprendegamemaker.com
3
www.aprendegamemaker.com
4
www.aprendegamemaker.com
5
www.aprendegamemaker.com
6
www.aprendegamemaker.com
7
www.aprendegamemaker.com
Scripts.................................................................................................................................................... 205
Qu es un script?............................................................................................................................... 205
Guardar y cargar scripts ....................................................................................................................... 206
Crear un script .................................................................................................................................... 206
Barra de herramientas del editor de scripts ............................................................................................ 207
Atajos de teclado ................................................................................................................................ 208
Pestaas de scripts.............................................................................................................................. 209
Cdigo de colores ............................................................................................................................... 209
Buscar y reemplazar texto.................................................................................................................... 209
Como depurar nuestro juego ..................................................................................................................... 211
La ventana de error al ejecutar un juego ................................................................................................ 211
Comprobando el rendimiento de nuestro juego ..................................................................................... 213
Eliminar cach de los recursos compilados ............................................................................................. 214
Mdulo de depuracin ........................................................................................................................ 215
Men y botones del depurador ............................................................................................................ 216
Configuracin de ventanas de aviso ...................................................................................................... 217
Tipos de datos de las variables .............................................................................................................. 225
Breakpoints o puntos de interrupcin ................................................................................................... 225
Conclusin ......................................................................................................................................... 226
Cmo usar estructuras de datos ................................................................................................................. 227
Qu es una estructura de datos ............................................................................................................ 227
Como funcionan las estructura de datos ................................................................................................ 227
Leer y guardar una estructura de datos.................................................................................................. 228
Pilas .................................................................................................................................................. 228
Colas ................................................................................................................................................. 228
Listas ................................................................................................................................................. 229
Mapas ............................................................................................................................................... 229
Colas de prioridad ............................................................................................................................... 229
Grids o rejillas ..................................................................................................................................... 230
Resumen final .................................................................................................................................... 230
Como probar Game Maker en Ubuntu ........................................................................................................ 231
Antes de empezar: preparar Ubuntu en Virtual Box ................................................................................ 231
Crear mquina virtual de Ubuntu.......................................................................................................... 232
Instalar Ubuntu en Virtual Box .............................................................................................................. 233
8
www.aprendegamemaker.com
9
www.aprendegamemaker.com
Empezamos
Si ests aqu, es porque te interesa hacer juegos. Es posible que ya sepas usar Game Maker
Studio, o simplemente has odo hablar de l, o no tienes ni idea de cmo empezar a crear tus
propios videojuegos. En esta gua intentar, aunque no sepas ni cmo empezar, explicar
todo lo necesario para que utilices una de las mejores herramientas que existen en el
mercado.
Que encontrars
Vamos a hablar de cmo crear tus propios videojuegos, utilizando una herramienta creada
para ello. Esta herramienta se llama Game Maker Studio. Vamos a hacer un repaso a todas
las opciones principales que ofrece, como aadir imgenes, sonidos, fondos, como se
programa para que tu juego tenga animaciones, etc.
Aunque toda la parte de codificacin con el lenguaje GML, as es como se llama, lo veremos
en otra gua.
Tambin he creado una pgina de Facebook y una cuenta de Twitter para que as entre
todos estemos conectados. Tambin puedes ponerte en contacto conmigo desde aqu.
Tengo en mente hacer muchas cosas para el futuro, como crear cursos, plantillas de juegos,
recursos como audio y grficos, todo lo que crea que podamos necesitar!
10
www.aprendegamemaker.com
11
www.aprendegamemaker.com
Como vemos, los tipos de juegos que se pueden crear en Game Maker son muchos, y las
posibilidades infinitas, todo depender de la dedicacin, en horas y horas, que hagamos a
nuestro proyecto.
12
www.aprendegamemaker.com
http://www.yoyogames.com/get
Qu versin de Game Maker es mejor? Entiendo que si alguien ve estos precios, puede
desilusionarse o pensar que nunca podr crear un juego para dispositivos mviles. Creo que
el precio puede parecer un poco elevado, pero compensa sobradamente con las horas que
vamos a ahorrar si desarrollamos directamente con Swift o Objective-C, el lenguaje para iOS,
o en Android. Adems, con la versin gratuita podemos darle una oportunidad a esta
herramienta para ver si nos puede servir para crear nuestro juego, y luego valorar si merece
la pena pagar y con unos ligeros cambios tenerlo adaptado con la plataforma que finalmente
queremos.
Conclusin final
Creo sinceramente que con Game Maker Studio es posible hacer fcilmente videojuegos,
adems que permite exportarlo a casi todas las plataformas que existen actualmente. En
esta web te ensearemos todas las opciones del programa, tutoriales paso a paso para
conocer qu podemos hacer y como lo hace la herramienta. Tambin veremos el lenguaje
GML para poder hacer cosas ms avanzadas, as como pequeos trucos para que nuestros
juegos tengan el aspecto de un verdadero profesional.
Si quieres que toque algn tema en concreto, un tutorial sobre un tipo de juego, algo que no
sabes hacer o no te sale, no dudes decirlo en los comentarios o contactar conmigo. Entre
todos intentaremos que podamos sacar nuestros juegos adelante.
13
www.aprendegamemaker.com
14
www.aprendegamemaker.com
Como vemos, con el mismo ordenador podemos usar diferentes mdulos de exportacin,
pero ahora hablaremos de algunos mdulos que nos obligan a necesitar otros ordenadores o
dispositivos para testear los proyectos.
15
www.aprendegamemaker.com
Para PlayStation, hay que registrarse en Sony aqu. Nos pedirn mucha informacin, al igual
de experiencia demostrada en otros entornos, una direccin IP esttica, es decir, tener un
servidor propio dedicado, adems de una compaa creada legalmente.
Como hemos visto, aqu el problema no slo es de programar nuestros juegos, sino de tener
el equipo apropiado para hacerlo. Pero no nos tenemos que preocupar ahora en tener todos
los dispositivos necesarios, sino de instalar y entender cmo funciona el programa. As que
vamos a instalarlo.
16
www.aprendegamemaker.com
Con Game Maker 8.1 podemos hacer juegos para Windows, y se parece bastante a la versin
Game Maker Studio, pero hay que destacar que hace tiempo que no la actualizan porque
YoYoGames, la empresa que est detrs de Game Maker, ha apostado por la versin Studio.
Es posible exportar proyectos de Game Maker 8.1 a Studio, aunque la compatibilidad no es
17
www.aprendegamemaker.com
del 100%, ya que las caractersticas entre una versin y otra varan, sobre todo porque la
versin Studio tiene que tener en cuenta la compatibilidad entre todas las exportaciones que
ofrece. Estas versiones dejaron de poder descargarse en 2015, as que ya no es posible
acceder a ellas.
Game Maker Studio tambin est disponible desde la plataforma Steam. La nica diferencia
es que en vez de bajar un fichero para instalar, el programa se instalar automticamente,
adems de aadir la opcin de crear un icono para poder ejecutarlo.
18
www.aprendegamemaker.com
Game Maker Studio es un programa en constante cambio, ya sea porque corrigen errores
detectados o porque aaden mejoras que nos aportan nuevos recursos que podemos incluir
en nuestros juegos. As que es bastante normal ver que cambian de versin. Si queremos
tener la ltima versin siempre, con los ltimos bugs o errores corregidos y las mejoras
implementadas en el ltimo momento, podemos elegir la opcin Beta Channel. En cambio, si
queremos esperar a las versiones ms estables del programa, dnde tendremos menos
actualizaciones que poner y tendremos todas las correcciones y mejoras de golpe, elegira la
opcin Stable Channel. Para la versin gratuita recomiendo la ltima opcin, ya que la gran
mayora de cambios son para otros mdulos y plataformas que no nos afectara
directamente a nosotros.
19
www.aprendegamemaker.com
Como lo importa como si fuera un proyecto nuevo, vemos las mismas opciones de ruta y
nombre de proyecto que hemos visto antes.
20
www.aprendegamemaker.com
Paso Final
Hemos explicado como instalar Game Maker Studio, como activar nuestra licencia gratuita y
como configurar las primeras opciones que nos aparecen. Tambin hemos visto la primera
pantalla que siempre veremos al inicio y todas las posibilidades que tenemos. Ahora es
cuestin de elegir alguna de ellas, ya sea un Tutorial para empezar, ver alguna de las Demos
o simplemente empezar con un proyecto nuevo.
21
www.aprendegamemaker.com
Cuando ya ha pasado un tiempo prudencial, podemos decir que todas las correcciones que
han hecho estn estables. Vaya, que no han tenido ninguna sorpresa con todo lo que han
corregido. Entos agrupan varias versiones betas y sacan una versin para el Stable channel.
Cul es mi recomendacin? Si slo estamos haciendo juegos para pc, Windows o Mac OS X,
prefiero tener marcada la opcin Stable channel, ya que muchas mejoras corresponden a
otras exportaciones de plataformas que seguramente no usemos. Igualmente, no estamos
obligados a instalar una versin concreta y la podemos descartar hasta la prxima versin.
22
www.aprendegamemaker.com
Antes de actualizar cualquier versin, para evitar problemas, deberas hacer una copia de los
archivos de configuracin de Game Maker Studio. Estos archivos se encuentran en las
siguientes rutas:
%appdata%\GameMaker-Studio
%localappdata%\GameMaker-Studio
Si estamos utilizando un Windows XP, la ruta cambia a la siguiente:
23
www.aprendegamemaker.com
Para finalizar, hay que destacar como han numerado la versin del EA comparado con la
versin de Game Maker Studio. Con Early Access tenemos una versin 1.99.X. De esta
manera nos ayudar a no confundirnos si tenemos las dos opciones instaladas.
24
www.aprendegamemaker.com
En la seccin de blog tcnico hay un artculo muy interesante que comenta esta parte.
Puedes verlo en la siguiente direccin.
25
www.aprendegamemaker.com
Volviendo a estas imgenes, Game Maker Studio las llama sprites: un sprite puede ser una
sola imagen, o un conjunto de imgenes, para dar la sensacin que el personaje est
caminando, o una explosin.. pero tenemos que tener claro que no existen imgenes en
movimiento solas en nuestra room: tenemos objetos que estn asociados a estos sprites.
Podemos tener diferentes sprites y cambiarlos para el mismo objeto.
Para poder llegar a una room con objetos, y que estos objetos tengan sprites, tenemos que
hacer el proceso al revs: primero creamos y aadimos el sprite, luego creamos el objeto y le
asignamos ese sprite, y luego creamos una room y aadimos ese objeto.
Ventana de propiedades de un objeto en Game Maker Studio. Desde aqu se hace toda la programacin
Para poder decir cuando se ejecuta una accin, tenemos los eventos. Un evento es un
momento especial donde podemos colocar ciertas acciones, as estamos seguros que esas
acciones slo ocurrirn cuando se activa el evento. Tenemos un gran nmero de eventos
diferentes que pueden ejecutar acciones, que tambin son totalmente diferentes. Por
ejemplo: podemos tener un evento que solo se ejecuta la primera vez que se crea el objeto.
Podemos asignarle acciones que slo se ejecutarn una vez hasta que ese objeto se
destruya.
26
www.aprendegamemaker.com
Otra cosa que hay que tener en cuenta es que si no tenemos ninguna room, Game Maker no
ejecutar el juego. Tiene lgica, verdad? Para crear una room, Game Maker dispone de un
editor propio para crear este aspecto. En el mismo editor podemos aadir y modificar
muchos aspectos de cmo se ver la room y como se jugar. Por ejemplo, se pueden agregar
imgenes de fondo, que puede ser tambin un color simple, se pueden aadir una o varias
instancias de cualquier objeto, como puede ser un objeto muralla para crear grandes
estructuras de paredes o laberintos. Tambin se pueden aadir enemigos, elementos, etc. y
as completar un nivel entero a partir de unos pocos objetos de base. Aqu un ejemplo de
cmo es el editor de rooms:
27
www.aprendegamemaker.com
Ventana de edicin de room en Game Maker. Aqu colocaremos nuestros objetos para disear nuestro juego.
Final y ms recursos
Hasta aqu hemos cubierto las cosas ms importantes de Game Maker, pero existen ms
elementos que hacen enriquecer nuestro juego. Podemos ver en la pantalla principal, en el
lado izquierdo est el rbol de recursos, una lista de todos estos recursos que harn un papel
crucial en la creacin de nuestro juego.
Sprites: hemos comentado que los sprites son imgenes (habitualmente estn
animadas) que se utilizan para representar los objetos.
Sonidos: se pueden aadir sonidos a los juegos, como msica de fondo o efectos.
Fondos o backgrounds: imgenes fijas utilizadas como fondos en nuestras rooms.
Paths o caminos: se utilizan para definir casos que se mueven por una trayectoria
predefinida.
Scripts: trozos de cdigo a los que les damos un nombre y podemos utilizar en varios
sitios diferentes.
Shaders: es una combinacin de dos programas, escrito en su lenguaje propio para
crear efectos grficos.
Fonts o fuentes: si queremos dibujar texto en el juego podemos definir varios tipos de
letra.
28
www.aprendegamemaker.com
29
www.aprendegamemaker.com
Interfaz grfica de Game Maker Studio. Imagen que se puede ver en la ayuda del programa.
Esta es la interfaz grfica principal de Game Maker Studio, donde controlaremos los aspectos
ms importantes de tu proyecto actual.
A la izquierda podemos ver los diferentes recursos que hemos comentado anteriormente:
sprites, sonidos, fondos, rutas, scripts, fuentes, timelines, objetos, ajustes de juego y
extensiones. En la parte superior de la ventana hay un men y una barra de herramientas
para acceder a algunos de los comandos ms utilizados al crear un juego. Supongo que os
habis dado cuenta que existen muchas maneras para hacer las mismas cosas, ya sea
eligiendo en el men, haciendo click en la barra de herramientas o haciendo click con el
botn derecho sobre una opcin en el rbol de recursos. Aunque pueda parecer redundante,
puede servir para que lo uses de la forma ms fcil y natural y como te sientas ms cmodo.
30
www.aprendegamemaker.com
click en un recurso se abrir automticamente sus propiedades para que se pueda editar y
cambiar todas las cosas relacionadas con l. Con el botn derecho del ratn aparecer un
men contextual que contiene las mismas opciones que se encuentran en el men Edicin.
La barra de herramientas
La barra de herramientas en Game Maker Studio contiene botones para crear cada uno de
los recursos, as como otros botones adicionales para crear un nuevo proyecto, abrir un
proyecto existente, guardar un proyecto, exportar un proyecto final (dependiendo de la
exportacin elegida en ese momento), abrir ajustes globales del juego y paquetes de
extensin, adems de abrir el archivo de Ayuda. Todos estos elementos, a veces se dicen
comandos, tambin se puede acceder a travs de los mens desplegables o utilizando
ciertas combinaciones de teclas (tambin se dicen Hot Key).
Existen dos botones, sin embargo, que no aparecen en ningn otro lugar de la pantalla
principal de Game Maker Studio:
31
www.aprendegamemaker.com
Compilacin de destino
Desde la barra de herramientas veremos un men desplegable que permite elegir el
dispositivo para compilar y probar tu juego. De esta manera puedes cambiar rpidamente
entre los diferentes mdulos que hemos instalado (recordemos que con la versin gratuita
slo tendremos acceso a la opcin de Windows), y nos aseguraremos que nuestro proyecto
funciona correctamente en todos ellos. Los mdulos de exportacin disponibles son:
Windows.
Steam WorkShop. Incluido si has comprado la versin desde Steam.
MacOSX
Windows 8 (JavaScript).
Windows 8 (Nativo).
HTML5.
Ubuntu (Linux).
iOS.
Android.
Tizen.
Windows Phone.
Game Maker: Player.
Videoconsolas.
Exceptuando la opcin de Windows, todas estas exportaciones estn como mdulos de
exportacin adicionales para la versin Profesional de Game Maker Studio.
32
www.aprendegamemaker.com
El men principal
En la parte superior de la interfaz grfica de usuario se encuentran los mens desplegables,
donde se encuentran la mayora de acciones del programa. Como hay un gran nmero de
ellas, estn agrupadas en las siguientes categoras.
Men Archivo. En el men Archivo podemos encontrar acciones para cargar y guardar
ficheros, pero tambin hay acciones especiales.
Nuevo proyecto: est accin abrir la ventana para crear un nuevo juego desde cero.
Si hay un juego actual que ha cambiado, preguntar si quieres guardar antes de
continuar. Tambin existe un botn en la barra de herramientas que realizar la
misma accin.
Abrir proyecto: Abre un fichero de Game Maker Studio con extensin *.gmx.
Importar proyecto: Puede importar un proyecto *.gmz, que no deja de ser un
archivo comprimido (que luego se abrir como un proyecto estndar con extensin
*.gmx), tambin puede seleccionar otros tipos de archivos de otras versiones
anteriores, gm81, gmk, gm6 o gb1 Estas extensiones podran no funcionar
correctamente en la versin de Game Maker Studio debido a cambios histricos a lo
largo de los aos, as que es recomendable ver en la web de www.yoyogames.com,
los cambios que hay entre versiones.
Proyectos recientes: aparecer un men secundario con una lista de los proyectos
que ha abierto o modificado recientemente.
Guardar: guarda el archivo de proyecto de juego con su nombre actual.
Guardar como: guarda el proyecto de juego actual con un nombre diferente.
Aparecer una ventana para indicar el nuevo nombre.
33
www.aprendegamemaker.com
34
www.aprendegamemaker.com
35
www.aprendegamemaker.com
36
www.aprendegamemaker.com
Ejecutar en modo depuracin: ejecutar el juego, pero abrir tambin una ventana
de depuracin con varias opciones para comprobar algunos datos y variables. De
cmo se depura el juego hablaremos ms tarde.
Limpiar build/cach: lo mismo que comentamos en el icono de la barra de
herramientas, ya que borra el cach de compilacin del juego.
Gestor de configuracin: para controlar varias configuraciones.
Configuraciones: aparecer una lista con todas las configuraciones disponibles, para
poder cambiarlas rpidamente.
Men Ayuda: detallamos las diferentes opciones que hay en la ayuda. Existen muchas
opciones que abre apartados concretos de la web oficial.
Contenido: Abrir el archivo de ayuda. Es la misma informacin que encontraremos
en docs.yoyogames.com.
Paquetes de extensin: mostrar un listado de los paquetes que tenemos en Game
Maker Studio, para mostrar el archivo de ayuda que pueda venir en cada extensin.
Noticias: abrir una ventana con las noticias de la web, las mismas que puedes
encontrar en http://yoyogames.com/news/ y que muestra al iniciar el programa, si
lo tenemos configurado de ese modo.
Sitio web: abre una ventana de tu navegador con la web www.yoyogames.com.
Foro: conectar directamente con el foro de Game Maker, cuya direccin es
http://gmc.yoyogames.com . Podemos encontrar y pedir ayuda sobre cualquier tema
relacionado.
Base de datos de conocimiento: abrir la direccin
http://help.yoyogames.com/forums dnde encontraremos informacin oficial sobre
el uso de productos con Game Maker.
Notas de la versin: abre una pestaa de tu navegador para mostrar las notas de la
versin actual.
HelpDesk: abrir directamente la web http://help.yoyogames.com/home.
Informar de un error: desde aqu podemos enviar un error detectado en el programa
para que lo resuelvan.
Abrir Game Maker en el explorador: abrir la carpeta en el explorador de windows
donde est instalado.
Abrir proyecto en el explorador: abrir la ruta de la carpeta del proyecto actual en el
explorador de windows.
Actualizar licencia: si has comprado una nueva versin de Game Maker, como un
nuevo mdulo de exportacin, debes activarlo desde est opcin de men.
37
www.aprendegamemaker.com
38
www.aprendegamemaker.com
39
www.aprendegamemaker.com
Mostrar ltimos juegos editados en el men Archivo: si se marca aparecen los ltimos 8
juegos editados.
Cerrar ventana de compilacin despus de ejecutar: al ejecutar el juego, ste se
compila para ejecutar en el mdulo de exportacin elegido, y este proceso se muestra
en una ventana de compilacin. Lo habitual es que esta ventana siempre est visible,
estara acoplada en la parte inferior de la pantalla principal, pero puedes preferir que
slo se muestre al compilar y luego que se cierre automticamente cuando haya
terminado.
Eliminar del disco duro lo que eliminemos del rbol de recursos: si se activa esta
opcin, cuando se quita un recurso desde el rbol, tambin se eliminar fsicamente. No
hace falta decir que esta opcin hay que usarla con mucha precaucin por la posible
prdida de datos.
No iniciar el juego a pantalla completa: por defecto, podemos anular que el juego se
ejecuta a pantalla completa y forzarlo a mostrarlo en una ventana, aunque lo tengamos
as configurado en el juego. Puede ser muy til para depurar.
Mostrar comandos en la ventana de compilacin: podemos elegir si mostrar ms o
menos informacin cuando se compila el programa. La opcin recomendada es tenerlo
activado.
Mostrar los comandos con flag activado: podemos activar o desactivar mensajes
detallados en la ventana de compilacin. Aunque la opcin anterior est activada,
podemos desactivar esta opcin si no queremos ralentizar la ejecucin del juego en las
pruebas.
Mostrar ventana de compilacin al principio: si queremos o no ver este formulario
cuando arrancamos el programa.
Activar copia de seguridad al guardar: con esta opcin podemos tener copias de
seguridad automticas cada vez que guardemos un proyecto. En la ruta de abajo
podemos ver donde se guardan y el nmero de copias simultneas que podemos tener.
Hay que tener en cuenta que la copia ms reciente es siempre la que tiene el nmero
ms bajo, en este caso siempre sera el nmero 0.
Rutas de directorio: podemos cambiar las rutas por defecto para guardar los ficheros
temporales, la cach de archivos y las copias de seguridad. Cada una de estas rutas tiene
un botn de borrar la informacin, por si nos puede interesar.
Mostrar noticias al inicio: establecer esta opcin al arrancar Game Maker.
Mostrar noticias en el navegador: podemos decidir si mostrar las noticias dentro del
programa o en nuestro navegador predeterminado.
40
www.aprendegamemaker.com
Siempre recargar archivos modificados: si tenemos esta opcin marcada, cuando Game
Maker detecte que ha cambiado algunos de los recursos en el disco, los cargar
automticamente.
Aumentar automticamente el nmero de compilacin: incrementar
automticamente el nmero de versin cuando creemos una versin definitiva del
juego.
Aadir versin y configuracin al nombre del archivo ejecutable: as aade
automticamente estas opciones cada vez que creamos un programa nuevo.
No mostrar logo de YoYoGames en la ventana principal: cuando se selecciona, la
imagen y enlace de YoYoGames no se mostrar al inicio.
No mostrar mensaje de confirmacin al cerrar un editor de cdigo: Evitaremos un
mensaje de guardar cambios al cerrar un cdigo o editor de scripts.
Iconos grandes en el rbol de recursos: Mostrar los iconos mucho ms grandes en el
rbol. Har falta reiniciar el programa para activar esta opcin.
Activar ventanas como pop out: es una manera de decir que no queremos todas las
ventanas dentro del rea, sino fuera de la ventana principal.
Limpiar automticamente los ficheros temporales al cerrar el programa: borrar toda la
carpeta Temp cada vez que cerramos Game Maker. Si trabajamos con varios proyectos o
muchos ficheros, podemos aprovechar mejor el espacio.
Eleccin de skin: podemos darle un aspecto diferente a la interfaz de Game Maker
(habra que reiniciar el programa). Las opciones que hay son GMGreen, GMHTML5 y
GM8, que corresponden con las versiones anteriores que ha tenido el programa. Yo,
como soy de la vieja escuela, prefiero elegir la opcin GM8.
41
www.aprendegamemaker.com
Estas opciones muestran algunos aspectos visuales de los editores que aparecen en Game
Maker Studio. Vemos que hay 4 secciones principales.
Formulario de sprite
Mostrar el origen de la imagen de sprite: si est marcado, veremos visualmente con una
cruz el origen, coordenadas x/y, en las propiedades del sprite.
Formulario de objetos
En las propiedades del objeto, mostrar sugerencias en las acciones: al recibir el ratn
alguna de las propiedades del objeto, veremos un pequeo texto de ayuda.
Tab por defecto para seleccionar: decidir cul es la pestaa de accin que queremos que
se muestre cada vez que abrimos un objeto (aunque tambin funciona con timelines).
Por ejemplo, si ponemos un 2 y abrimos un objeto, por defecto est la segunda pestaa
abierta (pestaa main1).
42
www.aprendegamemaker.com
Formulario de habitaciones/rooms
Al cerrar, eliminar instancias fuera de la room: si est marcada, el programa avisar si
detecta casos de instancias fueras del diseo de la room y podemos eliminarlos.
Recordar configuracin de habitacin al cerrar el formulario: todos los ajustes que
hemos cambiado en el editor de rooms se mantendr cuando vuelvas a editar la room.
Por ejemplo, si activamos o desactivamos la grid, su tamao, etc.
Grid activa en room por defecto: permite decidir si queremos ver esa GRID al crear o
abrir habitaciones.
Rellenar habitacin con color si no hay ninguno seleccionado: si creamos una room
nueva y no le ponemos ningn color por defecto, lo rellenar con el color que definimos
aqu. Puede ser til para ayudar a visualizar un nivel.
Mostrar minimapa en el editor de habitaciones: para activar o desactivar esta opcin en
el editor.
General
Abrir formularios maximizados por defecto: siempre abrira todas las ventanas con el
tamao mximo.
Tiempo de espera al abrir o cerrar un grupo de recursos: marcaremos el tiempo de
retardo en milisegundos cuando movamos algn recurso a un grupo o subcarpeta.
43
www.aprendegamemaker.com
Operacin deshacer: en la primera opcin podemos ver cuntas veces podemos ejecutar
el comando Deshacer, por defecto est en 1000 opciones.
Sangra automtica: decidimos el nmero de espacios cada vez que tabulamos nuestro
cdigo.
Smart tabs o tabulacin inteligente: crea sangra automtica mientras escribimos
cdigo. Si movemos el cursor a una lnea que no tiene cdigo crea una tabulacin.
Permitir cursos ms all del final de lnea: permite colocar el cursor en cualquier
posicin de la pantalla del editor.
Mostrar opciones de autocompletado: mostrara una ventana emergente con una
sugerencia de las funciones y variables con las letras que comienzan lo que estemos
escribiendo. Debajo podemos gestionar el tiempo de retraso al aparecer la ventana, la
actualizacin y la comprobacin de sintaxis en milisegundos.
Mostrar ayuda de argumentos de la funcin: cuando escribimos una funcin, veremos
abajo los argumentos que hay que poner).
44
www.aprendegamemaker.com
Mostrar textos buscados: si buscamos un texto, te resalta las coincidencias del texto
buscado.
Mostrar nmeros de lnea.
Mostrar fragmentos de cdigo con F2: si pulsamos F2 veremos cdigo que podemos
insertar con el formato ya establecido.
Depuracin entrada IP manual: slo si tenemos problemas al conectarnos a nuestros
dispositivos.
Mostrar soporte en llaves: cuando escribimos cdigo y creamos las llaves { y }, podemos
ver cual corresponde al abrir y cerrar con ellas.
Comprobar cdigo mientras escribimos: nos va mostrando los errores que cometemos
mientras escribimos.
Activar negrita en palabras clave: permite darle este formato a todas las palabras clave
del sistema.
Utilizar un sistema de colores: podemos personalizar todas las opciones que tenemos
cuando escribimos cdigo GML, tanto el color como la fuente, a nuestro gusto.
45
www.aprendegamemaker.com
Game Maker Studio tiene editores propios para todos los recursos, pero es posible que en
alguno de ellos estemos acostumbrados a otros programas o herramientas. Desde aqu es
posible elegir estos editores cuando lo queremos abrir en Game Maker, para seguir usando
estas herramientas como editor externo predeterminado. Los editores que podemos elegir
son:
46
www.aprendegamemaker.com
Podemos configurar el servidor web que Game Maker Studio utilizar. Yo recomiendo usar
las opciones por defecto. La nica configuracin que hay que tener en cuenta es con las
direcciones IP. Si utilizamos el rango por defecto, es posible que nuestro ordenador no est
en ese rango si lo tenemos incluido en una red local grande. Si es as, deberamos de aadir
nuestra ip en la lista.
47
www.aprendegamemaker.com
48
www.aprendegamemaker.com
Interesante, a que s? Todos los juegos necesitan animaciones de este tipo, para cualquier
cosa que te puedas imaginar: power-ups, personajes, enemigos, armas, etc. Tambin
necesitarn sprites que seguramente no contengan ninguna animacin, por ejemplo: muros,
suelo, escaleras, rboles, casa As que la gran mayora de los elementos que vemos en los
juegos son sprites, por eso es importante cuando los creamos de dedicarles toda nuestra
atencin, tanto o ms que cuando programamos con Game Maker Studio.
49
www.aprendegamemaker.com
Ahora vamos a ver como se crean los sprites. Para ello, podemos utilizar el men del
programa, donde pone Resources Create Sprite o utilizar el botn que hay en la barra de
herramientas. Cuando lo hagamos, aparecer una ventana como sta:
Vemos que en la ventana podemos editar un montn de propiedades del sprite. Arriba a la
izquierda podemos ponerle un nombre al sprite, yo aconsejo utilizar un nombre que
podamos identificar rpidamente en cualquier momento que lo queramos utilizar. Yo suelo
utilizar una nomenclatura parecida a esta:
spr_nombre_identificativo
Empiezo todos los sprites con spr_ y luego les pongo un nombre fcil de recordar,
normalmente en ingls (pero esto va a gustos). Los motivos son:
Tal y como hemos dicho, es fcil de identificar. Por el prefijo spr_ se que es un sprite.
50
www.aprendegamemaker.com
Game Maker Studio obliga a que todos los recursos tengan nombres diferentes. Si por
ejemplo al sprite le llamsemos protagonista, cmo llamarais al objeto? NO lo
podemos llamar igual. As que lo suyo sera ponerle al sprite spr_protagonista y al
objeto obj_protagonista.
Facilidad de lectura. Cuando empecemos a codificar en lenguaje GML, una de las cosas
ms importantes es que el cdigo est estructurado y sea fcil de entender. Ponerle
este tipo de nombres en el cdigo ayuda mucho para entender qu hace.
Sobre cmo ponerle nombre a los recursos ya hablaremos en otro post, aunque para gusto
los colores .
Me he desviado un poco del tema, sigamos con las propiedades. Si queremos cargar un
sprite que tengamos en el ordenador, podemos hacerlo si le damos al botn Load Sprite.
Aparecer una ventana para elegir el sprite que queremos importar:
Este tipo de ventana la habris visto en muchos programas para seleccionar archivos. A la
derecha podemos ver una vista previa de la imagen e informacin bsica como su tamao,
aunque permite un par de opciones que nos pueda interesar. Si la imagen contiene zonas
transparentes, nos puede interesar quitarlas y hacerlas opacas con el check Make Opaque,
eliminar el color de fondo con el check Remove Background, por lo que se quedara
51
www.aprendegamemaker.com
transparente, o suavizar los bordes de los sprites con el check Smooth Edges, que puedes
conseguir mejorar la imagen. Una vez has elegido la imagen y posiblemente algunas de las
opciones, puedes cargarla con el botn Open.
Game Maker permite importar bastantes formatos de imagen. Algunas extensiones de
archivos pueden ser PNG, JPG, BMP y GIF, aunque con las ltimas versiones tambin permite
importar archivos SWF, formato FLASH, y JSON, del programa Spine.
Hay una serie de cosas que tienes que tener en cuenta a la hora de cargar imgenes:
Al cargar un gif animado, formato GIF, vers que ha separado todas las imgenes de la
animacin como subimgenes del sprite.
Si el nombre dle fichero acaba en _stripXX, dnde XX es un nmero, se considera que
esa imagen contiene un nmero XX de subimgenes una junto a la otra. Por ejemplo, la
siguiente imagen
seguramente nos interese cargar cada fila de imgenes en un sprite diferente, sera algo
como spr_player_up, spr_player_right, spr_player_down y spr_player_left. Esta opcin
la explicaremos ms adelante en otro post.
52
www.aprendegamemaker.com
53
www.aprendegamemaker.com
Origen
En la parte inferior izquierda de la ventana de propiedades de sprites, nos encontramos
el Origin del sprite, que es el punto en el sprite que corresponde a su posicin en la
habitacin, en ingls room. Cuando se crea una instancia a una posicin X / Y en una room,
el origen se coloca all. Por defecto es la esquina superior izquierda de la imagen, por eso al
principio de aadir un sprite el valor de x / y es 0, pero a menudo es ms conveniente
colocarlo en el centro. Para facilitar esa tarea, tenemos el botn Center, aunque tambin
podemos ponerle cualquier valor como origen. Podemos hacerlo haciendo click en la
imagen, de esta manera se mover la cruz que vemos, o introduciendo los valores en las
cajas de texto que vemos. Hay otra caracterstica que tambin nos puede interesar, y es
colocar el origen fuera de la imagen. Si utilizamos nmeros negativos se colocar hacia la
izquierda y arriba, si ponemos nmeros positivos ms grandes que la altura y la anchura del
sprite se movern hacia la derecha y hacia abajo. Puede ser necesario para objetos que
utilicen varios sprites a la vez.
54
www.aprendegamemaker.com
En la primera imagen, tenemos dos instancias del mismo objeto, que no tienen marcado el
check Precise collision checking. Significa que la mscara ocupa todo el tamao del sprite,
por eso vemos que la mscara es cuadrada. Entonces el evento colisin se ejecuta, aunque
los objetos no se han tocado. En la segunda imagen, uno de los objetos si que tiene el check
de Precise collision checking marcado, e igualmente se ejecuta el evento colisin porque sus
mscaras se tocan. Vamos entendiendo que la imagen no tiene nada que ver con el evento
colisin, sino su mscara, as que podemos definirla como queramos. En la tercera imagen
vemos que no existe un evento colisin, ya que sus mscaras no se tocan. En la cuarta
imagen si que se genera el evento.
Entonces, porqu no marcamos siempre el check y la mscara ser igual que la imagen?
Porque dependiendo de cmo sea el dibujo del sprite esto puede ser muy lento. Con
el chequeo de colisin precisamarcado, se analiza cada pxel del sprite para ver si se va a
generar un evento colisin, as que la recomendacin es que siempre tengamos desmarcada
esta opcin, a no ser que realmente lo necesitemos.
Si nos fijamos, tambin tenemos el check separate collision masks. Con esta opcin
tendramos una mscara totalmente independiente por cada subimagen del sprite. No hace
falta decir que esto tambin significa relantizar ms la comprobacin del evento de colisin,
as que slo hay que utilizarlo cuando creis que es estrictamente necesario.
55
www.aprendegamemaker.com
Cuando Game Maker compila tu juego, coge todas las imgenes del sprite y las pega en
imgenes de un tamao fijo, as las tiene todas juntas en varios ficheros. Si no tenemos la
versin gratuita de Game Maker Studio, podemos definir el tamao de estas imgenes:
512512, 10241024 Desde esta opcin podemos decir que este sprite va a un grupo de
texturas en concreto. Por ejemplo, si estamos definiendo una serie de sprites (elementos de
fondo, enemigos, etc) y tenemos claro que unos van a a salir en un nivel y otros en otro nivel
diferente, podramos crear texturas por cada nivel y separarlos. As cuando nuestro juego
ejecute ese nivel, slo cargar las texturas de las imgenes que nos interesa. Para definir los
grupos de texturas, se hace en Global Game Settings, pestaa Texture Groups. Hablaremos
de cmo gestionar texturas en prximos captulos, ya que es un tema interesante para, tal y
como hemos comentado, no queris hacer juegos solamente para ordenadores.
56
www.aprendegamemaker.com
Aqu vemos la diferencia cuando se amplia una imagen normal y una vectorizada. Para
entender cmo est internamente esta imagen, vamos a verlo sin las texturas de color, slo
las lneas:
57
www.aprendegamemaker.com
Como vemos, ampliar esta informacin de lneas hace que no perdamos esa calidad que
hemos visto, adems que los ficheros ocupan mucho menos. La gran desventaja de este tipo
de ficheros es que interpretar estas lneas tiene un coste mayor que las imgenes, as que
conforme aumentemos la complejidad de la animacin, ms costoso ser.
Para importar imgenes vectoriales, lo hacemos igual que cualquier imagen, pero tenemos
que elegir ficheros SWF. Cuando hemos elegido el fichero, vemos que habr una barra de
proceso, donde informar de posibles errores de formato que no pueda aceptar el
programa. Cuando ha finalizado, veremos el editor de propiedades del sprite. Qu ha
cambiado en esta pantalla? No tenemos el botn de Edit Sprite, ya que no es posible
editarlo, pero si vemos un botn de Show Sprite, que abrir el programa que hemos definido
para previsualizarlo. Es posible que la previsualizacin no coincida exactamente como Game
Maker Studio interpreta el fichero, ya que, por ejemplo, los navegadores siempre aumentan
al tamao mximo el fichero, y Game Maker respetar el tamao con el que se ha hecho.
Tambin vemos que podemos aumentar la calidad del sprite cuando se dibuja.
Hay una serie de cosas que tenemos que tener en cuenta cuando se utilizan ficheros SWF,
podis mirar todas las caractersticas aqu.
58
www.aprendegamemaker.com
Para importar un fichero de este tipo, se hace igual que hemos comentado anteriormente,
pero con la extensin JSON para seleccionar.
Una vez hemos cargado los ficheros, podemos modificar sus propiedades de colisin, pero
estaremos limitados a como los hemos definido en el programa Spine, que es donde
definiremos las mscaras.
59
www.aprendegamemaker.com
Ahora veremos cmo personalizar una mscara de un sprite en Game Maker Studio.
Para ello, le damos al botn Modify Mask y aparece una ventana de Propiedades de la
mscara:
60
www.aprendegamemaker.com
61
www.aprendegamemaker.com
Si hemos elegido Precise collision masks veremos que este cuadro ser diferente en cada
subimagen. Vemos que tenemos tres opciones: automtico, que lo calcula como hemos
comentado, imagen entera, que coger la altura y anchura real de la imagen
independientemente de si tiene zonas transparentes o no, o manual, que elegimos con los
valores que hay ms abajo dnde situamos ese cuadro. Tenemos valores de posicin, con
Left y Top, y valores de tamao con Right y Bottom. Tambin podemos dibujar el cuadro en
la previsualizacin de la mscara, simplemente haciendo click con el ratn, sin soltar, y
arrastrando hasta elegir el tamao deseado. Al dibujar, vemos que cambian los valores
numricos de posicin de la mscara que hemos comentado antes.
Adems, con una mscara cuadrada podemos controlar cuando queremos que se produzca
el evento de colisin. Otro tema a tener en cuenta es que podemos elegir un sprite para
usarlo como mscara en un objeto, independientemente de su sprite o de los sprites que
cambiemos en mitad del juego.
62
www.aprendegamemaker.com
Para ello, creamos un sprite nuevo desde la ventana principal, con la opcin de men
Resources Create sprite. Si cargamos varias imgenes para un sprite, podremos editarlas si
le damos al botn Edit sprite. La ventana que abrir ser parecida a sta:
En el rea principal vemos que esta formado por todas las subimgenes que forman el
sprite. Todas las subimgenes tienen el mismo tamao, si hubiese una o varias de un tamao
ms pequeo, se ajustarn al tamao mximo.
63
www.aprendegamemaker.com
background). Estas opciones slo son posibles si tenemos sprites con reas transparentes y
recordad: todo esto es para la previsualizacin, y no cambia ningn parmetro del juego.
Confirmar: cierra el editor de sprites y guarda los cambios que hemos hecho.
Con este botn no hay ningn botn de confirmacin de cambios.
64
www.aprendegamemaker.com
Guardar strip: grabar en un fichero png toda la animacin del sprite, para
poder usarse para otro juego o en un programa externo. Un ejemplo de como quedara
el sprite de animacin:
Rehacer: si has usado el botn deshacer, puedes rehacer la accin para volver
al estado anterior.
Cortar: se usa para cortar una de las subimgenes. Esta imagen se queda en el
portapapeles y luego se puede pegar en el mismo sprite, otro sprite o incluso en otro
programa.
65
www.aprendegamemaker.com
Crear desde strip: con esta opcin podemos cargar un strip que no sea estndar, es
decir, cargar parte de las imgenes que contiene, cambiar el orden, etc. La ventana que
aparece es la siguiente:
66
www.aprendegamemaker.com
Vemos que hay muchas opciones para ayudar a ajustar el espacio que existe entre las
subimgenes dentro del fichero cargado. Estas opciones son:
Guardar como archivo PNG: guardar el sprite como un archivo png en formato strip.
Generar automticamente un nombre, con el formato nombre_sprite_stripXX, siendo XX el
nmero de subimgenes que contenga. Es posible modificar ese nombre, pero hay que
tener en cuenta que si queremos que Game Maker sea capaz de cargarlo en futuras
opciones debe conservar la terminacin tal y como hemos comentado.
Aadir desde archivo: aade una o varias imgenes desde el archivo seleccionado a
sprite actual. Si las imgenes no tienen el mismo tamao, aparecer una ventana para
decidir cmo colocar y modificar la imagen.
Crear desde archivo: con esta opcin podemos elegir un archivo de imagen para usarlo
como un nuevo sprite. Se pueden elegir varias extensiones, como BMP, PNG, JPEG,
dnde creara una sola subimagen, o GIF, dnde creara todas las subimgenes que lo
compone. Adems, si utiliza un strip cuyo nombre de archivo termina en _stripXX,
siendo XX un nmero, Game Maker dividir la imagen en tantas subimgenes como el
nmero indicado, creando as la animacin.
67
www.aprendegamemaker.com
Nuevo sprite: crea un nuevo sprite vaco, donde aparece una ventana para especificar
las dimensiones de altura y anchura del sprite. Estos datos son el tamao base para
crear todas las subimgenes.
Nmero de imgenes: total de subimgenes que queremos en nuestro sprite.
Imgenes por fila: Aqu especificamos el nmero de subimgenes que
encontramos en cada fila del archivo.
Alto y ancho de la imagen: el tamao en pxeles que tendr cada subimagen.
Celdas de desplazamiento horizontal y vertical: con los datos anteriores, vemos
que aparecen unos recuadros, que es dnde sacar cada subimagen para nuestro
sprite. Si queremos que estos recuadros no empiecen justo arriba a la izquierda,
podemos definir un margen de separacin, horizontal y/o vertical, para extraer la
subimagen. Esta opcin es muy til si queremos sacar varios sprites del mismo
fichero y slo queremos movernos entre filas o columnas.
Pxeles de desplazamiento horizontal y vertical: Es lo mismo que la anterior, pero
en vez de movernos con un tamao fijado por los valores anteriores, podemos
definir el margen en pxeles.
Separacin horizontal y vertical: estas dos opciones es para indicar que los
recuadros para elegir cada subimagen contiene un espacio entre ellos. Decidimos
en pxeles el tamao de estas separaciones para que no las tenga en cuenta en la
extraccin.
Aadir desde strip: es la misma opcin que la anterior, la nica diferencia es que
permite aadir imgenes con formato strip.
Cerrar guardando cambios: cierra el formulario guardando los cambios hechos al sprite.
68
www.aprendegamemaker.com
69
www.aprendegamemaker.com
Mover: abrir una ventana que nos permitir mover la actual subimagen, o todas ellas
si lo marcamos, una cierta cantidad. Con los checks de wrap, podemos decidir que los
pxeles que desaparecen en un lado de la imagen aparezca en el otro lado, tanto vertical
como horizontalmente.
Espejo: con esta opcin podemos reflejar la imagen seleccionada, o todas. Tambin
podemos decidir si voltearla verticalmente.
Rotar: permite girar la imagen. Existe botones para las opciones ms comunes, que son
90, 180 y 270. Tambin permite poner cualquier ngulo entre 0 y 360. Si no
cambiamos el tamao del sprite, es posible que perdamos parte de la imagen al girarla.
Escalar: la ventana que abrir esta accin que permite cambiar la escala de la imagen. Al
igual que si rotamos, si escalamos con valores grandes podemos tener pxeles que se
queden fuera del lmite de la subimagen, y no cambia su tamao sino que se corta.
Sesgar: este comando permite sesgar la imagen. Sesgar horizontalmente una imagen
significa que si cogemos la imagen como cuadrada, los extremos de arriba, izquierdo y
derecho, se movern estos puntos a los lados.
Cambiar tamao del canvas: con este comando podemos cambiar el tamao de todas
las subimgenes del sprite. Podemos especificar el alto y el ancho nuevo, tanto por
pxeles como por porcentaje, adems de marcar si queremos mantener el aspect ratio
(o proporcin, para que no se deforme la imagen, as como mantener la posicin de
origen. El cuadro con los botones con flecha indicar la posicin de la imagen actual
respecto al nuevo tamao.
Estirar imagen: si estiramos la imagen, cambiaremos el tamao total del sprite,
estirando o encogiendo la imagen (con la opcin anterior, rellenbamos con pxeles
transparentes). Tambin tenemos las opciones de mantener la proporcin y el origen. Al
cambiar la imagen, podemos decidir la calidad de la imagen final.
Crop: es una herramienta que sirve para recortar/ampliar las imgenes
automticamente. Poniendo un nmero positivo de pxeles crearemos un marco
transparente alrededor, si el nmero es negativo cortar la imagen.
70
www.aprendegamemaker.com
Aqu vemos una serie de opciones que permite cambiar los colores, transparencia y otras
formas de las subimgenes de los sprites. Todas estas opciones podemos elegir si hacerlas a
una subimagen o a todas, marcando el check correspondiente.
Ciclo izquierda y ciclo derecha: se utiliza para cambiar el orden en que aparecen las
subimgenes, podemos elegir un sentido u otro.
Escala de grises: convierte una imagen de color en escala de grises.
Colorear: puedes cambiar la tonalidad de la/s imagen/es. Hay una barra deslizante, o un
cuadro de texto, para darle un valor exacto.
Colorear parcialmente: aqu podemos cambiar el color de parte de la imagen.
Tendremos dos valores de matiz para modificar, adems de un valor de tolerancia que
podra permitir marcar colores especficos.
Intensidad: cambiar la luminosidad y la saturacin del sprite.
Invertir: invertir los colores de la imagen.
Hacer opaco: cambia todos los pxeles transparentes por un color.
Eliminar un color: podremos elegir un color de la subimagen y cambiar todos sus
pxeles a transparentes. Podemos especificar la tolerancia para definir el rango de
pxeles que har la accin.
Suavizar bordes: permite suavizar los bordes de la parte opaca de la imagen.
Opacidad: con esta accin podemos definir la transparencia de la imagen del sprite con
el valor que elijamos.
Establecer alfa desde archivo: funcin que permite combinar la imagen de un fichero y
asignarla a los pxeles de transparencia del sprite. Es recomendable que el fichero
elegido tenga el mismo tamao que el del sprite, sino modificar la imagen para que
encaje dentro.
Fundido: aqu se especificar un color y un nmero para descolorear la imagen del
sprite hacia ese color.
Desenfocar: esta opcin suavizar la imagen. Tenemos opciones como elegir la cantidad
de desenfoque, difuminar la informacin de color y/o la transparencia. Si elegimos slo
los valores de transparencia podramos suavizar los contornos de la imagen.
Afilar: se utiliza para afinar ciertos detalles dentro de una imagen. Realza los bordes
dependiendo de los valores, sutil, fuerte o especial, y tiene en cuenta colores y/o
transparencia.
Crear contorno: dibuja una lnea o contorno alrededor de la imagen, pudiendo elegir
color y grosor. Tambin podemos elegir si colocar la imagen o no, o dejar solo el
71
www.aprendegamemaker.com
Longitud: podemos cambiar la longitud de la animacin, para ello, Game Maker Studio
duplica las subimgenes desde el principio hasta el final, repitindose hasta alcanzar el
nmero que hemos elegido.
Extender: lo mismo que la anterior, copiar o reducir subimgenes hasta el nmero
que hemos puesto al principio. Si aumentamos el nmero de fotogramas la animacin
ser ms lenta, si lo disminuimos haremos que sea ms rpida.
Inverso: invierte el orden de los sprites para que la animacin se haga hacia atrs.
Aadir inverso: lo mismo que lo anterior, pero en vez de modificar la animacin la
duplica y la aade al final. Hay que tener en cuenta que se repetir la primera y ltima
imagen con esta accin, si queremos una animacin suave es recomendable borrar una
de ellas.
Secuencia de translacin: con esta opcin moveremos la imagen dentro de la
subimagen. Hay que indicar el nmero de frames y cuanto queremos moverlo
horizontal y verticalmente.
Secuencia de rotacin: es una animacin donde la imagen gira. Podemos elegir el
sentido hacia dnde gira, el nmero de frames y la cantidad total para mover.
Colorear: crea una animacin que convierte una imagen a un color elegido.
72
www.aprendegamemaker.com
Fundido a color: Crea una animacin que convierte una imagen, hacindola
desaparecer, a un color concreto.
Desaparecer: coge una imagen y la hace desaparecer, jugando en la animacin con su
opacidad.
Reducir: Reduce una imagen indicndole la direccin, izquierda, derecha, arriba, abajo o
centro).
Crecer: ampla una imagen indicando la direccin (las mismas que en el anterior caso).
Aplanar: aplana una imagen con direccin.
Aumentar: lo mismo que el efecto anterior, pero al contrario. Tambin tiene direccin
hacia el centro, izquierda, derecha, arriba o abajo.
Superposicin: esta accin elige un fichero seleccionado y lo superposiciona con el
sprite. Si el archivo es solo una imagen, se repetir en cada subimagen, si es un strip,
recordemos que es una imagen que su nombre termina en _stripXX.png, tratar cada
subimagen del strip y la colocar en cada subimagen correspondiente del sprite.
Metamorfosis: eligiendo un archivo, transforma mediante animacin el sprite actual al
fichero seleccionado. Se recomienda que el nmero de subimgenes del fichero y del
sprite sean iguales, ya que juega con las transparencias de las imgenes para la
transformacin.
73
www.aprendegamemaker.com
Para ello, el programa tiene su propio editor de imgenes, tanto para sprites como para
fondos. Para llamar al editor de una subimagen de un sprite, la seleccionaremos y
llamaremos al botn Editar Imagen, o al men Imagen-Editar Imagen.
El editor que vemos est pensado para realizar cambios en las imgenes, no para crear
sprites y fondos desde cero. Este editor tiene muchas funcionalidades, pero quizs no sea
suficiente para las opciones que puedas necesitar, en cuyo caso es mejor usar un programa
externo, guardar las imgenes como PNG y cargar los archivos como sprites. Si en cualquier
momento queramos asociar las subimgenes del sprite a este programa externo, podemos
hacerlo en las Preferencias del programa, tal y como hemos visto.
Vemos que la imagen que vamos a modificar ocupa la parte central de la ventana, con
herramientas de edicin a la izquierda y opciones variadas alrededor de ella. Tenemos
74
www.aprendegamemaker.com
tambin mens superiores y en la parte inferior tenemos una barra de informacin con
algunos datos que comentaremos ms adelante.
75
www.aprendegamemaker.com
Herramientas de dibujo
Las herramientas de dibujo nos permiten seleccionar diferentes tamaos de pinceles,
regiones, dibujar formas, etc. Podemos utilizarlos haciendo click en cada una de las opciones
y luego manteniendo el botn del ratn en la imagen. La lista completa de cada herramienta
es:
Lpiz: con esta opcin podemos pintar sobre la imagen, usando el botn izquierdo
o el botn derecho sobre ella, dependiendo del color que queramos elegir. El tamao del
rea que pinta se puede ajustar mediante la seleccin de unos de los tamaos que
aparecen abajo. Otras opciones se hacen combinando con las teclas: si tenemos pulsada
la tecla <Shift>, solo podremos hacer lneas horizontales o horizontales, con la tecla
<Ctrl> el puntero cambia de opcin, que es el Selector de Color, para adquirir el color
pulsado.
Goma de borrar: con esta accin podemos borrar parte del sprite. Funciona como
el aergrafo, pero borrando lo que est debajo del ratn. Cuanto puede borrar
depender del ajuste de opacidad que aparece, con un rango de 0, que no borra nada, a
255, que borrar todo por completo. Los valores de en medio har que el borrado sea
ms o menos transparente.
Selector de color: con esta herramienta podemos adquirir, con el botn izquierdo
o derecho del ratn, el color que hay justo debajo de la imagen. Hay que destacar que el
valor de Opacidad tambin lo coge.
76
www.aprendegamemaker.com
Dibujar lnea: se utiliza para dibujar lneas rectas. Podemos elegir el grosor de la
lnea, adems de si queremos la lnea con forma de flecha. Podemos marcar la opcin
Suavizar para que las lneas estn parcialmente transparentes.
Dibujar elipse: igual que con la opcin de rectngulo, pero dibujar una elipse o
un crculo si dejamos pulsada la tecla <Mays>. Tiene las mismas opciones de grosor de
lnea y rellenado.
Seleccionar una regin: podremos seleccionar una regin cuadrada para copiar,
cortar o mover esa zona. La seleccin se hace haciendo clic en una zona y arrastrar con el
ratn, dnde vemos un rea rectangular por una lnea de puntos. Puedes aumentar la
seleccin actual si tenemos la tecla <Mays> pulsada, o eliminarlas con la tecla <Ctrl>.
Para cancelar la accin, se puede hacer con la tecla <Esc>.
Seleccin con varita mgica: en este caso, al hacer clic sobre un pxel, busca todos
los pixeles del mismo color cercanos, dependiendo de la tolerancia seleccionada. Las
combinaciones de tecla son las mismas que con la seleccin de regin.
Aadir texto: Podremos aadir texto en la imagen, aparecer una ventana donde
escribiremos el texto que transformar en imagen. Podemos utilizar el smbolo # para
indicar un salto de lnea. Una vez introducido el texto, podemos moverlo arrastrndolo
77
www.aprendegamemaker.com
con el ratn. Si decidimos cambiar de texto, podemos haciendo clic con el botn
derecho. En las opciones que aparece debajo de la caja de herramientas, podremos
cambiar la fuente, color y alineacin del texto.
Bote de pintura: Haciendo click en la imagen, coger todos los pxeles del mismo
color, dependiendo de su valor de tolerancia, y cambiar el color con el que tengamos
configurado. Tambin podemos elegir si rellena los pxeles con color o tambin los
pxeles transparentes prximos.
Cambiar color: cambia el color al hacer clic en la imagen, usando todos los pxeles
que hay alrededor por tolerancia. Tambin podemos elegir si usamos solamente color o
tambin los pxeles transparentes.
Imagen de previsualizacin
Muestra una imagen del sprite de cmo se vera en el juego. Si hacemos doble click,
podemos cambiar el zoom a 1x, 2x y 3x, as veremos con mejor nitidez como va quedando.
Podemos activar o desactivar esta ventana tal y como hemos dicho en el men Ver.
78
www.aprendegamemaker.com
Pgina de repuesto
La verdad es que no aparece esta opcin en ningn sitio de la ventana, ni en el men ni en el
cuadro de Herramientas. Solo podemos activar y desactivar esta opcin pulsando la tecla
<j>. Si lo activamos pulsando <j>, nos aparece, dentro de la misma imagen, la opcin de
crear imgenes temporales que no se quedan guardadas en el propio sprite. As podemos
dibujar cosas sin miedo de modificar la imagen real. Por ejemplo, podemos copiar una
imagen, activar la opcin, pegarla y retocarla. SI al final nos gusta el resultado, podemos
volver a copiarlo y pegarlo definitivamente.
Una cosa a tener en cuenta es que est pgina no se queda guardada en el sprite, una vez lo
cerremos perderemos toda la informacin de esta imagen de pruebas.
79
www.aprendegamemaker.com
Una vez hemos modificado nuestro paleta, podemos guardarla tal y como hemos visto desde
el men Archivo, creando un fichero con extensin PAL. Aunque es posible que sea una
extensin utilizada en otros programas de dibujo, solo funcionar con Game Maker Studio.
Borrar color
En la caja de Herramientas, hemos visto diferentes acciones para dibujar asociadas al color, y
el comando Goma de Borrar para eliminar un color. De esta manera, podemos ir cambiando
entre las diferentes acciones para dibujar y borrar.
Una manera ms prctica para el borrado es seleccionando la goma de borrar con el botn
derecho. De esta manera, vemos que el color de seleccin para el botn derecho del ratn
muestra como un tablero de ajedrez, para indicar que no hay color seleccionado.
As podramos dibujar con el botn izquierdo y borrar con el boton derecho sin depender de
elegir la accin en la caja de Herramientas.
Y hasta aqu hemos visto todas las opciones de sprites. En prximos posts, veremos como se
utilizan en los objetos, que son los que realmente le darn movimiento y diversidad a
nuestro juego..
80
www.aprendegamemaker.com
Igual que en cualquier recurso que aadimos, le debemos poner un nombre identificativo y
nico. Recomiendo usar el prefijo bck_. Debajo del nombre, podemos cargar un fichero con
el botn Load background. Se abrir una ventana para seleccionar archivos, con las
extensiones de grficos ms comunes, como PNG, JPEG, GIF y BMP. Podemos elegir en esa
opcin si queremos la imagen opaca, dnde eliminara, si tiene, los pxeles transparentes.
81
www.aprendegamemaker.com
Una vez elegido el fichero y marcado las posibles opciones, le damos a Abrir. Veremos una
previsualizacin de nuestro archivo en la ventana de propiedades del fondo.
Hay que recordar que el uso de imgenes muy grandes puede perjudicar el rendimiento de
nuestro juego, ya que tiene que cargar toda la imagen para poder mostrarla. Quizs en un
juego para Windows no sea muy importante, pero si hablamos de dispositivos mviles o
HTML5 tenemos que configurarlo de la manera ms ptima, como partir el fondo en varios
ficheros o usar tiles.
82
www.aprendegamemaker.com
De esta manera, podemos agregar estas subimgenes en los fondos de nuestras rooms para
crear diferentes niveles y efectos, adems que el rendimiento de proceso es mucho ms
ptimo. Para utilizar un fondo como tile, marcamos el check Use as tile set y la ventana de
propiedades cambiar de esta manera:
83
www.aprendegamemaker.com
Al marcar la opcin en las propiedades del fondo, nos aparecen opciones ocultas para tratar el fondo como tiles
Nos aparece una serie de propiedades nuevas que podemos ajustar para todo el conjunto
del mosaico, como el ancho y alto de cada baldosa (fijaros que no podemos tener baldosas
de diferente tamao en el mismo recurso), desplazamiento o margen en pxeles, horizontal y
vertical y si existe separacin entre baldosas, tambin en pxeles.
Para aadir un fondo se hace desde la pestaa Backgrounds del editor de rooms. Estos pasos
los explicaremos en detalle cuando hablemos de como gestionar rooms.
Conclusin
Hemos visto uno de los recursos ms fciles de usar, ya que simplemente se agregan a
nuestro proyecto y luego elegimos en qu nivel utilizarlo. Es posible que un fondo contenga
varias imgenes que podemos colocar por separado, con la posibilidad que con un mismo
recurso podamos utilizarlo en varios niveles.
84
www.aprendegamemaker.com
Vamos a aprender como aadir estos recursos a nuestro proyecto de Game Maker Studio.
Para aadir un sonido, podemos ir a nuestro rbol de recurso, botn derecho, a la barra de
herramientas o al men Resource Create Sound. Cualquiera de estas opciones abrir la
siguiente ventana:
Cargaremos un fichero de sonido con el botn Load Sound, dnde aparecer una ventana
para seleccionar el archivo de sonido. Los ficheros soportados son ficheros con extensin
WAV o MP3. Habitualmente, los ficheros WAV se utilizan como efectos de sonido, mientras
que los ficheros MP3 se utilizan como msica de fondo, ya que Game Maker solo permite
una a la vez. Aunque utilizar unos u otros da un poco igual, hay que tener en cuenta que los
ficheros MP3 tienen ms proceso de CPU, ya que tienen que ser descodificados, mientras
que los archivos WAV se pueden ejecutar instantneamente.
85
www.aprendegamemaker.com
Una vez que tengamos cargado el fichero, veremos su ruta actual cuando lo hayamos hecho,
podemos reproducirlo con el botn correspondiente. La reproduccin se repetir
infinitamente, hasta que la paremos con su botn correspondiente. Tambin tenemos la
posibilidad de cambiarle el volumen si lo creemos necesario, aunque ahora explicaremos las
otras caractersticas en detalle.
Grupos de audio
Al igual que con los sprites, Game Maker Studio permite recientemente asignar un sonido a
un grupo especfico. La diferencia es que con los sprites la carga se hace automtica, y aqu
tenemos funciones especficas para gestionar nosotros que ficheros cargamos o liberamos
para hacer ms eficiente la memoria. Todas estas opciones solo estn para las versiones de
pago de Game Maker.
Compresin
Todas las opciones que hemos visto ahora son para los ficheros de audio sin comprimir. Sin
embargo, podemos comprimir el audio si nos interesa. De esta manera, comprimiremos
todos nuestros ficheros a formato ogg. Estos ficheros ocupan muy poco espacio en disco y
son ideales a la hora de distribuir nuestro juego.
Streaming
Si hemos elegido audio comprimido, podremos personalizarlo si lo queremos en streaming o
no. Un sonido streaming se carga y se ejecuta en tiempo real desde el disco. Esta opcin es
ideal para la msica de fondo, aunque puede ocasionar que el juego se pause por la carga
del fichero, por eso no es recomendable para efectos de sonido que no necesitan mucho
proceso y pueden cargarse fcilmente en memoria.
Calidad y volumen
Si hemos cargado un fichero OGG o MP3, aparecer un control deslizante para cambiar la
calidad de codificacin, por lo tanto repercutir en el sonido final. Como es obvio, cuanta
ms calidad le pongamos ms ocupar el fichero, y aumentar la calidad en un fichero que no
la tenga no mejorar notablemente el juego, adems de hacerlo crecer intilmente.
Tambin podremos ajustar el volumen del sonido, aunque existen funciones para poder
hacerlas mientras ejecutamos el juego.
Opciones de destino
86
www.aprendegamemaker.com
En esta seccin definimos la conversin del fichero final para nuestro juego. Ajustando estas
opciones, Game Maker comprimir los ficheros con estos parmetros. La configuracin que
se recomienda por defecto es 16 bits, 44100 KHZ y 192 kbps, aunque podemos cambiar
cualquiera de estos parmetros para reducir el tamao del audio. Desde aqu tambin
podemos configurar si el sonido es en 3D, importante si queremos usar este tipo de
funciones en nuestro juego.
87
www.aprendegamemaker.com
Qu es un objeto en Game Maker? Los objetos es un recurso que utilizamos para controlar
todos los aspectos del juego, gracias a la programacin de los diferentes comportamientos
que pueden tener. Un objeto puede tener un sprite asociado para que podamos verlo y
controlarlo mientras jugamos, pero tambin puede ser invisible y que haga otras cosas como
controlar el tiempo, vidas, etc.
Por qu es diferente? Cuando decimos que algo afecta a una instancia, afecta solo a esa
copia en particular que se ha creado en la room. Si existen otras instancias del mismo objeto,
a esas no les afecta en nada. Cuando decimos que algo afecta a un objeto, le afectar a
todas las instancias que hay en la room en ese momento.
88
www.aprendegamemaker.com
En la parte izquierda, podemos ver algunas propiedades del objeto: podemos darle un
nombre, recomendable usar el prefijo obj_, y otras propiedades genricas. En la parte
central vemos una lista de eventos, que podemos aadir y cambiar una gran lista de ellos. En
la parte de la derecha, vemos una seccin sobre las acciones, que estn relacionadas para
cada uno de los eventos. Podemos aadir un gran nmero de acciones, que podemos
seleccionarlas de las pestaas y botones que vemos en la derecha. Los eventos y las acciones
las comentaremos en detalle en prximos captulos, ya que es la parte ms importante de
Game Maker Studio y es la base sobre la que programaremos. Ahora veremos las
propiedades ms importantes de un objeto.
89
www.aprendegamemaker.com
sprites, con la misma estructura de subcarpetas que hay en el rbol de recursos. Elegimos un
sprite, y aparecer su nombre y una visualizacin en miniatura al lado. Vemos que hay dos
botones dentro del cuadro, el botnEdit, que abrira la ventana de propiedades del sprite
seleccionado, y el botn New, que abrira la misma ventana pero para crear un sprite nuevo.
As podemos acceder a los sprites rpidamente sin necesidad de buscarlo en el rbol de
recursos.
Vamos a ver otras propiedades que aparecen ms abajo.
Propiedad Visible
La propiedad visible indica si las instancias, recordemos que son las instancias las que se ven
en la room y no los objetos, se van a ver cuando se inician en la room. Decimos cuando se
inician porque esta propiedad la podemos cambiar en cualquier momento. Lo habitual es
que en la gran mayora de veces sern visibles, pero a veces es til tenerlos como invisibles.
Por ejemplo, podemos crear un objeto obj_wall, le asociamos un sprite cuadrado y ese
objeto ser el que delimitar hasta dnde puede llegar un jugador, definir lmites de juego,
movimientos de enemigos, acciones programadas, etc. Aunque los objetos sean invisibles,
reaccionarn de la misma manera a los eventos y acciones. Aunque estos objetos sean
invisibles, es importante tambin definir su sprite, ya que tambin podr usar su mscara
para los eventos de colisin con otros objetos.
Un tema importante es que el evento Draw, que se utiliza para pintar sprites y otras
opciones, no se ejecutara, as que si tenemos acciones en este evento y en algn momento
ponemos la instancia a invisible, se dejar de ejecutar.
Propiedad Solid
Al marcar esta propiedad, definimos el objeto como Slido. Es muy importante esta
propiedad, sobre todo para los eventos de colisin con otros objetos, ya que funcionan de
manera diferente, y la recomendacin es que los objetos que sean slidas no se muevan. Ya
hablaremos en detalle cuando hablemos de colisiones.
90
www.aprendegamemaker.com
profundidad y se ver por debajo de otras instancias. Vemos un ejemplo sacado de la ayuda
on line:
Esta propiedad puede ser cambiada durante el juego, al igual que la propiedad anterior.
Objetos persistentes
Cuando cambiamos de una room a otra, todas las instancias de objetos que se han creado se
destruyen y se crean de nuevas las que hemos indicado en la siguiente room. Si nos interesa
que una instancia permanezca siempre, marcamos la propiedad Persistent. Solo
desaparecer si se lo indicamos nosotros de forma explcita, ya sea con la accin
correspondiente o mediante cdigo GML.
Un ejemplo de esto sera tener un personaje principal, con todas sus caractersticas, que se
va moviendo de una room a otra.
91
www.aprendegamemaker.com
persistente como personaje principal, pausamos el juego y tenemos una opcin de volver al
men principal, obviamente aparecer nuestro personaje si no lo hemos destruido!
Otro tema son sus eventos: los eventos Game Start, Game End, Room Start y Room End se
habrn desencadenado (comprobar si se desencadena eventos de room al cambiar de
room). Si reiniciamos el juego, con la accin correspondiente o con la funcin
game_restart(), todos los objetos se destruyen, incluidos los objetos persistentes, as
que tocara crearlos de nuevo.
Si desactivamos un objeto persistente, ste no va a cambiar de una room a otra, a no ser que
lo volvamos a activar antes que se ejecute el evento Room End.
92
www.aprendegamemaker.com
Mscaras en objetos
Ya hemos hablado anteriormente de las mscaras de sprites. Pueden tener la misma forma
que el sprite, o definir una forma bsica como un rectngulo o un valo. Tambin podemos
definir una mscara diferente para cada subimagen del sprite.
Cuando un objeto le hemos asociado un sprite, la mscara del objeto es la del sprite. Aunque
es posible que nos interese que un objeto tengo una mscara diferente a la del sprite
asociado, o incluso que no tenga sprite pero s mscara. Se puede hacer gracias a esta
propiedad del objeto.
Recordad, las mscaras son importantes para los eventos de colisin porque indicarn
cuando se producen. Si un objeto no tiene mscara no se producir su evento de colisin.
Usar Physics
Si marcamos este check, le decimos que el objeto debe ser parte de un mundo con
elementos de fsicas. Abrir parte de la ventana del objeto con nuevas propiedades fsicas
para definir.
93
www.aprendegamemaker.com
94
www.aprendegamemaker.com
95
www.aprendegamemaker.com
Sensor: diremos que ignore las propiedades fsicas del objeto, pero que devuelva los
eventos de colisin de los objetos de alrededor.
Empezar despierto: est marcado por defecto, para que los objetos con fsicas tenga
sus propiedades activas desde el principio. Si no nos interesa, lo desmarcamos y no
actuar hasta que algo acte en el objeto.
Cinemtica: habr algunos casos que tengamos objetos dentro del mundo fsico que no
nos interesa que acte fuerzas como la gravedad, ni colisiones, como pueden ser
plataformas mviles o el suelo. Podramos definir su densidad a 0 para que no afecte,
pero eso significara que su fsica no reacciona a nada y sera un objeto esttico. Si en
cambio marcamos esta casilla, no reaccionar a colisiones ni gravedad, pero todava
podremos moverlo o girarlo usando las variables apropiadas (podramos tener
plataformas mviles).
Conclusin final
Hemos visto que es un objeto, para que sirve y las caractersticas ms importantes que tiene.
Antes de detallar los eventos y acciones que podemos asignar a un objeto, hablaremos un
poco en detalle sobre la herencia en otro artculo y cmo podemos agrupar varios objetos
que hagan lo mismo.
96
www.aprendegamemaker.com
Podramos crear un objeto padre, que cada moneda heredase de l y solo hacer el evento de
colisin con el objeto padre. Quedara as:
97
www.aprendegamemaker.com
98
www.aprendegamemaker.com
De esta manera, sobrescribimos el evento para que haga algo totalmente distinto (o en este
caso parecido).
Como hemos visto, usar un objeto padre o un objeto hijo puede implicar a varios objetos o
instancias. Tener un evento de colisin con el objeto padre afectar a todos los hijos.
Mltiple herencia
Como os podis imaginar, es posible heredar varias veces un objeto. Un objeto padre puede
tener otro objeto padre, y as infinidad de veces. Por ejemplo, podemos tener un objeto
obj_enemy, un objeto obj_monster que hereda del anterior y luego objetos del tipo
obj_monster1, obj_monster2 que heredan de obj_monster.
Podemos crear tambin el tamao de jerarqua que queramos. Es posible que obj_enemy y
obj_monster nunca los pongamos como instancias en una room, ya que solo lo utilizamos
para simplificar nuestro cdigo. Igualmente, podemos crear otro objeto obj_enemy1 que
herede de obj_enemy, independientemente de los objetos monstruos.
Lo que no es posible son las herencias cclicas. Nos dar un error si un objeto obj_child
hereda de un obj_parent, y este obj_parent hereda tambin de obj_child.
Conclusin
99
www.aprendegamemaker.com
Hemos visto una de las caractersticas ms potentes de Game Maker Studio, que nos
permitir ahorrar mucho tiempo y trabajo. Para dominar la herencia de objetos hay que
dedicar algo de tiempo, y tener muy claro cmo estructurar tus objetos, pero veris como se
os recompensa a largo plazo.
100
www.aprendegamemaker.com
Cuando ejecutamos un juego, se crea un bucle desde que empieza el juego hasta que lo
finalizamos. Definimos la velocidad de ese bucle en la room (room speed). Lo habitual es
poner ese valor a 30, es decir, 30 veces por segundo generamos un ciclo donde ocurren una
serie de eventos. Es en esos momentos, los eventos, cuando podemos definir qu acciones
se van a ejecutar.
Los eventos los definimos en los objetos, que son los recursos ms importantes de Game
Maker Studio. Un ejemplo de cmo quedan los eventos en un objeto sera:
Como vemos, hay una serie de eventos listados que responden a ciertos momentos. Cuando
creamos un objeto, esta lista est vaca, as que decidimos qu tipos de eventos necesitamos
y que acciones se ejecutarn en las instancias de ese objeto. Para aadir eventos, le damos
al botn Add Event y nos aparecer una ventana como sta:
101
www.aprendegamemaker.com
Es un resumen de todos los eventos bsicos que un objeto puede responder. Algunos de
estos eventos contienen subeventos, para concretar ms algunos comportamientos. Por
ejemplo, si pulsamos en el botn Key Press, nos aparece una lista con todos los subeventos
que permite elegir que tecla el objeto responder. Una vez hemos elegido un evento,
podemos arrastrar, lo que se llama Drag&Drop o DnD, las acciones de la derecha necesarias
para dicho evento. As especificamos para un evento lo que tiene que hacer.
Si queremos seleccionar varias acciones, se puede hacer pulsando las teclas <Mays> o
<Ctrl>. Si queremos seleccionarlas todas, usamos la combinacin de teclas <Ctrl> + <A>.
Recordemos que hablamos de acciones de solo un evento!
102
www.aprendegamemaker.com
Aparte de aadir eventos, tenemos dos botones ms para interactuar con ellos. Hablamos
de los botones Eliminar y Cambiar. Si tenemos un evento seleccionado, al pulsar el botn
Eliminar nos preguntar si queremos eliminar ese evento con TODAS las acciones
relacionadas, por lo tanto, no es necesario eliminar las acciones antes.
Con el botn Cambiar, podemos cambiar un evento por otro, para mantener las acciones
que ya hemos definido. Si ese evento ya lo hemos aadido, no pasar nada, se mantiene
todo tal y como lo vemos. Esta accin es til si, por ejemplo, hemos decidido que para
disparar usamos la tecla <A> y lo cambiamos a la tecla <S>. As mantenemos todas las
acciones programadas fcilmente.
Otra opcin muy interesante y que no aparece como un botn es duplicar los eventos. Para
duplicar un evento, le damos al botn derecho sobre el evento y nos aparecer esta opcin.
Por ejemplo, si queremos movernos a la izquierda con la tecla <A> y con la flecha izquierda,
duplicaramos el evento que ya tenemos programado. Recordad que los cambios en un
evento no afectara al otro!
En el prximo post haremos un detalle de todos los eventos que nos podemos encontrar en
Game Maker Studio, as siempre que haya dudas os puede servir de referencia. Nos vemos!
103
www.aprendegamemaker.com
Listado de eventos
Hemos visto en el post anterior un poco cmo funcionan los eventos y como los usamos a la
hora de aadirlos a un objeto, que es la base para programar en Game Maker Studio. Ahora
vamos a detallar cada evento, para saber cuando se desencadena y como lo podemos
utilizar.
Evento Create
Este evento ocurre cuando la instancia de un objeto se crea por primera vez en una room.
Es el primer evento que se ejecuta, por delante de otros que comentaremos despus. Se
utiliza normalmente para inicializar variables, iniciar timelines, establecer paths, etc. Se
ejecutar slo una vez por instancia.
Evento Destroy
El evento Destroy es el ltimo que se ejecuta cuando se elimina una instancia. Normalmente
no lo usaremos mucho, pero es til para aadir comportamiento a los objetos. Por ejemplo,
podemos definir una explosin, aumentar la puntuacin por eliminar un enemigo, efectos
de partculas o ejecutar algn sonido. Un apunte rpido y muy importante a tener en
cuenta: cuando cambiamos de una room a otra, las instancias son eliminadas, a no ser que el
objeto tenga la propiedad Persistent activada. El evento no se activa en este caso, solo se
activa cuando le decimos expresamente que se elimine. Por ejemplo, si tenemos un enemigo
que sume 5 puntos cuando lo matamos, definido en su evento Destroy, al salir de la room, si
hay enemigos pendientes, no sumar esos puntos.
Eventos de alarma
Cuando queremos aadir un evento de alarma, nos aparecer un listado que ir desde la
Alarma 0 hasta la Alarma 11. Significa que podemos aadir 12 tipos de alarmas diferentes.
Una alarma slo se ejecuta cuando se ha llamado previamente mediante una accin.
Ponemos una accin relacionada con la Alarma 0, por ejemplo, y le ponemos un tiempo para
que se lance (el tiempo se mide en steps). Lo habitual es configurar los pasos/steps a 30 en la
room, as que si ponemos una alarma con valor 30, al cabo de un segundo se ejecutara el
evento correspondiente. Un ejemplo sera crear un enemigo que cada 5 segundos cambie de
direccin. Cuando creamos el enemigo, evento Create, aadimos una accin de alarma.
Podemos poner como dato el nmero de steps multiplicado por 5. Luego aadimos el
evento Alarm 0 y ah le decimos que cambie de direccin. En el mismo evento deberamos
de volver a llamar a la accin si queremos que eso se repita siempre.
104
www.aprendegamemaker.com
Evento Step
La unidad de tiempo usada en Game Maker Studio son los steps o pasos por segundo. En
cada paso se comprueban todos los eventos y se activan los que sean necesarios mientras se
ejecuta el juego. As que en este evento podemos comprobar y ejecutar acciones en cada
paso. Un evento Step en realidad contiene tres sub-eventos, Step,Begin Step y End Step.
Para la gran mayora de las cosas el evento Step es ms que suficiente para poder usarlo,
pero a veces queremos controlar el cdigo que se ejecuta y en qu momento. Para ello
tenemos los eventos de inicio y fin de step, para comprobar en cada paso todas las opciones
en orden. El evento Step se utiliza para comprobar cosas continuamente. Por ejemplo, si
queremos comprobar que estamos a una distancia de un enemigo, lo podemos comprobar
en este evento. Hay que vigilar de no hacer cosas muy complicadas en este evento, ya que si
tenemos muchas instancias podemos hacer relantizar nuestro juego. Usadlo con
precaucin!
Evento Colisin
Cuando no tenemos activada la opcin de Physics, podemos calcular las colisiones basadas
en las mscaras de los objetos. Puede ser la mscara del sprite que tenga en ese momento o
la mscara que definimos en el propio objeto. En el momento que se superpongan estas
mscaras se lanza el evento. Si uno de los objetos no tiene mscara definida (podemos tener
un sprite sin mscara), aunque tenga un sprite que dibuje no habr colisiones detectadas. Si
el objeto que choca con el otro es Slido, antes de ejecutar el evento de colisin, muy
importante, la instancia se coloca a la posicin previa que se ha registrado la colisin, pero
slo si hay un evento de colisin creado. Si tenemos un objeto obj_player1 con un
evento de colisin con el objeto obj_player2, si en obj_player2 tambin tenemos
este evento, ejecutar los dos eventos. No sabremos nunca en qu orden ejecutar uno o el
otro. Hay que tener especial cuidado con los objetos heredados. Imaginemos que tenemos
los objetos obj_child1 y obj_child2, que heredan de obj_parent. Quizs nos
interese crear un evento colisin en obj_parent sobre el mismo obj_parent, para que
afecte a los dos objetos hijos que hemos comentado. Cuidado con las acciones que
hagamos que se ejecutarn en los dos hijos!
Eventos de teclado
Cuando creamos un juego, tenemos muchas maneras para que el jugador interaccione con
l, desde el ratn, el gamepad, el teclado. Para controlar todas las opciones del teclado,
Game Maker proporciona una lista muy grande de subeventos que se puede utilizar para los
105
www.aprendegamemaker.com
tres eventos principales. Hablaremos de los tres eventos porque ser indistinto utilizar una
tecla u otra.
Evento Keyboard Pressed: este evento se activa cada vez que se presiona una
tecla.
Como apunte ltimo, tambin nos permite seleccionar dos subeventos especiales, ninguna
tecla y cualquier tecla. Con la primera opcin, podemos detectar que no hay interaccin con
el usuario, as que puede ser til para que el personaje, si tiene una velocidad asignada, deje
de moverse. Con la opcin cualquier tecla podemos detectar cualquier opcin del teclado
sin importar cul pulse.
Para adaptar a dispositivos mviles, Game Maker Studio nos permite aprovechar todos los
eventos de teclado que hayamos definido y que funcione con un rea de la pantalla. De esta
manera sencilla podemos crear un touch-pad para nuestra tablet o mvil.
Eventos de ratn
Al igual que los eventos de teclado, los eventos de ratn contiene una serie de subeventos
para especificar que est sucediendo durante el juego. Al igual que cuando pulsamos
cualquier tecla del teclado, con el ratn podemos detectar cuando pulsamos el botn
106
www.aprendegamemaker.com
izquierdo, el botn central y el botn derecho. Una diferencia importante respecto a los
eventos de teclado que hemos comentado es que se ejecuta en todas las instancias donde
hemos asignado acciones al evento, pero en los eventos de ratn acta en la mscara que
tiene el objeto (recordemos que la mscara puede ser muy diferente al sprite). As que para
que funcione el objeto tiene que tener mscara!
Para el evento Left pressed, Right pressed o Middle pressed, se detecta una sola vez que se
pulsa el botn indicado. Para el evento Left released, Right released o Middle released, se
activa una vez cuando se ha dejado de pulsar el botn. El evento Left button, Right button o
Middle button se activa en cada step o paso mientras se mantenga pulsado cada uno de los
botones. Como hemos visto hasta ahora, es igual que con el teclado.
Tenemos otros eventos relacionados con el ratn, que son Mouse enter y Mouse leave.
Estos no estn relacionados con los botones del ratn, sino con su posicin. Cuando el juego
detecta que el puntero del ratn entra en contacto con la mscara del objeto, se activa el
evento Mouse enter, y cuando el puntero del ratn sale de la mscara del objeto, se activa el
evento Mouse leave. Estos dos eventos se activan SOLO UNA VEZ. Por ejemplo, se podran
usar para cambiar el puntero del ratn para segn que objetos de inventario, botones,
enemigos, etc.
Para finalizar, tambin tenemos el evento Global mouse, que agrupa otros sub eventos de
los botones del ratn. Con los eventos globales del ratn, podemos detectar cuando se ha
pulsado un botn en casos que el ratn no est encima de un objeto, o incluso en ningn
objeto. Simplemente detecta los botones, independientemente de la posicin del ratn. Por
ejemplo, si tenemos algn objeto con el evento Left pressed y Global left pressed
configurado, generar los dos eventos cuando hagamos click sobre l. Si se hace click fuera
del objeto, generar el evento global.
En dispositivos mviles, al no existir el ratn, Game Maker usa sus eventos para detectar
cuando un usuario ha pulsado la pantalla (lo que se conoce como un finger tab, tap o
touch). Si pulsamos una vez la pantalla, se generara el evento Mouse Left, si pulsamos dos
veces seguidas, se ejecutara el evento Mouse Right. Para usar el multitouch o detectar que
hay varios dedos pulsados en la pantalla (los tpicos efectos de deslizar o desplazar, ampliar
o hacer zoom, etc) ya se utiliza funciones de programacin.
Otros eventos
Tenemos unos eventos especiales que los han metido en este saco, ya que son tan dispares y
hacen tantas cosas diferentes que no los han podido clasificar de otro modo. Vamos a
detallarlos a continuacin.
107
www.aprendegamemaker.com
Salir de la room o outside room. Este evento se activa cuando un objeto sale de la
habitacin o room. No estamos hablando de su posicin X/Y, estamos hablando cuando
el sprite entero (la mscara) ha salido de la room. Si el objeto no tiene sprite, entonces
la referencia s que es su posicin X/Y. Como vemos, los objetos que no vemos porque
estn fuera de la room existen, as que podemos crear un objeto fuera para que no se
vea, incluso pintarlo en el Ventana de propiedades de la room.
Este evento lo usamos principalmente para eliminar objetos que ya no nos interese que
aparezca. Por ejemplo, si al disparar creamos un objeto bala y sale fuera de la room,
podemos destruir el objeto con este evento, ya que hemos visto que no se elimina
automticamente, y acabaramos con millones de estos objetos movindose al infinito.
Este evento se ejecuta una nica vez.
Interseccin de lmites o Intersect Boundary. Que no asuste el nombre que le han
puesto. Es muy parecido al anterior, pero en vez de detectar cuando sale de la
habitacin, detecta cuando toca justo en el lmite de la room. Tiene las mismas
caractersticas que el evento anterior, se detecta mediante sprite o con su posicin si no
lo tiene. Se puede utilizar, por ejemplo, si tenemos un objeto que es una pelota y
queremos que rebote en los lmites de la room, sin necesidad de crear objetos y generar
el evento de colisin.
Vistas o views. Cuando hablemos como se define la room, hablaremos en detalle sobre
las vistas y su configuracin. Ahora comentaremos que las vistas se utilizan para ver solo
una pequea rea de toda la room, como podemos comprobar en juegos RPG o
plataformas. Podemos configurar hasta 8 vistas en una misma room. Si seleccionamos
esta opcin aparecen varios subeventos, pero se pueden clasificar en dos categoras: los
objetos que salen de nuestro vista y los objetos que tocan o llegan al lmite de la vista.
Las caractersticas son muy parecidas a los eventos comentados antes.
Inicio del juego o Game Start. Este evento se activa una sola vez en todo el juego.
Adems, las instancias de estos objetos se tienen que colocar en la primera room de
todas desde el editor de rooms, no funcionara si creamos el objeto una vez iniciado el
juego. Ms abajo hablamos del orden de los eventos, pero ahora destacamos que el
evento Room Start se ejecuta despus del evento Create, as que si creamos variables
en el evento Create las podramos utilizar en este evento.
No es habitual usar este evento en varios objetos, aunque se puede hacer. Se suele
crear un objeto controlador para que haga cosas genricas, y este evento es til para
crear variables globales, ejecutar un sonido de fondo, leer ficheros de configuracin
iniciales. En resumen, todo lo que creamos necesario configurar nada ms arrancar
nuestro juego.
108
www.aprendegamemaker.com
Final del juego o End Game. Al igual que el evento anterior, este evento se ejecuta una
nica vez cuando finaliza tu juego o se cierra la ventana. Este evento no se ejecuta en
todas las exportaciones que ofrece Game Maker. Por ejemplo, en iOS los juegos nunca
se cierran, se quedan pausados. En navegadores funcionara cuando cerramos la
pestaa donde est ejecutndose el juego, pero es recomendable probar todas las
opciones para comprobar que lo hace correctamente. Se suele utilizar para grabar datos
o configuraciones en ficheros.
Inicio de room o Room Start. Este evento se ejecuta para todas las instancias que se
encuentran al principio en la room. Al ser el evento Create el primero que se ejecuta,
tambin podemos utilizar variables previamente creadas.
Fin de room o Room End. Ocurre cuando una room termina, por ejemplo porque se
cambia a otra room. Se suele utilizar para destruir objetos o casos especiales como listas
o partculas, para que no ocupen memoria.
No hay ms vidas o No More Health. Game Maker utiliza un sistema de vidas que ya
viene en la aplicacin, que podemos utilizar o no, que usaramos con la palabra Lives.
Aunque no entendamos an el uso de variables, nos adelantamos diciendo que es una
variable global que se crea al comienzo del juego. Podemos dar valor, sumar o restar el
valor de Lives/vidas, as que podemos manipularlas como creamos oportuno. El evento
se activa cuando el nmero de vidas es inferior o igual a 0. Lo podemos utilizar para
ejecutar de alguna manera un Game Over, por ejemplo con un mensaje o reiniciando la
room actual.
No tienes ms energa o No More Health. Se puede llamar energa, salud o Health, que
funciona igual que la variable de Lives. Es una variable global llamada Health y podemos
tambin usarla como queramos, para dibujar una barra de energa, utlizarlo para
combinarlo con las vidas, etc. El evento se ejecuta cuando su valor es ms pequeo o
igual que 0. Por ejemplo, podemos usar la energa y cuando llegue a 0, restarle una vida.
Existen acciones propias para poder dibujar tanto la energa como las vidas que ya
vienen integradas en el programa.
Fin de animacin o Animation end. Hemos aprendido en posts anteriores que los
sprites pueden contener una o varias subimgenes. Si tiene ms de una imagen,
generar una animacin infinita a la velocidad que digamos(a no ser que la controlemos
programando). Cada subimagen tiene un valor numrico, que empieza con su valor 0, y
podemos controlar mediante las diferentes acciones o variables. Pero muchas veces
solo nos interesa saber que la animacin ha terminado, es decir, que ha llegado a su
ltima subimagen. Esto lo podemos saber gracias a este evento. Un ejemplo sera si
109
www.aprendegamemaker.com
creamos un objeto que es una explosin. Como no queremos que se repita la animacin
siempre, podemos hacer que cuando llegue al final desaparezca.
Actualizacin de animacin o Animation Update. Este evento solo se ejecuta en sprites
que son de tipo esqueleto, y se usa funciones especficas para ello. En un sprite que usa
ficheros de imagen sabemos su animacin por cada subimagen, pero en un sprite hecho
con spine slo tenemos la secuencia que hace. Este evento ayuda a saber la orientacin
del esqueleto para aadir cdigo o acciones que nos pueda interesar.
Fin de ruta o End of Path. Ya hablaremos de rutas o paths ms adelante. Os adelanto
que una ruta la definimos y pintamos para un objeto. Esta ruta tiene un inicio y un fin, y
con este evento podemos detectar que el objeto asociado ha finalizado todo el camino.
Definidos por el usuario o User Defined. Es posible que queramos definir un evento
propio, para separar las acciones o el cdigo de otras opciones del objeto. Al ser un
evento especial, no puede ser lanzado por el propio programa, as que eres t el que
lanzas este evento cuando lo llamas. Es muy parecido a como usamos el evento de
Alarma cuando lo queremos lanzar para el siguiente step o paso, la diferencia es que
aqu lo llamas al momento y volveras a la siguiente lnea de cdigo. Se utiliza cuando en
diferentes partes del objeto y en eventos muy diferentes queremos que siempre se
hagan las mismas acciones, y no queremos ponerlo como un Script genrico.
Evento de Dibujo
Este evento es el que manda con todo lo que se ve en pantalla cuando se ejecuta el juego, y
se divide en varios subeventos separados en las siguientes categoras:
El evento Draw estndar se divide en tres tipos: el evento Draw Begin, el evento Draw y
el evento Draw End, por ese orden. Lo ms habitual es usar el evento Draw, para poder
pintar el sprite del objeto, pintar texto como puede ser la puntuacin, barras de
energa, vidas, etc. Recordemos que el evento Draw se ejecuta en cada Step o paso del
juego, o sea, se ejecutar muchas veces cada segundo, as que no debemos poner
acciones o cdigos que pueda ralentizar nuestro juego, al igual que si ponemos muchas
instancias en la room. El evento siempre se ejecutar mientras la propiedad visible sea
true, es decir, aunque no pongamos ninguna accin lo ejecutar para poder pintar su
sprite por defecto. Si aadimos cdigo, entonces estamos controlando lo que queremos
pintar, por lo tanto el sprite por defecto no se pintar a no ser que lo pongamos
expresamente.
Los eventos Draw Begin y Draw End funcionan de una manera muy parecida a los
eventos Begin Step yBegin End. Si queremos preparar algunas acciones antes de
110
www.aprendegamemaker.com
dibujar, como cambiar algunos valores, se puede hacer con Draw Begin, y si queremos
tratar algo despus de dibujar, podemos usar Draw End.
Los eventos de Draw GUI estn pensados para que no afecte al escalado y a la vista o
view utilizada en ese momento. Por ejemplo, si queremos dibujar un cronmetro con el
evento Draw, y nuestro juego utiliza las vistas, no podemos colocarlo situndolo en la
X/Y de la room, sino que se debera hacer con la vista para que siempre sea visible. Pero
si utilizamos Draw GUI podemos colocarlo en la posicin de pantalla que queramos
independientemente de cmo sea nuestro juego: si tiene vistas o no, si lo escalamos,
etc. Tambin tenemos los eventos Draw GUI Begin y Draw GUI End para poder usarlos
tal y como hemos comentado.
Entonces qu hacen los eventos Pre Draw y Post Draw? No existen los eventos de
Draw Begin y Draw End? Pues parece que se suele utilizar cuando tenemos varias
vistas. Pongamos un ejemplo: el tpico juego de carreras cuando juegas con dos
jugadores, cada uno con su mitad de pantalla. Eso se puede controlar fcilmente con
vistas/views. Si tenemos un objeto obj_coche para cada vista, el evento Draw se
ejecutara en cada vista por separado. Es decir, si el evento Draw se ejecuta en cada
paso, al tener dos vistas se ejecutara dos veces por cada paso. Imaginemos que
tenemos cdigo en el evento Draw Begin, para preparar unos datos antes de Draw.
Pasara lo mismo, se ejecutara dos veces, una por cada vista. Con los eventos Pre Draw
y Post Draw se ejecutara solo una vez por cada paso, ya que se ejecutan antes de que
Game Maker prepare todo el canal o bfer necesario para pintar los objetos, as que
podras plantear dnde poner mejor el cdigo, si en un evento u otro. Como veis, el
programa nos da muchas posibilidades para optimizar nuestro juego, y est claro que
todo lo relacionado con dibujar en la pantalla es muy importante si no queremos tener
problemas de rendimiento.
El evento Resize se ejecuta solo en Windows 8 y se activa cuando detecta un cambio en
el tamao de la ventana. Aunque est en la categora de los eventos Draw, aqu no se
puede dibujar nada, solo sirve para comprobar el cambio del tamao y hacer las
acciones oportunas. De esta manera evitamos tener que comprobarlo en el evento Step
(eso significa que en otros dispositivos s que habra que poner el cdigo en ese evento).
Evento Asncrono
Los eventos asncronos son especiales porque no los desencadena Game Maker Studio, sino
al final de una accin externa relacionada, como puede ser la carga de un archivo, la
respuesta de un servidor web o cuando tratamos con paquetes dentro de una red.
Bsicamente, cuando lanzamos una orden o accin, como puede ser la carga de una imagen,
empezar a hacerlo en paralelo y el juego tambin seguir su curso. Cuando la solicitud se ha
111
www.aprendegamemaker.com
completado, enviar un aviso a Game Maker y saltar los eventos asncronos que se han
definido para este tipo de llamada. Si tenemos el mismo evento asncrono en varios objetos,
se dispararan en todas las instancias que se ha definido. La mayora de estos eventos estn
relacionados con los navegadores y juegos que hagamos en formato web. Ahora los
citaremos y ms adelante ya entraremos en detalle con cada uno de ellos. Estos subeventos
son:
112
www.aprendegamemaker.com
113
www.aprendegamemaker.com
Acciones
Hasta ahora hemos visto los eventos, que hemos dicho que son lanzados en un momento
exacto para decir qu acciones queremos hacer. Y, Qu es una accin en Game Maker? Las
acciones son la manera que tenemos de manipular nuestro juego para que haga
exactamente lo que queramos. Si queremos que nuestro juego empieza con 3 vidas, se lo
tenemos que decir. Si queremos que cuando pulsemos la tecla con la flecha izquierda
nuestro personaje se mueva en esa direccin se lo decimos. Y as con todo lo que podamos
imaginar.
Afortunadamente, con Game Maker Studio es muy fcil usar las acciones, ya que solo
necesitamos elegir el evento adecuado y arrastramos la accin o acciones que nos interesen.
En prximos posts habr ejemplos para ver cmo se usan los eventos y las acciones en
diferentes casos. Ahora veremos todas las acciones que nos podemos encontrar.
Una vez tengamos la accin relacionada con el evento, podemos editar sus parmetros
haciendo doble click sobre la accin. Tambin podemos cambiar el orden de las acciones
dentro de toda la lista, mediante arrastre Drag&Drop, eliminar una o seleccionar varias
acciones para arrastrarlas o copiarlas entre diferentes objetos.
114
www.aprendegamemaker.com
descripcin y un pequeo icono indicando que accin es. Tambin aparece un cuadro con el
texto Aplica a/Applies to. Nos aparecen tres opciones:
Self: la gran mayora de las veces se deja esta opcin por defecto. Se refiere a que esa
accin se aplicar al mismo objeto dnde estamos programando la accin.
Other: cuando existe un evento de colisin, podemos saber cual es el otro objeto
causante de la colisin. Da igual el otro objeto con que colisionamos, si marcamos other
estamos diciendo que esa accin corresponde al otro objeto.
Object: si nos interesa cualquier otro objeto, al marcar la opcin object nos aparece un
listado con todos los objetos que hemos definido. As esa accin se definira a todas las
instancias de ese objeto que hay en la room en ese momento.
Vamos a explicarlo con un ejemplo. Imaginamos que hacemos click a una instancia de un
objeto en nuestro juego. Aadimos el evento Left button. Ahora vamos a definir una accin.
Queremos que al pulsar con el ratn el objeto se mueva a una direccin. Arrastramos la
accin correspondiente, y dejamos marcada la opcin de Self. Imaginemos que ese objeto es
un botn, y queremos que se mueva otro objeto. Entonces marcaremos la opcin Object,
elegimos ese objeto y tendra la misma accin. Hemos programado el evento en el objeto
del botn y se movera el otro objeto. Si por ejemplo ese objeto est en contacto con otro,
podemos elegir la opcin Other para programar el otro objeto.
Hay otra opcin que encontraremos en la mayora de las acciones, que es la casilla o check
Relative. Cuando marcamos esa opcin, decimos que tiene que tener en cuenta el valor que
ya tiene relacionada con esa accin. Depender de los parmetros de cada accin, ya que
podemos tener valores de X/Y, variables, etc. La mayora de las veces sumar los valores que
tiene con los que estamos informando. Por ejemplo, tenemos la accin para asignar una
puntuacin o Score al juego. Podemos aadir esa puntuacin cuando eliminamos un
enemigo. Al arrastrar la accin al evento Destroy del enemigo, podemos aadir 5 puntos. Si
ponemos el valor 5 a la puntuacin, le estamos diciendo que Score vale 5. Si lo que
queremos es sumar esos 5 puntos, lo hacemos marcando el check Relative. As acumular o
sumar esa puntuacin a la que ya tenemos.
Depurando acciones
Imaginemos que nos da un error en nuestro juego, o simplemente hace una cosa diferente a
lo que queramos que haga. Sospechamos que eso ocurre en un evento en concreto. Cmo
lo podramos arreglar? Sin entrar en la parte donde se debuga y corrige nuestro juego,
podemos adelantar en decir que existe la posibilidad de parar nuestro juego en un momento
exacto. Para eso colocamos un punto de ruptura, y se parar nuestro juego justo cuando
115
www.aprendegamemaker.com
ocurra esa accin. Luego veremos la ventana de depuracin con toda la informacin
necesaria para ver dnde puede estar el fallo, pero eso ya lo veremos ms adelante.
Para definir ese punto de ruptura, podemos hacerlo con el botn derecho sobre la accin o
lnea de cdigo y elegir la opcin Toggle Breakpoint o pulsando la tecla <F9>. Veremos que
aparece un punto rojo, para saber que si ejecutamos el juego en modo depuracin se
detendr en ese punto.
Ahora detallaremos todas las acciones que podemos usar en Game Maker Studio. Haremos
un apartado por cada pestaa que nos encontramos a la derecha.
Movimiento fijo o Moved fixed. Utilizamos esta accin para que una instancia
empiece a moverse en una direccin particular. Podemos indicar la direccin mediante
uno de los botones de flecha que vemos (hay 8 direcciones). Si queremos detener el
movimiento, podemos usar el botn central. Para especificar la velocidad en que se
mueve, podemos definirlo en la propiedad Speed. Su valor es el nmero de pxeles por
paso. Aunque es posible usar velocidades negativas, para decir que vamos en sentido
contrario, no es necesario. Podemos especificar varias direcciones. Por ejemplo, si
marcamos la flecha izquierda y la flecha derecha, Game Maker utilizar al azar una o la
otra. El check Relative aumentara la velocidad que ya lleva. Por ejemplo, si se est
moviendo hacia la izquierda a una velocidad de 4 y ponemos esta accin cuando choque
con la pared, si marcamos Speed 1 hacia la derecha con el check marcado, ira en esa
direccin con una velocidad de 5.
116
www.aprendegamemaker.com
Movimiento libre o Move free. Con esta accin tambin indicamos cmo
queremos el movimiento, pero en vez de ofrecer 8 direcciones, puede ser en cualquier
direccin. Para eso tenemos la propiedad direction, que es un ngulo entre 0 y 360
grados. Por ejemplo, con un valor de 0 se movera a la derecha, con 90 hacia arriba, con
180 a la izquierda, con 270 hacia abajo, etc Podemos coger cualquier valor para
marcar esa direccin como queramos. A partir de 360 volvera a coger como si fuera el
valor 0. El check Relative aadira movimiento al que ya tiene. Por ejemplo, si estamos
movindonos hacia arriba y aadimos esta accin hacia la izquierda, nos moveremos
arriba hacia la izquierda.
TRUCO: si ponemos en direction random(360), se mover en una direccin arbitraria.
Ms adelante veremos que poner random(360)nos devolver un valor entre 0 y 359.
117
www.aprendegamemaker.com
118
www.aprendegamemaker.com
TRUCO: en los valores X/Y, podramos poner la posicin de un objeto. Por ejemplo,
imaginemos que creamos un objeto bala y queremos que vaya hacia un enemigo.
Podemos poner en X obj_enemigo.x y en Y obj_enemigo.y.
Como vemos, tenemos varias acciones que pueden hacer lo mismo. Podemos usar una u
otra, nos servir para que visualmente nos resulte ms cmodo trabajar.
119
www.aprendegamemaker.com
Dar Gravedad o Set Gravity. Con esta accin le damos a un objeto una gravedad.
Vemos que podemos indicar una direccin, que es un valor en grados de 0 a 360 (la
gravedad puede ser en cualquier direccin!), y una velocidad. La diferencia entre
gravedad y velocidad es que con la gravedad, aumentamos la velocidad EN CADA PASO.
Normalmente se pone un valor muy pequeo, lo habitual sera un valor por debajo de 1
(0.8 por ejemplo).
TRUCO: la gravedad se la asignamos a un objeto. Eso significa que podemos tener varios
objetos con distinta gravedad y direccin. Esto no es la vida real!
120
www.aprendegamemaker.com
121
www.aprendegamemaker.com
Esta accin es la habitual para movimiento. Mientras est pulsada una tecla, lo
detectar en cada paso y con el check Relative cambiar su posicin poco a poco.
122
www.aprendegamemaker.com
123
www.aprendegamemaker.com
124
www.aprendegamemaker.com
Volver a la pantalla o Wrap Screen. Con esta accin podemos decir a una
instancia que cuando salga de un lado de la room aparezca por el otro lado. Por lgica,
se suele usar con el evento de Salir de la room o Outside Room. Para que vuelva a la
room tiene que tener ya una velocidad el objeto (no valdra colocarlo en un X/Y
directamente). Podemos elegir valores para que se base en la direccin horizontal,
vertical o ambos.
Mover hasta contacto o Move to Contact. Esta accin se utiliza para mover una
instancia hasta que choque o colisione con un objeto. Le indicamos la direccin para
moverse y se colocara justo antes de la colisin (no se ejecutar el evento). Si se
encuentra en colisin cuando llamamos a esta accin no se har. Podemos indicar si
afecta hasta que se encuentre un objeto slido o cualquier objeto. Tambin podemos
indicar en la propiedad maximum cual es la distancia mxima que recorrera hasta que
se encuentre el objeto.
125
www.aprendegamemaker.com
Rebote o Bounce. Al poner esta accin en caso de una colisin con algn objeto,
la instancia rebota de forma natural. El parmetro precise lo ponemos a falso para que
solo tenga en cuenta paredes horizontales y verticales. Si marcamos para que el rebote
sea preciso tambin tendr en cuenta la inclinacin y paredes curvas. Este parmetro
existe para que el tratamiento de colisiones se haga ms rpido o no, depende de lo que
marquemos. Tambin podemos marcar si afecta solo contra objetos slidos o cualquier
objeto.
126
www.aprendegamemaker.com
Asignar ruta o Set Path. Cuando hemos creado una ruta, podemos decir con esta
accin que la instancia seguir ese camino en particular. Indicaremos el path a seguir y
su velocidad. Si la velocidad es positiva empieza al inicio de su trayectoria, si es
negativa, empieza desde el final. El parmetro at end indica su comportamiento cuando
llega al final del camino, donde podemos elegir si nos detenemos o reinicia desde el
principio. Aunque la ruta sea cerrada, tiene su inicio y su fin y se parara en el ltimo
punto. El parmetro Relative es para indicar si la ruta que hemos pintado debe ser
absoluto, que hara la ruta tal y como se ha definido en la room, o relativo, que hace el
camino a partir de la posicin actual de la instancia.
Fin de la ruta o End Path. Utilizaremos esta accin para que la instancia que est
haciendo un camino se detenga.
127
www.aprendegamemaker.com
Posicin de la ruta o Path Position. Con esta accin cambiamos la posicin actual
de la ruta. El valor 0 es del principio de la ruta y el valor 1 es del final. Por lo tanto, da
igual que la ruta sea grande o pequea, ya que un valor de 0.5 indica que estamos justo
en mitad del camino.
Velocidad de la ruta o Path Speed. Usamos esta accin para cambiar la velocidad de la
instancia en la ruta. Si tiene una velocidad negativa hara el camino hacia atrs. Con un valor de
0 podramos detener temporalmente su movimiento.
128
www.aprendegamemaker.com
Pasos hacia o Step Towards. Con esta accin indicamos una posicin y una
velocidad y la instancia empezar a moverse, a la velocidad y posicin marcada.
Podemos asignar un tipo de objeto, slidos o todos, y as los intentara evitar. Esta
accin es muy til para asignar una IA (inteligencia artificial) sencilla. Si marcamos el
check Relative, indicamos que la posicin X/Y que ponemos se le aadir a la posicin
actual de la instancia. El check no afecta a la velocidad.
129
www.aprendegamemaker.com
Crear instancia o Create instance. Con esta accin creamos una instancia de un
objeto. Se especifica el nombre del objeto creado y la posicin inicial.Como esto lo
creamos desde un objeto, con el check Relative tendra en cuenta la posicin de dicho
objeto para sumar a la posicin del objeto nuevo. Una vez creada la instancia se
ejecutar su evento Create.
Crear instancias durante el juego es muy til, ya que implica que no tenemos que
dibujarlas en la room desde un principio. Por ejemplo, un arma puede crear balas, una
bomba una explosin, etc. Tambin habr objetos que llamamos controladores que
pueden crear enemigos u otros objetos.
Crear con movimiento o Create moving. Funciona igual que la anterior, pero
tendremos adems las propiedades la velocidad y la direccin inicial de la instancia
nueva. La casilla Relative solo son para aumentar en la posicin, no en la velocidad y
direccin.
130
www.aprendegamemaker.com
Por ejemplo, tenemos un objeto arma obj_gun. Cuando pulsamos una tecla disparar
una bala, por lo que usamos esta accin. Podemos marcar el check Relative y la posicin
X/Y como 0, as coger la posicin del arma. Qu direccin debe usar la bala? Para usar
la direccin del arma, podemos escribir direction en vez de poner un nmero. As coger
el valor del objeto obj_gun. Direction es una variable del objeto, que ya hablaremos
en el apartado correspondiente.
Muy til para crear enemigos aleatorios o, por ejemplo, piezas del Tetris.
131
www.aprendegamemaker.com
132
www.aprendegamemaker.com
Eliminar desde una posicin o Destroy at position. Con esta accin eliminamos
las instancias dentro de un cuadro delimitado. til para asignar un rea de una bomba.
Cambiar sprite o Change sprite. Esta accin cambia el sprite de una instancia,
indicando un nuevo sprite. Tambin se puede indicar la subimagen que mostrara, lo
habitual es poner un 0 porque sera la primera, o un valor especfico. Con un valor de -1
usara el mismo nmero que est utilizando en ese momento. Tambin podemos elegir
la velocidad de animacin. Si no queremos asignar una velocidad, podemos poner su
valor a 0 y se mostrar la subimagen que hemos definido. No se puede usar una
velocidad negativa. Con un valor de 1 usar la velocidad estndar y mostrar todas las
subimgenes, si es mayor saltar subimgenes para dar sensacin de ms velocidad.
133
www.aprendegamemaker.com
Transformar sprite o Transform sprite. Podemos cambiar los valores del sprite
de la instancia. Los valores xscale-yscale se utilizan para cambiar el tamao del sprite. Si
queremos duplicar su tamao, pondremos un valor de 2 a las dos propiedades, si
queremos la mitad, podemos poner 0.5. Tambin podemos poner valores diferentes
para deformar el sprite. Tambin tenemos un ngulo de orientacin, que marcamos
en grados y se hara en referencia a si valor X/Y. Por ejemplo, imaginamos que tenemos
un coche visto desde arriba, y nos interesa que el sprite gire dependiendo de la
direccin que tenga. Aprovechamos la variable direction para usarla en la propiedad
angle y el sprite girar en el mismo sentido. Tambin podemos aplicar un efecto espejo
al sprite, tanto horizontal como verticalmente. Por ejemplo, en un juego de
plataformas, podramos tener un sprite que mire a la izquierda y otro sprite que mire
hacia la derecha. Pero tambin podemos usar slo uno y usar esta accin para girarlo
con efecto espejo, partiendo que su posicin X/Y est justo en el centro.
134
www.aprendegamemaker.com
Color del sprite o color sprite. Normalmente el sprite se dibuja tal y como se
define. Pero con esta accin podemos colorear el sprite, mezclndolo con la imagen que
tengamos. Si queremos dibujar un sprite en diferentes colores, podemos crear uno en
blanco y negro y colorearlo con esta accin. Tambin tenemos una propiedad de
transparencia o alpha, para indicar si el sprite es totalmente opaco, valor 1, o
totalmente transparente, valor 0.
135
www.aprendegamemaker.com
Reproducir sonido o Play Sound. Con esta accin podemos usar uno de los
recursos de Game Maker, los sonidos, para reproducirlos. Podemos elegir si queremos
que se escuche slo una vez, opcin por defecto, o en un loop constante
(infinitamente). La opcin de loop es tpica para msica de fondo, y sin loop es para los
tpicos efectos. Pueden escucharse varios sonidos a la vez.
Detener sonido o Stop Sound. Esta accin detendr el sonido indicado. Si hay
varios objetos ejecutando ese sonido, los detendr en todos.
136
www.aprendegamemaker.com
Habitacin siguiente o next room. Lo mismo que la anterior, pero nos movemos
a la habitacin siguiente. Si estamos en la ltima habitacin del rbol de recursos y
ejecutamos esta accin, saltar un error.
137
www.aprendegamemaker.com
138
www.aprendegamemaker.com
Asignar Timeline o Set Time Line. Con esta accin establecemos un timeline a
una instancia. Indicaremos el timeline que hemos creado, nos aparece una lista con los
que detecta, la posicin con la que queremos empezar (0 es la primera posicin), si
empieza inmediatamente o no, y si cuando llega al final vuelve al principio o no. Un
ejemplo de timeline sera programar una oleada de enemigos para que aparezcan en
cada momento que le digamos nosotros.
139
www.aprendegamemaker.com
Velocidad en Timeline o Time Line Speed. Al igual que con la posicin, esta
accin cambiara la velocidad del timeline. Un valor de 1 es la velocidad normal, si
140
www.aprendegamemaker.com
Iniciar Timeline o Start Time Line. Iniciar el timeline desde su posicin actual (al
estar pausado o detenido).
141
www.aprendegamemaker.com
142
www.aprendegamemaker.com
Abrir direccin web o Open URL. Especificando una URL completa, podemos salir
de nuestro juego para abrir una pgina web.
Reiniciar juego o Restart Game. Al aadir esta accin reiniciamos el juego desde
el principio.
Finalizar juego o End Game. Con esta accin terminaramos nuestro juego. En
algunas plataformas esta accin funcionar diferente. Por ejemplo, en HTML5
terminara nuestro juego, pero no cerrara la pestaa de navegacin. En iOS o Windows
143
www.aprendegamemaker.com
Phone los juegos no pueden finalizarse, se pausan, as que es mejor no ponerlo ya que
pueden rechazar nuestro juego en el proceso de validacin.
Guardar partida o Save Game. Podemos guardar el estado del juego actual. Nos
pide un nombre de fichero (as podemos tener diferentes y guardar varias partidas). En
la siguiente accin veremos que podemos recuperar el juego. Al ser una accin que
viene por sistema, es bastante bsica. Por ejemplo, no guarda el sonido que se est
reproduciendo actualmente, contenido de variables y estructuras, etc).
Cargar Partida o Load Game. Carga el estado del juego desde un archivo.
Tenemos que hacerlo con la misma versin de Game Maker que el mismo fichero que
hemos guardado antes.
144
www.aprendegamemaker.com
145
www.aprendegamemaker.com
146
www.aprendegamemaker.com
comprobar condiciones o aadir cdigo GML. Los grupos que nos encontramos en esta
pestaa son preguntas/questions, otras/others, cdigo/code y variables.
Veamos un ejemplo
En la siguiente imagen, vemos un ejemplo del uso de estas acciones para controlar una
situacin.
if place_free(x,y)
{
if irandom(2) == 0 instance_create(x, y, obj_Enemy);
}
else
147
www.aprendegamemaker.com
{
part_emitter_burst(ps, 0, 0, 0, 0);
sound_play(snd_Explode);
}
Como vemos, las dos opciones hacen lo mismo. Podemos hacerlo de las dos maneras, lo
importante es que nosotros nos veamos cmodos tanto de una como de otra. Tambin
habr cosas ms complejas que solo lo podemos hacer con cdigo GML.
Por si alguien se lo pregunta, en el primer bloque, si encuentra una posicin libre en la
posicin X/Y, crea un enemigo solo con una probabilidad de un 50%. Si no encuentra una
posicin libre, segundo bloque, estallar algunas partculas y reproducir un sonido que
hemos aadido al proyecto.
Comprueba vaco o Check Empty. Empezamos con las preguntas. Al poner esta
accin, pregunta si en la posicin X/Y indicada no genera una colisin con un objeto.
Podemos indicar si comprobamos solo los objetos slidos o cualquier objeto que se
halle en dicha posicin. Esa posicin se podemos indicarla Relativa a la posicin del
objeto que aadimos la accin o es una posicin absoluta de la room. Recordemos que
en la comprobacin de esa posicin necesita un objeto con una mscara vlida. Un
ejemplo para utilizar esta accin es cuando movemos un objeto y queremos comprobar
que dnde nos movemos est libre, que no nos encontremos un muro, un enemigo, etc.
148
www.aprendegamemaker.com
Comprueba colisin o Check Collision. Esto hace justo lo contrario que la accin
anterior. Devuelve verdadero, entrara en el bloque que pusiramos a continuacin, si
hay una colisin con un objeto, dependiendo del tipo de objeto que pongamos, slido o
no.
149
www.aprendegamemaker.com
ese objeto est bien lejos del objeto que le aadimos la accin, esta comprobacin la
hace como si fuese un evento de colisin. Por lo tanto, necesitamos que los dos objetos
tengan una mscara vlida. Tambin influye como hemos configurado las mscaras, tal
y como hablamos en su momento.
Contar instancias o Test Intance Count. Con esta accin podemos averiguar el
nmero de instancias que se encuentran actualmente en la room. Elegimos un objeto
que tengamos definido, marcamos el nmero que nos pueda interesar y en la tercera
opcin elegimos si nos interesa marcar igual, ms grande o ms pequeo. Por ejemplo,
podemos comprobar si no existe ningn enemigo ms, object enemigo equal to 0. para
cambiar de room o aumentar la puntuacin. Si tenemos un objeto arma que no puede
disparar ms de una bomba a la vez, podemos detectar que object bomba greather
than 0, etc.
150
www.aprendegamemaker.com
151
www.aprendegamemaker.com
Comprueba pregunta o Check Question. Con esta accin aparecer una ventana
con el texto que le hayamos puesto, con unos botones de SI y NO. Si se pulsa el primer
botn ejecutar el bloque siguiente. Si pulsamos NO, no ejecutar ningn bloque, a no
ser que contenga una accin ELSE.
152
www.aprendegamemaker.com
Comprueba cuadrcula o Check Grid. Si tenemos juegos que van alineados a una
cuadrcula, un juego de tablero como el ajedrez o algn rpg que funcione con
movimiento de casillas, debemos comprobar que los objetos estn bien colocados. Esta
accin nos ayuda a saber si los objetos estn colocados dentro de la grid que nosotros
digamos.
153
www.aprendegamemaker.com
Inicio de bloque o Start Block. Con esta accin agrupamos las siguientes acciones
dentro de un bloque de inicio o fin. Aunque ya lo hemos comentado, la siguiente
imagen extrada de la ayuda lo explica a la perfeccin:
154
www.aprendegamemaker.com
Fin de bloque o End block. Tal y como hemos indicado arriba, con esta accin
podemos finalizar un bloque.
Else (sta no la traduzco ^_^). Cuando utilizamos una accin de pregunta, todas
las que hemos comentado ms arriba, siempre nos devolver un resultado verdadero o
un resultado falso. Las acciones que aadimos justo despus de esa accin de pregunta
son las del resultado verdadero. Pero es posible que tambin queramos controlar un
resultado falso, para que haga una o ms acciones. Se utiliza la accin else para poder
controlar esta situacin.
Repetir o Repeat. Otra accin muy til, repetir una serie de acciones un nmero
de veces. Podemos especificar un nmero o una expresin para ejecutarlo, as no hace
falta duplicar acciones. Por ejemplo, si queremos crear 6 enemigos aleatoriamente, o
incrementar una serie de puntuaciones, etc.
155
www.aprendegamemaker.com
Salir de evento o Exit Event. Cuando se pone esta accin no se ejecutar las
siguientes acciones en ese evento. Muy til para hacer comprobaciones para ver si las
acciones son correctas.
Ejecutar cdigo o Execute Code. Esta es la accin que utilizaremos para escribir
con lenguaje GML. Al aadirla, nos aparecer una ventana, como un editor de textos,
que podemos escribir desde una funcin sencilla hasta las cosas ms complicadas. Ya
hablaremos extendidamente sobre el lenguaje GML y todo lo que podemos hacer con
l.
Ejecutar Script o Execute Script. Si queremos usar lenguaje GML muy extenso o
que se pueda aprovechar entre diferentes objetos, es recomendable utilizar scripts.
Hablaremos en detalle cuando llegue, de momento podemos ver que podemos llamar a
156
www.aprendegamemaker.com
157
www.aprendegamemaker.com
Asignar variable o Set Variable. Las variables es uno de los elementos esenciales
a la hora de crear nuestros juegos. En una variable podemos crear y mantener valores
para usar en nuestro objeto. Ya hemos hablado de algunas variables como pueden ser
las vidas/lives, o la puntuacin/score. Pero nosotros podemos crear todas las variables
que queramos y usarlas sin lmites. Esta accin cambia el valor de una variable concreta
(si no existe la crea con ese valor). el valor puede ser un nmero, un texto o cosas ms
complejas. Recordemos que el check Relative lo utilizaremos al asignar ese valor, para
que tenga en cuenta el valor o no ya almacenado.
158
www.aprendegamemaker.com
Dibujar variable o Draw Variable. Con esta accin podemos dibujar el valor de
una variable en una posicin particular en la pantalla. Recordemos que solo podemos
dibujar en el evento Draw.
159
www.aprendegamemaker.com
Asignar puntuacin o Set Score. Esta accin establece una puntuacin al valor
elegido. Recordemos que se utiliza la variable global score y se puede colocar en
cualquier objeto, modificando siempre en el mismo lugar. Por ejemplo, podemos poner
en el evento Destroy de un enemigo una puntuacin de 10 (o diferente dependiendo
del enemigo). Para ello deberamos marcar el check Relative para que siempre
incremente su valor sobre la puntuacin actual. Tambin podemos poner un valor de 0
(quitando el check Relative!) al inicio del juego para reiniciar el marcador.
160
www.aprendegamemaker.com
161
www.aprendegamemaker.com
Asignar vidas o Set Lives. Aqu tenemos otra variable de sistema que podemos
usar. Lo habitual es asignar un valor al principio del juego (por ejemplo 3) y luego
disminuir o aumentar en funcin de lo que suceda (con el check Relative). Tambin
tenemos un evento que detecta si las vidas bajan a 0 o menos.
Comprueba vidas o Test Lives. Con esta accin de pregunta podemos comprobar
el nmero de vidas, al igual que con la puntuacin. Se suele usar para cuando
asignemos vidas que no superemos un tope mximo.
162
www.aprendegamemaker.com
Dibujar vidas o Draw Lives. Al igual que con la puntuacin, podemos dibujar en
una posicin las vidas con un texto predeterminado en el evento Draw.
Dibujar imgenes de vidas o Draw life Images. En este tipo de variables es muy
habitual representar las vidas con alguna imagen en vez de un texto. En la accin
indicamos un sprite y una posicin X/Y inicial, y Game Maker dibujar tantas imgenes
163
www.aprendegamemaker.com
como vidas tengamos en ese momento. Recordemos que las acciones de dibujo slo
son vlidas en el evento Draw.
Asignar salud o Set Health. Game Maker tambin incluye una variable de
sistema que podemos establecer y cambiar su valor con esta accin. Lo habitual es que
esta variable se mueva en el rango entre 0 y 100, donde 100 es para indicar que est a
tope de energa). Cuando la Salud llega a 0 o menos tenemos un evento que lo detecta.
Es habitual combinar la Salud con las vidas, as que con el evento que detecta que no
tenemos ms energa restaramos una vida, y si llegamos a 0 vidas generar un Game
over con el evento apropiado.
164
www.aprendegamemaker.com
165
www.aprendegamemaker.com
post propio, tanto las acciones que vemos en esta pestaa como el cdigo GML.
Comentamos la otra accin que vemos y est relacionada con el puntero del ratn.
Asignar cursor de ratn o Set Mouse Cursor. Podemos cambiar el cursor del
ratn a una imagen que elijamos de los sprites. Tambin podemos elegir ocultar el
cursor estndar. Esta accin slo es compatible con Windows, Linux, Mac y HTML5.
Dibujar el propio sprite o Draw Self. Al aadir cualquier accin al evento Draw de
un objeto, le estamos diciendo a Game Maker que en vez de pintar el sprite que tiene,
que haga caso a nuestras acciones. Es posible que nos interese pintar un nmero
166
www.aprendegamemaker.com
encima del objeto, una barra de energa, etc pero tambin queremos que pinte el
sprite que tiene asignado. Para ello usamos esta accin. Es interesante poder combinar
algunas opciones, como cambiar el sprite (sprite diferente, escalarlo o colorearlo
mediante parmetros que veremos), o hacer combinaciones de profundidad a la hora
de pintar (por ejemplo, pintar primero tu sprite y despus su energa encima).
Dibujar sprite o Draw sprite. Esta accin dibuja un sprite de la lista de recursos
que tenemos, en una posicin que le demos (recordemos que podemos usar el check
Relative para que sea la referencia de la posicin del objeto) y una subimagen del sprite(
con un valor de 0 para la primera y un nmero superior para el resto). Si el sprite es una
animacin y queremos que la dibuje como siempre, el valor de subimagen ser -1. Con
esta accin no tendr en cuenta los valores de transformacin que le hayamos
cambiado al sprite.
Dibujar fondo o Draw Background. Podemos cambiar o dibujar un fondo que sea
diferente al creado en el diseo de la room. Le marcamos una posicin, absoluta o no, y
si la imagen debe repetirse por toda la room o no (con la propiedad tiled).
167
www.aprendegamemaker.com
Dibujar texto o Draw Text. Con esta accin dibujamos texto en cualquier lugar de
la habitacin o room. Se debe indicar el texto y la posicin. Recordemos una serie de
cosas a la hora de poner texto:
Para dibujar el texto en varias lneas, se utiliza el smbolo #. Por ejemplo, el texto
Hola a todos#empezamos a aprender lo dibujara en dos lneas diferentes.
Si queremos pintar el smbolo #, debemos escribir \#, Por ejemplo: Este es el
nmero \#3.
Se puede mezclar texto y expresiones, como dibujar valores y variables. El texto
que queremos mostrar debe ir entrecomillado. Por ejemplo, para pintar la
velocidad usaramos la variable de sistema speed y el texto sera algo parecido a La
velocidad del objeto es de + string(speed).
168
www.aprendegamemaker.com
Dibujar texto escalado o Draw Scaled Text. A igual que la accin anterior, pero
con algunas propiedades ms. Podemos cambiar el tamao con las propiedades (xscale,
yscale), y la propiedad angle para girar el texto con un ngulo.
169
www.aprendegamemaker.com
si dibuja solo la lnea del contorno o el rectngulo entero como slido. Para poder
definir los colores veremos ms adelante que existen acciones para ello.
170
www.aprendegamemaker.com
Dibujar elipse o Draw Ellipse. Con esta accin dibujamos un crculo o una elipse.
Se especifican igualmente dos coordenadas de posicin, que sera el rectngulo desde
dnde estara la elipse por dentro y su posicin. Podemos dibujar solo el contorno o
rellenarla con el color predeterminado.
171
www.aprendegamemaker.com
Elipse con gradiente o Gradient Ellipse. Igual que el anterior, pero se puede
elegir dos colores de degradado que va del centro hasta el borde.
Dibujar lnea o Draw Line. Dibuja una lnea entre dos puntos que se especifican
en la accin, teniendo en cuenta la opcin de la casilla Relative.
Dibujar flecha o Draw Arrow. Dibuja una flecha simple igual que la accin de
dibujar lnea, especificando dos puntos de posicin. Tambin se escribe el tamao de la
172
www.aprendegamemaker.com
punta de flecha, con su tamao en pxeles, aunque eso no aade longitud al tamao
total.
Establecer color o Set color. Esta accin es donde ajustamos el color de todas las
acciones de dibujo que hemos comentado anteriormente. Se puede poner en cualquier
evento, y una vez asignado, ser el color de referencia hasta que se cambie. Esto no
afecta a ningn sprite o fondo del juego.
173
www.aprendegamemaker.com
Establecer pantalla completa o Set Full Screen. Con esta accin podemos
cambiar de ventana a pantalla completa, y al revs. Es una opcin que podemos incluir
en cualquier men de nuestro juego.
174
www.aprendegamemaker.com
Tomar captura de pantalla o Take Snapshot. Esta accin toma una imagen del
juego mientras se est jugando y lo almacena en un archivo PNG que se especifica en la
accin.
Crear efecto o Create Effect. Sin entrar en el tema de partculas, podemos crear
efectos basicos con esta accin, como una explosin o un fuego. Especificamos el tipo
de efecto, tamao, posicin y color. Para los efectos de lluvia y nieve la posicin no
importa.
175
www.aprendegamemaker.com
Y hasta aqu el listado de todas las acciones del programa (casi nada). Como vemos, tenemos
muchas acciones donde se pueden hacer un montn de tipos de juegos sin escribir una lnea
de cdigo. Iremos poniendo ejemplos de estos juegos, desde un shooter de aviones hasta un
juego de plataformas. Tambin veremos la equivalencia con el cdigo GML, aunque en el
prximo post veremos el uso de variables y expresiones que hemos ido comentando en
algunas de las acciones.
176
www.aprendegamemaker.com
Con Game Maker Studio es posible usar cualquier variable creada, constantes o variables
globales (como las que comentamos de puntuacin o vida) en cualquier accin que
necesitemos. Podemos incluso aadir frmulas matemticas como las que vemos a
continuacin:
177
www.aprendegamemaker.com
La lista de variables es bastante grande, y creo que enumerarlas aqu se hara bastante
tedioso. Creo que lo mejor es hacer post con las categoras que hemos comentado y as
vemos las diferentes opciones que podemos tener a la hora de gestionarlas.
Creacin de variables
178
www.aprendegamemaker.com
Aparte de todas las variables que nos ofrece Game Maker, existe la posibilidad de crear
todas las variables que necesitemos. Es importante no usar el mismo nombre que las
existentes en el sistema para no entrar en conflicto, ya que el programa no tendra muy
claro a cual se refiere.
Ya tenemos una accin para crear variables, Set Variable, donde adems le damos un valor.
Cuando creamos una variable, esa variable se podr usar en todos los eventos y en todas las
acciones de ese objeto. Por ejemplo, si creamos la variable num_armas en en evento Create
179
www.aprendegamemaker.com
boolean: ya lo hemos comentado. Podemos decir que solo se almacena un bit, o sea,
solo puede tener valor 0 o 1. Esos valores son equivalentes a poner true o false, para
tener una fcil interpretacin.
arrays: es un listado de valores (nmeros o cadenas, por ejemplo) con un ndice
numrico para acceder. Hablaremos de arrays cuando toquemos el lenguaje GML.
Estos son los tipos de datos sencillos. Tenemos muchos tipos ms, podemos gestionar fechas
(aunque se almacenan como un nmero), tipos llamados enum, que son una lista de valores
fijos (constantes), punteros, para gestionar buffers. Tambin tenemos otros tipos de datos
complejos que gestionan listas, colas, mapas, etc, que veremos en detalle prximamente.
Expresiones en acciones
Ya hemos visto que podemos usar tanto las variables de sistema como las que creemos en
las acciones de nuestro juego. Podemos poner 100/3, pero tambin podemos usar variables
creada y poner 100/total. Estas expresiones pueden ser todo lo complejas que queramos.
Cuando una variable es de un tipo, no podemos mezclarlos entre ellos, ya que dar un error
de programa. Por ejemplo, si la variable nombre que tiene el valor Jugador, le decimos ahora
que se incremente en 5, dar un error. Pero, y si tenemos la variable global.total_enemigos
180
www.aprendegamemaker.com
un evento. Por ejemplo, la funcin string() hace las instrucciones necesarias para que cuando
le pasemos un nmero transforme ese nmero en una cadena.
Es posible pasarle valores a una funcin, no es obligatorio, y se pasan dentro de los
parntesis que vemos. Ya hemos visto que en string() se le pasa la variable con el nmero,
pero otra funcin de sistema es draw_text() y en ella se le pasan tres valores: la posicin x, la
posicin y, y el texto que queremos mostrar. Por ejemplo draw_text (100, 150,
INVENTARIO). Tambin podemos poner draw_text (x 50, y, INVENTARIO), y estaramos
usando variables del objeto, o globales, etc.
El listado de funciones es tan grande o ms como el de variables del sistema, adems que
podemos crear nuestras propias funciones en el apartado de Scripts, pudiendo personalizar
nuestras acciones como si fueran funciones globales que podemos usar en cualquier objeto.
Como podemos ver, las posibilidades que se nos ofrecen son infinitas, y todava no hemos
tocado nada de cdigo GML! En los prximos posts hablaremos de los recursos que nos
faltan y empezamos ya con ejemplos de juegos reales que podemos hacer sin tener que
programar nada.
181
www.aprendegamemaker.com
El editor de rooms
Vemos que la mayor parte del editor de rooms lo ocupa la visualizacin de como queda la
room, donde colocamos objetos, fondos completos o tambin tiles, pero tenemos varias
opciones tambin: botones, pestaas y una barra de informacin para ayudarnos a
configurar la room de nuestro juego.
182
www.aprendegamemaker.com
Confirmar: guardamos los cambios y cierra la ventana del editor de rooms. Al hacer esto
no veremos ninguna ventana de confirmacin, no como en otras ventanas, as que
tenemos que tener especial cuidado al hacerlo. Pero si podemos configurar una cosa (lo
vimos en las Preferencias globales (enlace del programa) y es que si queremos que nos
pregunte si eliminamos todas las instancias que hay fuera de la habitacin o no.
Dependiendo de cmo hemos aadido esas instancias nos puede interesar que se
borren o no.
Deshacer: podemos deshacer NICAMENTE la ltima accin que hemos hecho.
Acciones de instancia: estos botones nos permite cambiar algunos valores de las
propiedades de las instancias (y de los tiles si estamos en la pestaa adecuada).
Podemos eliminar todas las instancias que tenemos en la room (para volver a empezar a
colocarlas), cambiar la posicin de todas las instancias al valor que le quieras dar
(aparece una ventana) y bloquear o desbloquear instancias (de esta manera nos
aseguramos que no se movern accidentalmente del lugar dnde se han colocado).
Grid o rejilla: podemos decir el ancho y alto de la grid que se muestra en la room, para
facilitarnos cuando colocamos objetos.
Tipo de grid: si queremos una rejilla 2D normal o isomtrica.
Opciones de visualizacin: se abrir un men con todas las opciones que podemos
activar o desactivar para mostrar mientras editamos la room: objetos, objetos invisibles,
objetos sin sprites, fondos, tiles, etc.
Opciones de zoom: tenemos tres botones para ampliar, reducir o dejar el zoom a
tamao real.
Orden de instancias: nos abrir una ventana donde podemos cambiar el orden de las
instancias que hemos colocado. Muy importante para la activacin de algunos
parmetros o la creacin de variables globales.
Informacin de accesos directos: se nos abre una ventana con la informacin de las
acciones directas relacionadas con el editor de room. Sabremos cmo aadir objetos,
seleccionar varios, eliminarlos, alinearlos al grid, etc. combinando el ratn con algunas
teclas. Si no tenemos muy claro como funciona la edicin, siempre podemos tener esta
ventana activa.
Minimapa
183
www.aprendegamemaker.com
Si queremos ver como va quedando nuestra room, tenemos una representacin pequea del
tamao total de la room. As podemos movernos por toda la room rpidamente, da igual el
tamao de la room o si le hemos aplicado un zoom grande o pequeo, simplemente
situndonos en el minimapa y movindonos en l.
Barra de informacin
En la parte de abajo podremos ver informacin adicional cuando colocamos objeto so tiles
en la room. Podemos ver la posicin actual del ratn, parap oder situarnos, el nmero de
instancia cuando nos colocamos por encima del ratn, y si una instancia tiene cdigo
personalizado.
Ajustes
En la pesaa de Ajustes vemos la configuracin bsica de la room. Las opciones que
podemos cambiar son:
184
www.aprendegamemaker.com
depender del tamao de las rooms, las instancias que contiene y si el cdigo de los
objetos suponen mucho coste de procesador, ya que mayor velocidad implicr reducir
los frames por segundo. Lo dicho, no se suele cambiar su valor de 30, pero se puede
valorar aumentarlo si hemos valorado sus opciones.
Persistente: normalmente, al entrar en una room, nos la encontramos con sus valores
iniciales, tal y como la hemos diseado. Eso significa que si hemos diseado un juego
donde se sale de una room y queremos volver a entrar, se pierde tal y como est el
juego. Si queremos mantener esos valores, dnde estn las instancias en ese momento,
como puede ser en un juego RPG, debemos marcar el check de Persistent. Cuando se
vuelve a esa room, se recordar el estado tal y como se dej. Recordemos que los
objetos tambin pueden ser persistentes, eso significa que se mantendrn cuando
cambiemos de una room a otra.
Orden de instancias: para controlar que un objeto se cree antes que otro, se necesita
saber en qu orden se van a crear las instancias. Con el botn que vemos en esta
pestaa podemos seleccionar cada un a de las incluidas en la room y cambiar su orden
de creacin. En la lista que vemos, las que estn ms arriba se crearn antes de las que
Fondos
Dentro de esta pestaa podemos configurar el fondo de la room. El fondo puede ser un
color, una imagen o una combinacin de una imagen con zonas transparentes y un color. Las
opciones son:
Dibujar color de fondo. Activamos esta opcin para que dibuje un color. El color lo
podemos seleccionar o cambiar un poco ms abajo. Vemos que podemos elegir una
serie de colores predefinidos o personalizarlo al gusto. El color de fondo lo solemos
utilizar cuando no tenemos imagen de fondo que cubra toda la room, as que si
tenemos claro que no es necesario activarlo lo desmarcamos y nos ahorramos tiempo
de proceso.
Nmero de fondos. Debajo de la seleccin de color, tenemos una lista de hasta 8
fondos numerados. Ninguno de estos est activo, as que hay que definirlos para
185
www.aprendegamemaker.com
poderlos mostrar. Por ejemplo, seleccionamos Background 0 y todas las opciones que
aparecen abajo se refiere al elemento seleccionado. Veamos esas opciones.
Visible when room starts. Decidimos si el fondo ser visible o no al arrancar esa
room. Lo habitual es definir un fondo visible, pero nos puede interesar configurar
otro y activarlo ms tarde, con los dos fondos a la vez o intercambiarlos. Si
tuviramos fondos con zonas transparentes podramos tener activos varios fondos
a la vez.
Foreground image. Lo habitual es que el fondo se sita por detrs de todos los
elementos, pero es posible que nos interese que se site en primer plano, por
encima de las instancias.
Background select. En esta opcin aparecer una lista de todos los fondos
disponibles en el rbol de recursos y seleccionar uno de ellos.
Tile Hor. y Tile Vert. Es para aplicar un mosaico del fondo, es decir, repetir el
fondo seleccionado horizontal o verticalmente hasta el infinito. Vemos que
podemos elegir la posicin X/Y desde dnde empieza la repeticin.
Stretch. Con esta casilla elegimos extender la imagen de fondo a todo el alto y
ancho de la habitacin. Dependiendo del tamao de la imagen respecto a la room,
es posible que se distorsione al cambiar su ratio.
Horizontal y Vertical speed. Como hacer que el fondo se mueva en Game
Maker? Cambiando estos valores! Poniendo valores positivos haremos que se
desplace hacia la derecha, y con valores negativos hacia la izquierda. Con la
velocidad vertical ser idntico, pero arriba y abajo. La velocidad se calcula por
pxeles por paso, as que no puede tener valores con decimales. Esta opcin es muy
interesante si la combinamos con tiles o baldosas, ya que daremos la sensacin de
habitacin infinita gracias al movimiento del fondo.
Objetos
La pestaa de objetos sirve para seleccionar un objeto del rbol de recursos y colocar sus
instancias en la room. Primero elegimos el objeto de la lista seleccionable, una vez
seleccionado veremos una previsualizacin de su sprite asociado. Colocaremos las instancias
en el rea ms grande de la ventana, con el botn izquierdo del ratn. Si el objeto no tiene
sprite no se ver la previsualizacin, pero al aadir la instancia veremos un icono que nos
servir de referencia.
Propiedades de la instancia. Una vez colocada la instancia, podremos ver una serie de
propiedades que nos permitir personalizar nicamente esa instancia. Vamos a ver:
186
www.aprendegamemaker.com
ScaleX: Nos permite cambiar la escala o tamao en el eje x del objeto. Un valor de
1 es por defecto, podemos ampliar ese valor o incluso usar negativos para hacer un
efecto de espejo.
ScaleY: Cambiamos la escala en el eje y del objeto. Tambin podemos voltear la
instancia con valores negativos.
Rotation: gira la instancia respecto su origen X/Y. Su valor se mide en grados.
Alpha: para medir su transparencia, con valor entre 0 y 255, siendo 255 totalmente
opaco y 0 totalmente transparente.
Colour: con un valor predeterminado de blanco, dejar la instancia tal cual, pero
con cualquier otro valor la colorear mezclandolo con el sprite asignado.
Flip X: Har un efecto de espejo, que es lo mismo que hemos comentado con
ScaleX al poner un valor de -1.
Flip Y: Igual que la anterior, pero voltendolo verticalmente.
Tambin podemos cambiar los valores de escalado de una instancia haciendo click en ello y
arrastrando una de las esquinas del recuadro que aparece.
Check Delete Underlying: cuando colocamos instancias en la room, es posible que estn
una encima de las otras, poniendo en la parte superior la ltima. Si no nos interesa que
se haga as, marcando esta opcin eliminaremos las instancias que estn en la misma
posicin. Para saber si una instancia est encima de otra se mirar si colisionan sus
mscaras.
Shortcuts: en la parte inferior de la pestaa vemos los atajos que podemos combinar
con el ratn y el teclado para hacerlo todo ms fcil. Vemos que podemos alinear a la
grid, usar la seleccin mltiple, acercar o alejar con la rueda del ratn
Tiles o baldosas
Ya hablamos de los Tiles cuando comentamos cmo funcionan los fondos en Game Maker.
Ahora vamos a ver cmo lo aplicamos a nuestro juego.
En esta pestaa vemos como trabajan los tiles. Antes de nada, hay que elegir un fondo que
hemos preparado para que funcione con baldosas, marcando el check Use as tile set, y nos
aparecer la previsualizacin del fondo en la misma pestaa, con un cuadrado o rectngulo
marcado. Si hacemos click en la imagen, vemos que el cuadrado cambiar dependiendo de la
zona donde pulsamos, que es como hemos definido los tiles en el fondo (altura, anchura,
separacin, etc). Una vez elegida la zona que nos interesa, ya podemos colocarlo en la room,
dnde dibujar ese trozo de fondo que tiene marcado. Si ya existen azulejos en la room en el
187
www.aprendegamemaker.com
Hemos comentado que existe una profundidad en los azulejos, que es el nmero que vemos
en la pestaa, informado como una capa. Podemos definir capas o diferentes profundidades,
nos pone por defecto el valor 1000000, para definir una profundidad detrs de todas las
188
www.aprendegamemaker.com
instancias y objetos. Podemos aadir nuevas capas de profundidad con el botn Add, y as
tener varias capas para los tiles que se puedan solapar en la misma posicin. Estos valores
de profundidad tambin influyen con los que hemos definido en los objetos. Por ejemplo,
por defecto un objeto tiene undepth de 0, si creamos una capa para los tiles de -100, estos
quedaran por encima de ese objeto.
Si eliminamos una capa eliminar todos los tiles aadidos con esa capa. Con el botn Change
cambiamos el valor de profundidad, y si esa ya existe con tiles, se fusionarn todos.
Vistas
En esta pestaa encontramos una de las opciones ms importantes a la hora de configurar
nuestro juego en la room. Las views y vistas son un sistema para dibujar slo una parte, o
varias, de la room en diferentes lugares de la pantalla. Tambin podemos mostrar slo una
parte de la room que cubre toda la pantalla, como en muchos juegos de plataformas (que
adems, la vista sigue al personaje principal) o los juegos de rol. En juegos de dos jugadores
podemos configurar la pantalla para dividirla donde cada jugador ve su parte.
Cuando definimos la vista, tenemos dos grupos de valores, donde pone View in room y Port
on screen. Aunque los valores de X, Y, W, H son iguales en cada grupo, se refieren a cosas
diferentes. En la primera opcin, definimos la vista, el rea de habitacin que vamos a
mostrar en pantalla. en la segunda opcin definimos el puerto, que es el rea de la pantalla
donde vamos a dibujar la visto. Veamos un ejemplo.
Podemos tener una room de 50003000, pero no nos interesa mostrarla completa, porque
es un juedo RPG. Definimos la vista de 640480 en la room, y establecemos el puerto a
189
www.aprendegamemaker.com
320240. Cuando activamos las vista podemos ver un marco en la room de como queda, con
el tamao de 640480 vemos el trozo que mostrara. Y que veremos cuando ejecutamos el
juego? Pues lo veremos al tamao que hemos definido en el port (podemos decir que es un
zoom de la vista), es decir 320240. Podramos duplicar el tamao de la vista en el port sin
tocar el rea que queremos mostrar.
Estos tamaos que hemos comentado corresponden a los valores de W (ancho) y H (altura).
Tambin podemos mover inicialmente la posicin inicial de la vista con los valores X/Y.
Como ya hemos comentado, podemos tener varias vistas activas, y jugar con el port para
mostrarlo. Por ejemplo, podemos tener una vista que muestra una parte de la room y otra
que la muestra entera, pero con un port muy pequeo y utilizarlo de mapa. Con los valores
X/Y del port podremos colocarlo donde queramos.
Para que la vista se mueva, le podemos decir un objeto de referencia, con el fin que siga ese
objeto (con la vista centrada). Se puede hacer fcilmente eligiendolo de la lista en la opcin
Object following. Si hay varias instancias slo elegir una de ellas. La vista se mover junto
con el personaje, aunque podemos definir cuando empieza a moverse con los valores Hbor y
Vbor. Por ejemplo, si definimos esos valores con 64, la vista no empezar a moverse y seguir
al personaje hasta que ste llegue a 64 pxeles del borde de la vista.
Para finalizar, podemos indicar a qu velocidad se mueve la vista, con los valores Hsp y Vsp.
Por defecto tiene un valor de -1, que significa que se mueve al instante en que se mueve el
objeto seleccionado. Con un valor de 0 la vista no se mover en absoluto, y con un valor
positivo la vista seguir al personaje con ese valor.
Fsica
Las opciones que nos ofrece trabajar con fsicas en nuestros proyectos nos ayuda a crear
ms realismo a nuestros juegos. Ya hablamos brevemente de como usar la fsica en los
objetos, ahora vamos a verlo en las rooms.
Para que las variables de fsica tengan efecto en la habitacin, lo primero de todo es activar
la primera casilla, dnde pone Room is Physics World. Ahora podemos modificar las
propiedades bsicas, que es la direccin de la gravedad y la fuerza que se mide en pxeles.
Para los parmetros ms avanzados ya usamos funciones especficas de GML, pero con estos
pequeos cambios ya tenemos nuestra room preparada para el uso de physics.
190
www.aprendegamemaker.com
Como siempre, le damos un nombre nico a nuestro fuente, habitualmente con prefijo fnt_,
para as identificarlo en nuestro juego. Despus elegimos una fuente de la lista que aparece,
que son las que hay definidas en el ordenador. Ms abajo podemos configurar el tamao, la
negrita y la cursiva, para activarlo o no. Tambin podemos decidir elanti-aliasing, que es el
suavizado de bordes que utilizar.
A la derecha vemos el rango de letras que utilizar, y se ve una previsualizacin de como va
quedando dependiendo de las propiedades que vayan cambiando.
El rango de la fuente
Por qu hay que decidir un rango de la fuente? Game Maker transforma la fuente en una
imagen con todas las letras, as se asegura que exista dnde se vaya a ejecutar el juego. Por
eso, si vamos a usar una fuente slo para mostrar la puntuacin, no es necesario tener las
letras almacenadas como imagen, solamente los nmeros.
Una fuente tiene habitualmente 256 caracteres, pero solo usamos una pequea parte de
ellos. Por ejemplo, si usramos nmeros usaramos solo 10. Para saber el rango que
191
www.aprendegamemaker.com
debemos usar, borramos el actual con el botn Clear all y le damos al botn con el smbolo
+. Abrir la siguiente ventana:
el rango normal con las opciones ms estndar, letras, nmeros y caracteres como ! ?.
el rango dgitos con los nmeros.
el rango letras slo con letras.
y todo el rango.
Si elegimos normal vemos que aparece del 2 al 127. Por qu? Porque son los caracteres
ASCII asociados a las letras. Para entenderlo mejor, echad un ojo a la Wikipedia y mirad los
carcteres imprimibles ASCII.
Tambin hay dos botones interesantes, con el texto From Code y From File. En el primero
analiza todos los textos que tenemos en nuestro proyecto de Game Maker y pone el rango
de las letras que usamos. En la segunda opcin lo hace con un fichero de texto. As nos
aseguramos que solo usaremos los necesarios.
192
www.aprendegamemaker.com
Grupos de textura
Con las opciones de pago de Game Maker podemos gestionar nuestras texturas de
imgenes, que explicaremos ms adelante. En una fuente podemos elegir en cul grupo de
textura se guardar, ya que hemos dicho que se transformarn a imgenes.
Por lo que hemos visto, un recurso de fuente viene con el tipo de letra y su tamao. Eso
significa que si queremos la misma fuente con diferente tamao, debemos de aadir dos
recursos. Lo habitual es usar el recurso fnt_Arial_12 y tambin tener el otro tamao como
fnt_Arial_16.
Hasta aqu hemos hablado de todo lo relacionado con las fuentes, uno de los recursos ms
sencillos de usar. Como resumen, indicar que no nos tenemos que preocupar si quin
ejecuta nuestro juego tiene o no la fuente, ya que la crea como imagen. Por contra, si
queremos usar la misma fuente pero con tamao distinto, Game Maker la trata como otra
fuente diferente. Al menos para usar distintos colores no hace falta tratarla as. Hay que
valorar usar un rango adecuado para no aadir ms tamao a nuestro juego.
Veremos en posts prximos como usar las fuentes mediante cdigo GML, y ejemplos en las
acciones de dibujo de texto que ya hemos visto.
193
www.aprendegamemaker.com
El editor de paths
Para crear una nueva ruta, podemos ir a la opcin de men Resources Create Path, o desde
el botn derecho en el rbol de recursos. Nos abrir el editor de paths, que es la ventana
que mostramos a continuacin:
194
www.aprendegamemaker.com
Para poder seleccionar el que queramos y modificar su posicin, solo hay que hacer click en
la lista y luego moverlo arrastrando en la ventana dnde ms nos interesa.
Barra de herramientas
195
www.aprendegamemaker.com
En la parte superior tenemos una barra de herramientas con una serie de botones que
vamos a detallar:
Confirmar: Cierra la ventana del editor y guarda los cambios hechos. Como no pregunta
si queremos guardar, sino que lo hace automticamente, tenemos que tener cuidado
con los cambios hechos.
Deshacer: deshace solamente el ltimo cambio.
Acciones de puntos: Estos botones cambian todos los puntos del path, con acciones
especficas. Estas acciones son:
Borrar todo el path. Para empezar a crearlo de nuevo.
Invertir camino. Vemos que el punto de origen va cambiando de todos los que
hemos aadido.
Desplazamiento. Mueve el path entero a una distancia horizontal o vertical de
pxeles.
Efecto espejo horizontal.
Efecto espejo vertical.
Rotar. Definimos un ngulo y cambia todos los puntos respecto el centro del path.
Escalar. Mediante un valor de porcentaje podemos ampliar o reducir la ruta
definida.
Acciones de visibilidad: permite encuadrar la vista que tenemos con el path que
estamos haciendo, movindola en algn lado o centrndola.
Acciones del editor: aqu podemos cambiar el tamao de la grid, para dibujar mejor
nuestra ruta, o seleccionar una room concreta como plantilla para dibujar nuestro path.
Si ya tenemos una room definida, poder dibujar la ruta con la room de fondo es super
til para ver como queda.
196
www.aprendegamemaker.com
Diferentes opciones de path con los mismos puntos. La primera es con lneas rectas, la segunda con precisin 2 y
la ltima con precisin 8.
Barra de informacin
En la parte inferior de la ventana tenemos una barra de informacin, al igual que nos
podemos encontrar en otros editores como el editor de rooms. Veremos las coordenadas
X/Y del ratn, as como el rea visible de la room. Tambin vemos las coordenadas de la ruta
comparadas con el rea de la room. As podemos ver que rea ocupa comparado con el
tamao total de la habitacin.
197
www.aprendegamemaker.com
Hemos comentado al principio que existen acciones especficas para asignar una ruta a un
objeto y definir qu hace con esa ruta, cuando empieza, si se para, si cambia de velocidad
Aunque para la mayora de casos es ms que suficiente con estas acciones, con el lenguaje
GML no solo podemos variar estos comportamientos, sino que tambin podemos variar los
caminos definidos por cdigo. Podremos crear un ruta desde cero, aadir puntos, cambiar
puntos ya definidos, mover toda la ruta, etc Todas las acciones del editor podemos
hacerlas en mitad de nuestro juego, as que las opciones son infinitas.
198
www.aprendegamemaker.com
Un par de ejemplos
Por ejemplo, imaginemos que hacemos un juego arcade de naves, y queremos que a los 2
segundos de empezar el juego aparezca un enemigo, al cabo de 5 segundos 3 enemigos ms,
etc. Podemos crear una alarma por cada enemigo activadas con diferentes steps, o una
alarma que vaya cambiando de tiempo de activacin cada vez. Pero es mucho ms sencillo
crear un timeline, asignarle en cada momento los enemigos que se van a crear y ejecutar el
timeline al principio de la room.
Otro ejemplo, imaginemos que hacemos en un juego RPG que un personaje se mueva de la
siguiente manera: 20 steps hacia la izquierda, 15 hacia arriba, 20 steps hacia abajo y despus
de hacer eso 3 veces seguidas se pare. Se nos ocurre varias formas de poder hacerlo: una es
definiendo un path, y controlando cuando queremos que se pare definitivamente. Otra
mediante alarmas, programando muy bien los movimientos que hay que hacer. Y la manera
ms sencilla, con un timeline, definiendo en cada momento cuando tiene que cambiar de
direccin y finalmente parar.
199
www.aprendegamemaker.com
Aadir. Con esta opcin agregamos un momento en la lnea de tiempo. Aparecer una
ventana para indicar el momento, es decir, el nmero de step desde que se inici el
timeline (tal y como hemos comentado antes). Una vez aadido ese momento en la
200
www.aprendegamemaker.com
Acciones en el timeline
No hay mucho ms que comentar con las acciones en el timeline. Al estar relacionado un
timeline con el objeto, todas las acciones estn relacionadas con ese objeto (movimiento,
gravedad, etc). Tambin podemos aadir cdigo GML, de esta manera podemos ampliar
todo lo posible las posibilidades de aadir complejidad a nuestro objeto.
Y hasta aqu todo lo que se puede hacer con las lneas de tiempo, un recurso muy til para
muchos casos que nos podemos encontrar y que puede ser difcil de programar si usamos
alarmas.
201
www.aprendegamemaker.com
Hay una serie de constantes o macros que vienen definidas en el sistema, por tanto, Game
Maker nos proporciona para su uso. As entenderemos mejor porque se definen esas
constantes.
202
www.aprendegamemaker.com
Para definir una macro, podemos ir como siempre al men Resources Define Macros. Se
abrir la siguiente ventana:
203
www.aprendegamemaker.com
ordenarlas con el botn Sort. Tambin podemos borrar una macro con el botn Delete y
borrar todas las que hemos creado con Clear.
Tambin tenemos otros dos botones interesantes, para aadir y guardar macros en un
fichero. Si ya tenemos macros definidas de otros proyectos, podemos guardarlas con el
botn Save y recuperarlas con el botn Load. Si ya tenemos macros definidas se aadirn al
final. El fichero que se ha generado es un fichero de texto sencillo, que se puede abrir en
programas como el bloc de notas o Notepad++. Os puede interesar editar ese fichero para
luego cargarlo, ya que el formato es muy sencillo. Cada macro se compone de una lnea,
donde vemos algo parecido a NAME = VALUE.
204
www.aprendegamemaker.com
Scripts
Hemos hablado de los principales recursos que podemos utilizar en nuestros juegos:
imgenes que utilizamos para los fondos o los objetos que programamos, sonidos,
habitaciones dnde colocar los objetos Ahora ya tocara empezar a usar cdigo GML, ya
que hemos visto cmo creamos eventos y acciones.
Pero antes de mirar el lenguaje propio de Game Maker Studio, debemos de pararnos un
momento para ver que son los scripts. Game Maker tiene un montn de funciones que
podemos utilizar, pero es posible que en algn momento necesitemos crear nuestras propias
funciones, para utilizarlos en diferentes sitios como en objetos, rooms, etc. Estas funciones,
que las usamos para hacer cosas especficas, las aadimos en el rbol de recursos, en la
carpeta de scripts.
Qu es un script?
Qu e sun script en Game Maker? Un script es un trozo de programa, utilizando el lenguaje
GML para escribirlo (lo iremos aprendiendo poco a poco, viendo como se utiliza y poniendo
ejemplos). Aunque ahora no entraremos en detalle para explicar qu son los scripts.
Un script es posible que acepte valores de entrada, que se almacenan en variables, as que
puede ser un nmero, un texto, sprites, etc. Estos valores se llaman argumentos o
parmetros. Por ejemplo, si creamos el scriptdibujar_barra_energia, unos posibles
argumentos puede ser la posicin, X/Y.
Para llamar a un script, tenemos una accin especfica llamada Execute Script, y tambin
desde el cdigo GML escribiendo tal cual la funcin con parntesis. Si tienes argumentos, lo
pondremos dentro de esos parntesis separados por coma. Por ejemplo
dibujar_barra_energia(x, y).
Al igual que un script puede recibir parmetros de entrada, un script puede devolver un
valor. Por ejemplo, imaginemos que tenemos varios objetos que luchan entre ellos, cada
uno con su fuerza y resistencia. Crearemos una variable de fuerza y otra de resistencia, que
variar dependiendo de cada objeto. Cuando choquen dos objetos, veremos quien gana
dependiendo de los valores de cada uno. Podemos crear un script que compruebe quin
gana y que devuelva el resultado.
205
www.aprendegamemaker.com
Crear un script
Para crear un script nuevo, como siempre, desde el men Resources Create Script. Nos
aparecer una ventana similar a sta:
script aparece un campo de name, mientras que con Execute code nos referimos a
una accin de un evento y no hace falta ponerle un nombre.
206
www.aprendegamemaker.com
Damos al script un nombre nico para todo el proyecto, algo que sea fcil de recordar.
Podemos usar las primeras lneas para describir qu hace exactamente y si tiene argumentos
o no, y una breve descripcin de cada uno de ellos.
La ventana se divide en tres partes: la barra de herramientas con botones para facilitar
algunas acciones, la parte principal donde escribimos el cdigo y la barra de informacin,
que nos detalla en qu lnea y columna estamos, algunas teclas especiales activadas que nos
sirve a la hora de escribir, como la tecla <INS>, el tamao de la fuente y por ltimo
informacin adicional si estamos escribiendo una funcin en concreto. Ahora veremos un
poco los botones de la barra de herramientas, para ver que acciones podemos hacer.
Confirmar: cerrar el editor actual, sin preguntar, y guarda los cambios que hemos
hecho.
Cargar un script: abre una ventana para elegir un fichero de texto que hemos guardado
anteriormente. Reemplazar el cdigo que hayamos escrito en la ventana.
Guardar script: guarda el script que estamos viendo en un fichero de texto.
Imprimir: abrir una ventana estndar para seleccionar la impresora y sus propiedades
e imprimir el cdigo actual.
Deshacer: deshace la ltima accin, con un nmero limitado de 16 acciones.
Rehacer: si hemos utilizado el botn anterior, podemos rehacer las acciones con el
mismo lmite que hemos comentado.
Cortar: corta el texto seleccionado y lo almacena en el portapapeles.Luego lo podremos
pegar en otro script, recurso o programa externo.
Copiar: Lo mismo que el anterior, pero en vez de cortar lo copia.
Pegar: Pega texto almacenado en el portapapeles.
Buscar y reemplazar: se abrir un panel lateral para buscar y/o reemplazar texto en el
cdigo. Luego explicaremos como funciona en detalle.
Revisar sintaxis: Este botn puede activar o desactivar el corrector de sintaxis. Si est
activado, nos resaltar en rojo, configurado por defecto, y aparece un mensaje en la
parte inferior del cdigo explicando cul es el problema. Eso no significa que nuestro
juego no pueda producir errores, pero es la primera fase parap oder corregirlos.
207
www.aprendegamemaker.com
Atajos de teclado
Aunque no lo explican en ningn lado, podemos conocer algunas combinaciones de tecla
que nos puede facilitar escribir cdigo. Muchas son estndar, como cortar con <Ctrl> + <X> o
buscar con <Ctrl> + <F>, pero algunas son propias del editor. Vamos a verlas:
Con la tecla <F2>, nos aparecer una ventana para escribir algunos mtodos y
fragmentos ms utilizados. Estas opciones son las que vemos en la siguiente imagen
208
www.aprendegamemaker.com
Sabemos que con la tecla <F1> nos abrir la ventan de ayuda del programa, pero con la
tecla <F12> nos abrir la ayuda exacta del mtodo en que est posicionado el cursor (si
existe ese mtodo).
La ventana de autocompletar aparece automticamente cuando hacemos una pequea
pausa al escribir. La podemos forzar con la combinacin <Ctrl> + <Espacio>.
Pestaas de scripts
Es posible que si nuestro juego es muy grande tengamos muchos scripts, y aunque lo
organicemos en el rbol de recursos con subcarpetas, puede ser algo catico gestionar y
buscar alguno. Por eso han creado la posibilidad de crear pestaas dentro de un script, como
si fuesen fichas. Veamos cmo funciona.
Imaginemos que tenemos un objeto obj_player, que tiene un script de movimiento, otro que
comprueba colisiones y otro para dibujar (con varios mtodos draw). Esto claro que tenemos
tres o ms scripts relacionados con el mismo objeto o temtica, as que lo habitual es
ponerlo dentro de una subcarpeta. Pero tambin podemos hacer una cosa, teniendo un
script de base o de partida, aadir el resto de scripts como si fueran pestaas. Los scripts
funcionarn de la misma manera, la nica diferencia es que no lo vemos en el rbol de
recursos sino que estn todos encapsulados en el nico script de base que si podemos ver.
Para crear un nuevo script hijo, hacemos click en la pestaa vaca que siempre encontramos
en la derecha de la pestaa actual, y a partir de ese momento funcionar igual que si fuera
otro script (aadirle un nombre nico, cdigo GML, etc).
Cdigo de colores
Cuando empecemos a escribir cdigo, veremos que los colores cambian dependiendo de si
son objetos que existen, variables del sistema, funciones, etc. Estos colores sirven para
ayudar en la escritura y evitar muchos errores. Si queremos cambiar el cdigo para mostrar
colores diferentes, podemos cambiarlo en las Preferencias del sistema.Tambin podemos
apagar los colores con la tecla <F10> tal y como hemos comentado.
209
www.aprendegamemaker.com
Vemos que en el panel lateral podemos escribir arriba la cadena a buscar. Al hacerlo, en el
cdigo vemos esa cadena subrayadas con un color amarillo. Tambin vemos las opciones de
case sensitive, para tener en cuenta las maysculas y minsculas, importante para el nombre
de variables y funciones, y Whole word only, para buscar palabras completas.
Tenemos unos botones de navegacin para ir a la parte del cdigo que estamos buscando,
son los botones de previous, next, first y last.
Si queremos reemplazar texto, tenemos la seccin inferior del panel. Respecto el texto
buscado, podemos poner el texto que queremos reemplazar. Tambin tenemos los mismos
botones de navegacin, para poder reemplazar el texto conforme va encontrando el texto
buscado. Tenemos un botn ms llamado Replace All para reemplazar todo el texto que ha
encontrado sin necesidad de navegar, adems de la casilla Replace in all tabs para hacerlo en
todos los scripts que tenemos como pestaas.
210
www.aprendegamemaker.com
Todo esto no tiene porque detectarlo el editor de Scripts. Por ejemplo, si escribimos
if (a ==0) {
a++;
Si no hemos cerrado con llave el if, esto lo detecta fcilmente el editor y nos avisa. Estoy
hablando de errores cuando ejecutamos nuestro juego, y que nos ocupar practicamente el
80% del tiempo de programacin. Hay que corregir todos los errores que se nos ocurran!
Cuando pasa esto, es necesario usar las herramientas de depuracin de Game Maker Studio.
Tenemos varias opciones que nos puede ayudar a ver esas inconsistencias en nuestro
cdigo, desde funciones que slo sirven para detectar estos errores hasta un modo
depuracin al ejecutar nuestro juego.
Vamos a ver todas las opciones que nos ofrece Game Maker Studio para poder corregir
errores.
211
www.aprendegamemaker.com
a mi me ocurre mucho cuando uso una variable que todava no se ha creado (por ejemplo en
el evento Step ). Parece que el mensaje no aclara mucho que est pasando, as que
vamos a descifrar o traducir que significa.
En el primer prrafo nos dice que es un error FATAL, indicndonos el objeto, el evento y la
accin dnde ocurre. De esta manera podemos buscar el fallo.
Luego vemos con ms detalle dnde puede ser el error: nos indica que es al dar valor a una
variable, nos indica la instancia, con un nmero mayor a 100000), y la lnea en concreto
dnde ocurre.
Como corregimos el error? Saber dnde falla puede indicar que se puede corregir en esa
misma lnea, pero no tiene porque ser as. En este ejemplo, se soluciona creando la variable
en el evento Create .
Al final de la ventana tenemos tres botones. El botn Abort, para cancelar la ejecucin de
nuestro juego y as corregir el error, el botn Copy para copiar el error al portapapeles y el
botn Clear que borra el mensaje de error de la ventana.
Este mismo error se reproducira cuando creamos un archivo ejecutable, sea cual sea el
dispositivo, Windows, iOS, Android, etc. Sera fcil de corregir, pero podemos tener otros
errores no tan sencillos de ver. Por ejemplo, un problema de rendimiento al grabar un
fichero INI en un evento Step o Draw . Para ello tendremos que ejecutar nuestro
juego en modo debug, pulsando el correspondiente botn o con F6. Veremos que en
212
www.aprendegamemaker.com
nuestro juego aparece una serie de informacin adicional que podemos usar para ayudarnos
en que momento el rendimiento puedo fallar.
En la barra vemos la cantidad de memoria, la potencia dela CPU y la GPU (la parte grfica)
del juego en uso. La barra se compone de varios colores y de un tamao que va variando. El
tamao indica el tiempo que requiere uno de los parmetros comentados, no hace falta
aclarar que cuanto mayor sea la barra peor rendimiento tendremos. Vamos a analizar ahora
los colores:
El verde indica que hay un perifrico con entrada y salida. Por ejemplo, el teclado,
ratn, un pad o incluso funciones de red.
El gris es el tiempo que necesita para borrar la pantalla en cada evento Draw .
El rojo oscuro es el tiempo que tarda la GPU para borrar las imgenes en memoria.
Aparte de la barra con los diferentes colores que podamos encontrar, tambin tenemos ms
valores cerca de esa barra.
Los FPS (frames por segundo). Es una referencia de la velocidad de tu juego. Aunque
hablamos de la velocidad, no tiene nada que ver con la velocidad de la room que
213
www.aprendegamemaker.com
definimos en el editor de rooms, y que por defecto est a 30 steps por segundo, es
decir, un valor fijo. Podemos ver que este valor puede variar mucho dependiendo de
la sesin del juego en s: instancias, coste por objeto, etc. Cuanto mayor sea este
valor, ms fludo ir el juego. La ventana del compilador, que hablaremos ms
adelante, informar del valor mnimo, mximo y promedio de este valor cuando
cerramos el juego.
Lotes de vrtices. Este nmero es muy tcnico, es la cantidad de veces que enviamos
grficos a la GPU (por lotes). Imaginemos la GPU como si fuese la memoria RAM, una
vez hemos cargado los grficos podemos usarlos rpidamente, pero si se necesitan
otros debemos volver a cargar los nuevos. Hacer eso puede afectar a la optimizacin
del juego, as que este nmero tiene que ser muy bajo, igual que la opcin anterior.
Cada vez que se cambia una fuente, un color o algo que afecta de manera global a
como pintamos en nuestro juego hay que enviar un nuevo lote, as que lo suyo es
limitar ese nmero todo lo que se pueda.
Como vis, es posible ver, de una manera muy grfica, dnde podemos tener problemas de
rendimiento. Adems, tenemos la funcin show_debug_overlay() os permite activar esta
barra en cualquier momento, as que la podramos programar para mostrarla en algn lugar
determinado.
214
www.aprendegamemaker.com
Esto se hace para aumentar el rendimiento, pero es verdad que cuando transforma esos
datos tarda un poco en hacerlo, as que Game Maker Studio solo lo hace cuando cree que es
necesario. Por ejemplo, si no aadimos ms sprites, cada vez que ejecutamos nuestro juego
no volver a cachear los sprites porque ya estn generados.
Pero es posible que nos encontremos que esa cach se haya quedado obsoleta o corrupta:
un sonido que se reproduzca mal, los grficos no se ven bien, etc. Antes de pensar cualquier
cosa, lo mejor es borrar la cach para que vuelva a generarla. Para borrarla, tenemos un
Mdulo de depuracin
Si queremos encontrar y corregir errores de nuestro cdigo GML, debemos usar el mdulo
de depuracin. Esta herramienta nos permite parar la ejecucin en una parte concreta del
cdigo, consultar las variables del objeto (propias y del sistema) o las globales, etc. La
ventana tiene una apariencia parecida a sta:
215
www.aprendegamemaker.com
216
www.aprendegamemaker.com
Paso a paso para salir. Siguiendo con el ejemplo, una vez hemos entrado en el
script, si pulsamos este botn lo ejecutara completamente y volveramos al evento
desde dnde lo hemos llamado.
217
www.aprendegamemaker.com
En ese momento podemos seguir ejecutando nuestro juego con los botones que
hemos mencionado anteriormente, lnea a lnea, ejecutar hasta el siguiente punto,
etc. Podemos aadir otros puntos de interrupcin en ese momento del cdigo, y si se
hace sobre la misma mnea de uno que ya existe lo eliminar (ya sea pulsando la
tecla <F9> o con el men contextual del botn derecho).
Tambin podemos abrir otras pestaas de cdigo desde la ventana de instancias, si la
tenemos abierta.
Globales. Desde aqu podemos ver las variables globales que han sido declaradas, as
el sistema sabe que existen, y sus valores. Podemos establecer el tipo de datos sobre
218
www.aprendegamemaker.com
Locales. Tambin nos interesa las variables locales, as que esta ventana muestra las
propiedades del step actual, la instancia actual dnde se est ejecutando el cdigo
(self) y la instancia other si fuese el caso (estamos en un evento de colisin, sino vale
lo mismo que self). Si entramos en un bloque with, entonces el apartado
de self cambiar de instancia por la del bloque with correspondiente.
Dentro de cada instancia, podemos encontrar las variables que hemos declarado o
las variables del sistema (como por ejemplo, image_index, x, y, etc). Las variables
que vemos fuera, son las que se han declarado como var, porque estas variables son
visibles para ese bloque de cdigo del evento, as que no pertenecen a ningn objeto
(instancia) y por eso se muestran aparte (recordad que se eliminan cuando salimos
de ese evento). Tambin estas variables podemos establecer un tipo de dato.
219
www.aprendegamemaker.com
locales. Con un click podemos establecer su tipo de datos, eliminarlo o borrar todo el
seguimiento. Con doble click podemos modificar su valor, as que podramos cambiar
de variable editando una de las marcas.
Instancia. Muy parecida a locales, vemos todas las variables de una instancia en el
momento de su ejecucin.
220
www.aprendegamemaker.com
Todas las instancias. Si nos interesa ver todas las instancias que hay en la room, con
sus datos correspondientes, disponemos de esta ventana.
Pila de llamadas. Aqu vemos la pila de todas las llamadas, desde los eventos a los
scripts, y ver cul es el momento desde dnde se llam.
Buffer. Esto es solo para cuando hemos creado un buffer en nuestro juego (por
ejemplo un juego multijugador). Tenemos opciones para ver las distintas columnas
221
www.aprendegamemaker.com
Profiling o perfil. Aqu podemos ver una serie de estadsticas que nos puede ayudar a
ver posibles problemas de rendimineto de nuestro proyecto. Veremos una visin
general de como se est ejecutando nuestro juego: tiempo necesario para ejecutar
un evento, cuantas veces se llama, etc. As podemos saber cul es el objeto, y evento,
que consume ms recursos y poder actuar sobre l.
En la parte superior de la ventana, vemos una serie de datos para poder interactuar y
controlarlos. Vemos un botn para activar o desactivar el perfil y el nmero total de
steps que se han producido, el tiempo total que ha trascurrido. Este valor se puede
cambiar a tiempo promedio de cada paso, si seleccionamos el botn que hay al lado
(marcado con una ). Tambin tenemos las columnas Time yCalls, que es el tiempo y
las llamadas de cada evento (decidiendo si queremos ver el total o el
promedio). Tambin existe el botn ejecutar el juego a velocidad mxima (con el
icono de una persona corriendo) para quitar la dependencia de la room con el
debugador y ver as los FPS reales.
Las otras dos opciones que vemos son para controlar que exactamente queremos ver
en esta ventana.
La primera opcin es para decidir como queremos ver los datos, si en forma de rbol,
222
www.aprendegamemaker.com
223
www.aprendegamemaker.com
Estado del renderizado. Aqu podemos ver cosas que afectan al evento Draw ,
como elegir un colo rd erelleno o el alpha del surface. Este dato solo se puede ver si
pausamos el juego.
Surfaces / Texturas. Sabemos, y sino lo digo ahora, que Game Maker Studio crea
pginas de textura para los grficos. Desde esta ventana podemos ver exactamente
las texturas generadas en esa ejecucin, para decidir si hay un grfico que se puede
cambiar a otra pgina.
224
www.aprendegamemaker.com
225
www.aprendegamemaker.com
No hace falta decir que no se parar si no pasa por esas lneas de cdigo. Por ejemplo, si
creamos el objeto y tenemos un evento Step , pensamos que seguro que pasar por ah.
Pero si el punto lo hemos puesto dentro de una clusula if, hasta que no se cumpla la
condicin no se detendr el programa.
Para aadir un punto de ruptura, podemos hacerlo con la tecla <F9> sobre la lnea actual, o
con la opcin que aparece en el men al hacer click con el botn derecho (la que
pone toggle breakpoint). Esto sirve tanto para cdigo GML como para una accin, aunque en
una accin veremos cdigo al depurar.
Los puntos de interrupcin se mantienen mientras probamos nuestro juego, excepto los que
aadimos en la ventana de depuracin. Si queremos borrar todos los puntos que hemos
creado, una manera rpida es en el men, la opcin clear all breakpoints.
Conclusin
Hemos visto al detalle como funciona el mdulo de depuracin de Game Maker Studio.
Tiene una gran cantidad de ventanas y herramientas para saber en todo momento los datos
que necesitamos ver, y as corregir posibles errores, ya sean de programacin o rendimiento.
226
www.aprendegamemaker.com
227
www.aprendegamemaker.com
utiliza esa variable para llamar a las funciones que pueden operar con ellas (aadir
elementos, eliminar, ordenar, destruir la estructura, etc.).
Todas las estructuras pueden almacenar cualquier tipo de valor, y podemos mezclar
nmeros y texto en la misma estructura.
Adems, al igual que tenemos la funcin is_array() para saber si una variable es de ese tipo,
tenemos la funcin ds_exists(), para saber si una variable es de una estructura de datos en
concreto.
Pilas
Existen estructuras de datos que son muy parecidas a las arrays, es decir, que es un listado
de valores. La principal diferencia es la manera en que aadimos valores, y sacamos o
eliminamos valores.
Por ejemplo, en las pilas se utiliza el sistema LIFO, o lo que es lo mismo, el ltimo valor en
entrar es el primero en salir. Imaginemos unos platos apilados, en el ejemplo tenemos claro
que el plato de ms abajo no saldr hasta que no se hayan vaciado los de arriba.
Os imaginis tener que gestionar eso con una array? No digo que no se pueda, pero
complicara mucho la gestin del cdigo, como hemos dicho ms arriba.
Si queremos apilar cosas en nuestro juego, como pueden ser monedas o programar alguna
mecnica de algn enemigo, ya sabemos que sta es la mejor opcin.
Colas
Al contrario que las pilas, las colas utilizan el mtodo FIFO para gestionar los valores, es
decir, el primero que entra es el primero en salir. Colas podemos imaginarnos muchas: la
228
www.aprendegamemaker.com
Listas
Podemos decir que las listas son como arrays de una dimensin, pero con funcionalidades
avanzadas. Debido a su flexibilidad podemos almacenar valores al final de la lista, pero
tambin al principio sin perder su orden, o incluso en una posicin especfica. Tambin nos
permite elegir ordenar la lista o mezclar los valores (muy til si queremos usarlas
para aleatoriedad).
Mapas
Los mapas es una de las estructuras de datos ms tiles. En una array, tenemos un ndice,
que es un nmero, para poder acceder al valor. Los mapas funcionan de una manera
parecida, pero ese ndice es una clave, que puede ser cualquier valor.
Lo mejor es verlo con un ejemplo. Los mapas se pueden utilizar para gestionar inventarios,
dnde los diferentes items seran las claves y la cantidad su valor. En un juego de rol,
podemos tener 250 de monedas de oro, 10 pociones, una espada, un hacha, etc Es decir, t
Con las claves podemos acceder directamente a esos elementos y su valor, pero no
podramos ordenar estos elementos. Lo que si que podemos es recorrer todo el mapa para
saber que elementos tenemos.
Tambin hay que tener claro que hay una relacin de una clave-un valor, as que no
podemos tener dos claves con el mismo valor, ni una clave con dos valores.
Para acabar, tambin hay que comentar un detalle curioso: existen funciones especficas
para guardar y leer un mapa de manera encriptada, para guardar informacin sensible como
pueden ser contraseas, compras hechas en la aplicacin, etc.
Colas de prioridad
229
www.aprendegamemaker.com
Funcionan de una manera muy parecida a las colas que hemos visto antes, pero cuando
aadimos un valor le damos tambin una prioridad. En vez de sacar el valor que primero
hemos aadido, sacaramos el valor dependiendo de la prioridad que tenga, sea el mximo o
el mnimo.
Se pueden utilizar de muchas maneras, por ejemplo crear unas listas de usuarios con
puntuacin y utilizar esa puntuacin para gestionar niveles, partidas, etc.
Grids o rejillas
Al igual que como vemos en el editor de rooms, cuando lo dividimos en una grid, una
estructura de datos que sea una grid es una array de dos dimensiones, pero con funciones
avanzadas.
Estas funciones avanzadas sirven para poder trabajar con regiones dentro de la grid:
podemos aadir valores individuales a un rea, buscar valores en un rea rectangular (o
incluso circular), o buscar dentro de una regin el valor ms alto, el mnimo o hacer una
media.
Su utilidad puede radicar en usar esta estructura de datos para controlar que tenemos en
nuestra room, y utilizar las reas para ver si existen elementos, enemigos, crear laberintos,
etc.
Resumen final
Hemos hablado de las estructuras de datos que encontraremos en Game Maker: Studio. Hay
otras muchas que el programa no contempla, como pueden ser los rboles o los grafos, pero
con los 6 tipos que hemos visto podemos hacer muchas cosas.
230
www.aprendegamemaker.com
231
www.aprendegamemaker.com
Dejamos las opciones por defecto, y creamos un disco virtual. Yo he elegido la opcin VDI, y
despus he dicho que el tamao es fijo (con la opcin de 8 GB sobra para lo que queremos).
232
www.aprendegamemaker.com
233
www.aprendegamemaker.com
Actualizacin de Ubuntu
234
www.aprendegamemaker.com
Nada ms ver el escritorio de Ubuntu, nos parecer un mensaje que est desactualizado y
que podemos proceder a instalar la versin 15.04. Es curioso porque esa versin no est
para descargar. Si siguiramos los pasos que nos sugiere Game Maker en la Knowledge Base,
tendramos problemas en el primero, as que yo he actualizado a Ubuntu 15.04 Tarda un
poco pero lo hace correctamente.
Ahora le damos al primer botn de la izquierda y buscamos el terminal para escribir una por
una todas las instrucciones que nos dicen en YoYoGames. Yo he podido instalarlas todas sin
ningn problema.
235
www.aprendegamemaker.com
Veris que se conecta a internet, descarga paquetes e instala. Al principio pide usuario y
contrasea para dar permisos y luego alguna validacin de si queremos instalarlo.
Ahora, apagamos la maquina virtual, porque debemos de configurar una cosa antes de irnos
a Game Maker Studio.
En Configuracin, en el apartado de Red, le damos al botn de reenvo de puertos.
236
www.aprendegamemaker.com
Activamos el puerto 22 para no tener problemas con Game Maker. En Nombre puedes
poner lo que quieras.
237
www.aprendegamemaker.com
Ya queda menos! En el men File Preferences y vamos a la pestaa Linux (recuerda que
funciona con una versin de Game Maker que hemos pagado). En Linux Host
Name ponemos 127.0.0.1. Porqu? Porque esa es la direccin IP local, la de nuestro
ordenador, estemos conectados en red (como puede ser internet) o no. En Linux User
Name y Linux Password ponemos los que configuramos antes.
238
www.aprendegamemaker.com
Eso si, va muuuuyyyy lento! Entiendo que la mquina virtual ejecuta bien el sistema
operativo, pero par aun juego, aunque sea muy simple, se ralentiza bastante (sera como
usar un emulador de Android o similar). Entiendo que si tuviramos un pc exclusivo para
Ubuntu funcionara correctamente.
Crear ejecutable de Ubuntu de nuestro juego
Ahora que vemos que toda la configuracin es correcta, podemos crear un ejecutable para
poder distribuir, y que prueben, nuestro juego en este sistema operativo. Vemos que genera
un paquete Debian con extensin .deb. Cuando lo intento hacer, me da un error que solo
acepta minsculas y ningn smbolo raro, refirindose al carcter _. Escribo el nombre del
paquete tal y como me dicen y me sigue apareciendo el error.
As que decido cambiar el nombre del proyecto, cuando lo importo, y lo pongo todo en
minsculas, y as si que me deja! Sinceramente, me parece un poco increble, pero tambin
estamos con una versin de Ubuntu que no es la oficial que dice Game Maker, as que es
posible que funcione bien en la otra.
Conclusin
Vemos que configurar Ubuntu en Game Maker Studio para probar tus juegos no es difcil,
pero tratndose de una versin no actualizada, nos da una serie de problemas. Adems, con
una mquina virtual, en Virtual Box, no podemos testear de verdad si nuestra juego funciona
(un poco como pasa cuando lo prob en Tizen, que al final ped un terminal). As que lo suyo
239
www.aprendegamemaker.com
240
www.aprendegamemaker.com
241
www.aprendegamemaker.com
que no te va a funcionar, ya que las libreras de Android van cambiando y Game Maker suele
adaptarse a las ltimas.
Pgina dnde encontrars las FAQ de YoYoGames
Por ejemplo, si actualmente ests con la versin 1.4.1763, para Android te pide:
1. Android SDK
Build Tools: 24+
APIs: 23+
Support Library: 23.2.1+
Support Repository: 35+
2. Android NDK (32/64 Bit depende de tu sistema operativo Windows)
Stable/Beta/Early Access: 12b
3. Java JDK
Stable/Beta/Early Access: 1.8 8u102 (32/64 Bit depende de tu sistema
operativo Windows)
Ya hablamos en su momento de la diferencia de la versin Stable, Beta y Early Access, as
que revisa que versin tienes ahora.
As que ya sabemos que versin buscar de cada cosa. Empezamos con el Java.
242
www.aprendegamemaker.com
Con la opcin de fichero zip es suficiente, ya que lo suyo es descomprimirlo en la carpeta raz
de tu ordenador, por ejemplo la unidad C:\.
Lo ideal sera que todo el contenido del fichero estuviese en una carpeta, en c:\android-sdk,
ya que Game Maker recomienda que la ruta no tenga espacios ni carcteres especiales. Una
vez hemos descomprimido el contenido, buscamos dentro y ejecutamos el fichero SDK
manager.exe.
243
www.aprendegamemaker.com
Nos aparecer una ventana con un montn de opciones. Nos dir lo que tenemos instalado,
lo que no y lo que hace falta actualizar. Ni se te ocurra marcar todas las
opciones! Recuerda lo que comentamos ms arriba en las Faqs, slo las opciones necesarias.
Las Android SDK Tools y las Android SDK Platform-tools puedes actualizar a la ltima versin.
Dentro de la versin API necesaria, slo necesitas lo que pone SDK Platform y Google APIs.
Luego en Extras busca la Android Support Repository y la Android Support Library.
Aqu te puedes encontrar con un par de problemas: primero la Android Support Library es
posible que no la veas, si no marcas la opcin de mostrar las libreras obsoletas.
Tambin puedes encontrarte que no puedas instalar alguna librera con la versin que toca.
Por ejemplo, la Android Support Repository viene con la versin 32, Game Maker Studio te
aconseja la 35 y solo est para actualizar la ltima, que es la 38. Cual ponemos? En este
caso podramos arriesgar a poner la ltima y quizs no pase nada, pero creo que es mejor
navegar por internet y buscar como poner la versin que toca de manera offline.
Tambin tenemos otras libreras que actualizaremos ms tarde, como la Google Play
Services o la Google Play APK Expansion library. Esas las dejaremos para configurar cuando la
necesitemos.
Una vez tengamos todas las versiones correctamente, debemos de tener una ventana
parecida a sta:
244
www.aprendegamemaker.com
245
www.aprendegamemaker.com
246
www.aprendegamemaker.com
247
www.aprendegamemaker.com
Primero de todo, necesitas activar el modo debug de tu mvil. Esto puede ser diferente
dependiendo del telfono que tengas, as que busca como hacerlo.
248
www.aprendegamemaker.com
Si no, nos dar algn error, que puede ser de cualquier tipo.
Aqu poco puedo ayudar, depender mucho de la configuracin del mvil que tengamos,
pero no suele dar muchos problemas esta parte. Ahora vamos a ejecutar un juego en el
mvil.
249
www.aprendegamemaker.com
Con el mvil enchufado mediante cable, slo hay que elegir el target de Android/Fire y
ejecutar, tal y como lo haramos en Windows. Para proyectos que pueden ser muy grandes,
recomiendo por temas de rendimiento la opcin Android/Fire YYC.
Y en principio ya tendramos nuestro juego funcionando en nuestro mvil. Posiblemente
tengamos instalado un YoYoRunner, que es la aplicacin que utiliza Game Maker Studio
para compilar los juegos e ir probando lo que vamos haciendo. Si usas tu mvil es muy
posible que ya tengas una tarjeta de memoria insertada, quizs otros mviles con ms
capacidad no sea necesario. Yo necesit poner una en mi dispositivo para que compilase
correctamente.
Cuando creemos el ejecutable definitivo, que tendr extensin .APK, si tenemos el mvil
conectado tambin instalar nuestro juego. Sino, siempre podemos escribir:
250
www.aprendegamemaker.com
251
www.aprendegamemaker.com
Con un SCM (sistema de control de versiones), te aseguras que puedes controlar todos los
cambios que se hace sin que se pierda nada. No voy a explicar en detalle como funciona Git,
si te interesa, y te debera de interesar, puedes hacer algn curso (yo hice uno en Udemy
sobre GitHub que est muy bien) o simplemente puedes leer en esta pgina como funciona
Git (en espaol). Yo slo voy a dar cuatro pinceladas para poder entender como funciona.
252
www.aprendegamemaker.com
tocando la misma parte del cdigo (para eso sera importante tener claras las tareas de cada
uno).
La ventaja de trabajar as es que no necesitas estar conectado para poder trabajar, adems
de poder ver todos los cambios hechos a un objeto (por ejemplo) sin necesidad de
conectarte a ningn sitio.
if (obj_player.x > 0)
if (obj_player.x > 0 and obj_player.y > 0)
vemos claramente que hemos modificado la lnea, porque hemos aadido una condicin
ms. Git detecta que esa lnea se ha modificado, pero lo que har es eliminar la lnea y
aadir la segunda como una lnea nueva. Puede parecer un poco confuso, pero de esta
manera es como puedes ver los diferentes cambios que hay en nuestro cdigo.
Un fichero en Git puede estar confirmado (o committed) que significa que los cambios se
han guardado, modificado (o modified) que significa que hemos modificado el fichero (como
el ejemplo anterior), pero si an no hemos confirmado los cambios estar preparado
(staged), que significa que hemos marcado el fichero para que en la siguiente confirmacin
se guarde. Tenemos que tener claro estos tres estados para saber en que momento nos
encontramos en el fichero y que no haya sorpresas (lo he guardado o no?).
253
www.aprendegamemaker.com
versin ms estable. Y todo esto sin pensar en hacer copias de seguridad porque ya lo
estamos haciendo.
As que ms o menos estos seran los pasos:
Clonamos un proyecto que tenemos en un servidor (luego veremos las opciones que
tenemos):
Trabajamos con nuestro proyecto clonado.
o Modificar cdigo.
o Aadir recursos.
o Eliminar recursos.
Vamos confirmando los cambios. todo esto en nuestro proyecto clonado.
Subimos los cambios al servidor.
Tambin podamos modificar directamente el proyecto del servidor, el repositorio remoto,
pero no es lo recomendable (y menos con Game Maker, ya que la estructura de ficheros y el
contenido no la conocemos y no es tn fcil como modificar un archivo HTML). Ahora
veremos como funcionan las ramificaciones, otra de las caractersticas potentes de Git.
Ramas en Git
Recuerda que cuando confirmamos un proyecto, lo que hacemos es una foto del estado
actual. Podemos decir que cada foto o confirmacin es un nmero de versin, aunque hablar
de versiones no es del todo correcto. Ahora imagina que quieres aadir una funcionalidad
nueva, un ejemplo sencillo en Game Maker sera crear una nueva room para aadir un nivel.
En este caso no estamos modificando ningn objeto o sprite, simplemente queremos probar
y disear un nuevo nivel. Eso lo podemos hacer como hasta ahora, o podemos hacer en
paralelo. Trabajar en paralelo es el equivalente a crear una nueva rama en nuestro proyecto.
Nuestro proyecto principal est en la rama master, y todos los cambios confirmados se
encuentran en esa rama.
254
www.aprendegamemaker.com
Creamos una nueva rama, aadimos la room nueva y creamos el nuevo nivel. Podemos ir
confirmando todos estos cambios sin que afecten al proyecto principal. Si luego decidimos
descartar ese nivel, simplemente olvidamos la rama (o la borramos). Si nos gustan,
fusionamos la rama con la principal.
Fijate que en la rama podemos confirmar varias veces, y al fusionar quedarn todos los
cambios como un commit en master. Alguien ha cambiado algo en los objetos? No pasa
nada, en el proceso de fusin o merge de las ramas, Git comprobar si hay algn tipo de
conflicto con los ficheros, si los hay habr que hacer algunas modificaciones a mano, poco
ms.
255
www.aprendegamemaker.com
Obviamente, podemos crear una rama de una rama de una rama, o varias ramas en
paralelo
pero tampoco tendramos que complicarnos mucho. Al final, tendramos que acabar siempre
en la rama master.
256
www.aprendegamemaker.com
proyectos son pblicos y privados. As que yo me decanto por BitBucket, dnde pondr
como proyectos pblicos todos los ejemplos de la web (poco a poco) y en privado todos los
juegos que har. De esta manera tambin lo usar como copia de seguridad, adems, como
he dicho antes, de poder probar funcionalidades nuevas sin miedo de perder parte del
cdigo.
257
www.aprendegamemaker.com
Ahora que ya lo tenemos configurado para Git, repasaremos antes de nada las opciones que
veremos a la hora de trabajar con un proyecto.
258
www.aprendegamemaker.com
Aadido: significa que se ha creado un nuevo recurso de cualquier tipo y hay que
aadirlo al repositorio. Se aadir en el momento que guardemos el proyecto (o
compilemos).
No versionado: si vemos este icono, el recurso no es reconocido por Git (o el SCM
que usemos). Luego veremos el men especial de Source Control para saber que
hacer.
Modificado: si cambiamos un recurso, aparecer este icono para saber que es
diferente el recurso del que tenemos en el repositorio Git.
Actualizado: nos indica que el icono est en la misma versin que la del
repositorio.
Conflicto: significa que tenemos un conflicto, lo ms habitual es que alguien ms
ha tocado el mismo recurso que t, y Git no puede resolver los cambios
automticamente. Desde Git habr que fusionar el recurso o editar manualmente el
archivo .GMX correspondiente.
Algunas opciones pueden dar un poco de miedo, pero tampoco hay de que preocuparse. Lo
habitual de un conflicto sera cambiar el origen de un sprite: en el repositorio est de una
manera, el compaero lo ha cambiado, y entre el commit que t has recuperado y el que se
ha hecho es diferente del tuyo: slo toca decidir cul poner. Tambin puede ocurrir con una
parte del cdigo, entonces hay que ver los cambios introducidos y fusionarlos.
Aparte de los iconos de cada recurso que nos indica en cada momento en qu va afectando,
al hacer click derecho sobre cualquiera del rbol de recursos nos aparecer un men
contextual con algunas opciones ms de las habituales (las habituales son aadir un recurso,
carpeta, eliminarlo, renombrarlo, etc.). Estas opciones son:
Add to Source Control Aadir al control de cdigo: esta opcin aadir un recurso
al repositorio. Cuando tenemos una opcin No versionada, tal y como hemos
comentado, podemos aadirlo con esta opcin.
Commit to Source Control Confirmar al control de cdigo: el recurso seleccionado
se confirmar al repositorio de Git. Si dentro del rbol de recursos tenemos una
carpeta, esta opcin le afectar a todos los recursos de la carpeta. Cada commit pide
un comentario para explicar los cambios aportados, y as podemos verlo en
cada grabacin.
259
www.aprendegamemaker.com
260
www.aprendegamemaker.com
Con Blame nos dice quin ha hecho los ltimos cambios del repositorio de un fichero
y Push y Pull son opciones si tenemos un repositorio en remoto. Si le damos al botn Edit
SCM Config que hemos comentado antes, vemos que podemos aadir todas las funciones
que queramos (de las tres pestaas, la ltima llamada Functions), en el apartado Aditional
Functions.
En el momento que queramos crear una rama o subir nuestro proyecto a un repositorio
remoto, debemos crear ms funciones adicionales que nos interesa.
261
www.aprendegamemaker.com
Resumen final
Hemos visto, y espero que tambin se haya entendido!, que es un sistema de control de
versiones y como funciona. Hemos decidido usar Git, principalmente porque es por el que
han apostado en Game Maker Studio 2, y nos da la oportunidad de configurarlo en Game
Maker Studio 1.4. Tambin hemos configurado Game Maker para que podamos usar un
proyecto con GIT, y hemos visto las distintas opciones que aparecen y que podemos hacer
con ellas.
En el prximo post veremos un tutorial de como usar un proyecto con un SCM y Git, y ver
como hacer una copia de seguridad en BitBucket. Cualquier duda podis preguntarlo en los
comentarios.
262
www.aprendegamemaker.com
Agradecimientos
Primero, quiero agradecer a la persona que inicialmente recopil todo el material en un
documento, y me facilit la posterior edicin que tienes en tus manos. Si te llega este
documento en tus manos, espero arrancar alguna sonrisa ^_^.
Segundo, a todos los lectores del blog, que son los que hacen que este proyecto siga
adelante. Espero que os pueda servir de ayuda para realizar todos vuestros juegos y, como
siempre digo, podis enviarme vuestras dudas, correcciones y sugerencias a travs de los
comentarios o el contacto del blog.
Y finalmente, a mi familia, por la paciencia que tienen y ofrecerme esos ratitos de tiempo
para que todo siga sobre ruedas.
Nota final
Recuerda que esto es una gua no oficial de GameMaker: Studio. YoYo Games y GameMaker:
Studio son marcas registradas con todos sus derechos reservados.
263