Game Maker

GAME MAKER Usando Game Maker Esta sección describe el uso básico de Game Maker. Explica la idea global detrás del pro

Views 1,481 Downloads 65 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

GAME MAKER

Usando Game Maker

Esta sección describe el uso básico de Game Maker. Explica la idea global detrás del programa, cómo añadir sprites, fondos y sonidos y cómo definir objetos con eventos y acciones y añadirlos a los cuartos. En esta sección se cubren los siguientes temas: Introducción Instalación Registro La idea global Un ejemplo sencillo La interfaz global de usuario Definiendo los sprites Sonidos y música Fondos Definiendo objetos Eventos Acciones Creando rooms Distribuyendo tu juego

Usando Game Maker

Así que quieres crear tus propios videojuegos Jugar juegos de computadora es divertido. Pero es más divertido diseñar tus propios juegos y que otros los jueguen. Desafortunadamente, no es fácil crear videojuegos para computadora. Los juegos comerciales de hoy en día normalmente se llevan de uno a tres años de desarrollo con equipos de entre 10 a 50 personas. Sus presupuestos alcanzan fácilmente millones de dólares. Y todas estas personas tienen bastante experiencia: programadores, diseñadores de arte, técnicos de sonido, etc.

¿Quiere decir que es imposible crear tus propios juegos para computadora? Afortunadamente no. Por supuesto que no debes esperar que puedas crear tu propio Quake o Age of Empires en unas cuantas semanas. Pero tampoco es necesario. Juegos más simples, como Tetris, Pacman, Space Invaders, etc., también son divertidos y son mucho más fáciles de crear. Desafortunadamente aún requieren de buenas habilidades de programación para manejar los gráficos, sonidos, la interacción con el usuario, etc. Es aquí donde aparece el Game Maker. El Game Maker ha sido creado para hacer mucho más sencilla la creación de ese tipo de juegos. Sin ninguna necesidad de programar. Una sencilla e intuitiva interfaz de arrastrar y soltar te permite crear tus propios juegos rápidamente. Puedes importar y crear imágenes, sprites (imágenes animadas), sonidos y usarlos. Tú defines fácilmente los objetos en tu juego e indicas su comportamiento. Puedes definir niveles atractivos con fondos deslizables en donde tome lugar el juego. Y si quieres control total sobre el juego existe un sencillo lenguaje de programación dentro del Game Maker que te pone al mando de todo lo que sucede en el juego.

El Game Maker se enfoca a juegos bidimensionales. Así que nada de mundos 3D como en Quake, aunque Game Maker incluye una funcionalidad reducida para gráficos en 3D. Pero no te desanimes. Muchos juegos importantes, como Age of Empires, las series Command and Conquer y Diablo usan tecnología de sprites bidimensionales, aunque parecen tridimensionales. Y diseñar juegos bidimensionales es mucho más fácil y rápido. Probablemente la mejor parte es que el Game Maker puede usarse libre de cargo. Y no hay ninguna restricción en los juegos que creas con él. Ninguna pantalla de publicidad, e incluso puedes venderlos si así lo deseas. Chequea el acuerdo de licencia adjunto para más detalles.

Este documento te dirá todo lo que necesitas saber acerca del Game Maker y cómo puedes crear tus propios juegos con él. Por favor entiende que, incluso con un programa como Game Maker, el diseño de juegos para computadora no es completamente trivial. Hay muchísimos aspectos que son importantes: el game play, los gráficos, los sonidos, la interacción con el usuario, etc. Comienza con ejemplos fáciles y te darás cuenta de que crear juegos es bastante divertido. También chequea los sitios Web: http://www.gamemaker.nl http://www.zonamakers.com http://www.comunidadgm.com

Instalación Probablemente ya lo hiciste pero por si acaso, aquí tienes cómo instalar el Game Maker. Simplemente ejecuta el programa gmaker.exe. Sigue las instrucciones en pantalla. Puedes instalar el programa donde lo desees pero mejor deja las opciones por defecto. Una vez que finalice la instalación, en el menú Inicio encontrarás un nuevo grupo de programas

desde el que puedes ejecutar el Game Maker y leer la documentación. Además del programa Game Maker también se instala la documentación, junto con el archivo de ayuda.

La primera vez que ejecutes el Game Maker se te preguntará si quieres ejecutarlo en modo Simple o Advanced (avanzado). Si no has empleado un programa de creación de videojuegos antes y no tienes experiencia como programador, usa el modo simple (selecciona No) En el modo simple se muestran menos opciones. Puedes cambiar

fácilmente al modo avanzado usando la opción en el menú File.

Dentro de la carpeta de instalación (por defecto C:\Archivos de Programa\Game_Maker6) tenemos varias carpetas adicionales:



examples: contiene varios juegos de ejemplo, para que los revises y/o modifiques.



lib: contiene varias librerías de acciones. Si deseas instalar librerías adicionales debes colocarlas dentro de esta carpeta.



sprites: esta carpeta está dedicada a contener los sprites que uses. La instalación incluye algunos sprites, pero en el sitio del Game Maker (http://www.gamemaker.nl), puedes descargar varios paquetes de recursos que contienen sprites, sonidos, y fondos adicionales.



backgrounds, sounds: carpetas similares que contienen las imágenes para los fondos y los sonidos.

Requisitos El Game Maker requiere una PC moderna con procesador Pentium y sistema operativo Windows 98, NT, 2000, Me, XP o superior. Tarjeta gráfica compatible con DirectX 8 con al menos 16 MB de memoria, resolución de al menos 800x600 y 65000 (16-bit) colores. También se requieres una tarjeta de sonido compatible con DirectX 8.0 o superior y que la versión 8.0 o superior de DirectX esté instalada en tu ordenador (Puedes bajar la última versión de DirectX del sitio de Microsoft: http://www.microsoft.com/windows/directx/.)

Al desarrollar y testear los juegos los requerimientos de memoria son bastante altos (por lo menos 64 MB y preferentemente más, dependiendo también del sistema operativo). Para ejecutar los juegos los requerimientos son menos severos y dependen del tipo de juego.

Registro Game Maker se puede usar gratuitamente. Sin embargo, la versión gratuita tiene algunas limitaciones y muestra un logo al cargar el juego. Para disponer de la funcionalidad total del programa, eliminar el logo de carga y contribuir al desarrollo del programa se recomienda encarecidamente que registres tu copia de Game Maker. Al registrar el programa obtendrás las siguientes opciones:



Eliminación del logo de Game Maker al cargar un juego.



Rotación, color blending y translucidez de sprites.



Acciones adicionales para música desde un CD, rotar texto o formas coloreadas.



Efectos especiales de sonido y sonido posicional.



Funciones avanzadas de dibujo, como polígonos texturizados.



Sistema de partículas para crear efectos de fuego, lluvia, explosiones,...



Funciones para gráficos en 3D



Funciones para crear juegos multi jugador para jugar en red.



Funciones para crear y modificar recursos (sprites, backgrounds,...) durante el juego.



Funciones para usar estructuras de datos.



Funciones para planificación de movimiento.



Posibilidad de extender aún más la funcionalidad de Game Maker usando DLLs.

La cuota de registro del Game Maker es de US $20 o de 15 Euros. Hay varias formas en las que puedes llevar a cabo el registro de tu copia del programa. La más fácil es usar el registro online usando un sistema de pago seguro con tarjeta de crédito o una cuenta PayPal. Alternativamente puedes realizar una transferencia a nuestra cuenta bancaria, enviarnos una money order o enviar efectivo. Puedes encontrar los detalles en el sitio de registro del Game Maker: www.gamemaker.nl/registration.html

Para registrar tu copia del Game Maker usa el sitio de arriba o selecciona Registration desde el menú Help. En la parte inferior de la ventana que aparece haz clic en el botón Registration. Serás llevado a nuestra página Web donde se indican las diferentes opciones de registro, incluyendo el registro online.

Una vez que tu registro ha sido recibido se te enviará un email con el nombre, clave y la información sobre cómo introducir la clave en el programa. Para introducir la clave, selecciona nuevamente Registration desde el menú Help. En la parte inferior de la ventana presiona el botón Enter Key. Introduce el nombre y la clave, y presiona OK. Si seguiste estos pasos correctamente el programa ya estará registrado.

Si posees una copia registrada de la versión 5 de Game Maker en tu ordenador puedes cambiar tu clave por otra válida para la versión 6. Para ello selecciona Registration desde el menú Help. A la izquierda del formulario verás el botón Convert a Version 5 Key (si no aparece es que no posees una versión registrada de GM o es que ya has registrado tu versión 6) Un texto explicativo te orientará para convertir tu

.

clave: lee las instrucciones cuidadosamente y pulsa el botón

La idea global Antes de ahondar en las posibilidades del Game Maker, sería bueno tener una idea general acerca del programa. Los juegos creados con el Game Maker se llevan a cabo en una o más habitaciones (rooms). (Las habitaciones son planas, no 3D, pero pueden contener imágenes con apariencia 3D). En estas habitaciones es donde colocas los objetos, los cuales puedes definir en el programa. Los objetos típicos son las paredes, objetos móviles, el personaje principal, enemigos, etc. Algunos objetos, como las paredes, sólo se encuentran ahí y no realizan ninguna acción. Otros, como el personaje principal, se moverán y reaccionarán a los comandos del jugador (teclado, ratón, joystick). Por ejemplo, cuando el personaje principal toca un enemigo podría ser eliminado. Los objetos son los ingredientes más importantes de los juegos creados con el Game Maker, por lo que hablaremos un poco más sobre ellos.

Primero que nada, la mayoría de los objetos necesitan alguna imagen para hacerse visibles en la pantalla. Tales imágenes son llamadas sprites. Un sprite no siempre es una sola imagen sino una serie de ellas que se muestran una tras otra para crear una animación. De esta forma parece que el personaje camina, que una pelota rueda, que una nave explota, etc. Durante el juego el sprite de un objeto en particular puede cambiar. (Así el personaje puede lucir diferente cuando camina a la izquierda o a la derecha). Puedes crear tus propios sprites en el Game Maker o cargarlos de algún archivo (GIFs animados por ejemplo).

A los objetos les pueden ocurrir ciertas cosas. A estas cosas se les llama eventos. Los objetos pueden realizar ciertas acciones dependiendo del evento que ocurra. Hay una gran cantidad de eventos que pueden suceder y una gran cantidad de acciones diferentes que los objetos pueden realizar. Por ejemplo, hay un evento creación cuando el objeto es creado. (Para ser más precisos, cuando una instancia de un objeto es creada; puede haber múltiples instancias del mismo objeto). Por ejemplo, cuando un objeto pelota se crea, puedes darle alguna acción de movimiento para que empiece a moverse. Cuando dos objetos se encuentran se tiene el evento colisión. En tal caso puedes hacer que la pelota se detenga o que invierta su dirección. Puedes también reproducir un efecto de sonido. Para este propósito el Game Maker te permite definir sonidos. Cuando el jugador presiona una tecla en el teclado hay un evento teclado, y el objeto puede realizar la acción apropiada, como moverse en la dirección indicada. Espero que entiendas la idea. Para cada objeto que diseñes puedes indicarle acciones para varios eventos, de esta forma se define el comportamiento del objeto.

Una vez que has definido tus objetos es tiempo de definir las habitaciones en donde habitarán. Las habitaciones pueden ser empleadas como niveles en el juego o para mostrar diferentes lugares. Hay acciones para moverse de una habitación a otra. Las habitaciones deben tener primero un fondo. Este puede ser un simple color de relleno o una imagen. Tales imágenes pueden ser creadas en el Game Maker o puedes cargarlas de algún archivo. (El fondo puede hacer muchas cosas pero por el momento, solo considéralo como algo que hace que los niveles se vean bien). Ahora puedes colocar tus objetos en la habitación. Puedes colocar múltiples instancias del mismo objeto en una habitación. Así, por ejemplo, necesitas definir sólo un objeto de pared y usarlo en muchos lugares. También puedes tener múltiples instancias de los mismos enemigos, mientras requieran del mismo comportamiento.

Ahora estás listo para ejecutar el juego. Se mostrará la primera habitación y los objetos en ella tomarán vida por las acciones en sus eventos de creación. Empezarán a interactuar unos con otros debido a las acciones en sus eventos de colisión y pueden reaccionar a lo que haga el jugador usando las acciones en los eventos del teclado o del ratón. En resumen, los siguientes elementos (comúnmente llamados recursos) tienen un papel crucial en el juego: •

Objetos (objects): que son las entidades verdaderas en el juego.



Habitaciones (rooms): los lugares (niveles) en donde habitan los objetos.



Sprites: imágenes (animadas) que se emplean para representar a los objetos.



Sonidos (sounds): para emplearse en el juego, ya sea como música de fondo o como efectos.



Fondos (backgrounds): las imágenes usadas como fondo para los cuartos.

De hecho, hay otro tipo de recursos: paths, scripts, fuentes y time lines. Estos recursos son importantes para juegos más complicados. Solo los verás cuando ejecutas el Game Maker en modo avanzado. Se hablará de ellos más tarde en los capítulos avanzados de este documento.

Un ejemplo sencillo Sería bueno echar un vistazo de cómo crear un ejemplo muy simple. El primer paso es describir el juego que queremos hacer. (Siempre debieras empezar por esto; te ahorrará mucho trabajo después). El juego será muy simple: hay una pelota rebotando entre varias paredes. El jugador debe intentar hacer clic en la pelota con el ratón. Cada vez que lo logre obtiene un punto.

Como se puede ver, se requieren dos objetos diferentes: la pelota y la pared. También necesitaremos dos sprites diferentes: uno para el objeto pared y otro para el objeto pelota. Finalmente, queremos escuchar algún sonido cuando se logre hacer clic en la pelota con el ratón. Usaremos un sólo nivel en el que se lleve a cabo el juego. (Si no quieres hacer el juego tú mismo, puedes cargarlo de la carpeta Examples con el nombre hit the ball.gm6)

Hagamos primero los sprites. Del menú Add selecciona Add Sprite (puedes también usar el botón apropiado en la barra de herramientas). Aparecerá una ventana. En el campo Name escribe “wall”. Selecciona el botón Load Sprite y elige una imagen apropiada (puedes encontrar una en la carpeta maze). Eso es todo, puedes cerrar la ventana. De esta misma forma, crea un sprite para la pelota.

Ahora definiremos el sonido. Del menú Add selecciona Add Sound. Aparece una ventana diferente. Dale un nombre al sonido y selecciona Load Sound. Selecciona algo apropiado y checa si es un buen sonido presionando el botón reproducir. Si te gusta, cierra la ventana.

El siguiente paso es crear los dos objetos. Hagamos primero la pared. Nuevamente del menú Add selecciona Add Object. Se abrirá una ventana que se ve bastante más compleja que las que hemos visto hasta ahora. A la izquierda tenemos información global acerca del objeto. Dale al objeto un nombre apropiado y del menú desplegable selecciona el sprite wall. Como una pared es sólida deberías marcar la casilla llamada Solid. Eso es todo por el momento. Nuevamente crea un objeto, llámalo ball, y selecciónale un sprite. No haremos sólida a la pelota. Necesitamos definir algún comportamiento para la pelota. Debajo hay un botón marcado Add Event. Presiónalo y verás todos los eventos posibles. Selecciona el evento de creación (create). Ahora se ha agregado a la lista de eventos. En el extremo derecho puedes ver todas las acciones posibles, en varios grupos. Del grupo move selecciona la acción con las 8 flechas rojas y arrástrala a la lista de acciones en el medio. Esta acción hará al objeto moverse en una dirección particular. Una vez que la sueltes en la lista de acciones se mostrará un diálogo en el cual puedes indicar la dirección de movimiento. Selecciona las 8 flechas para seleccionar una dirección al azar. Cierra el diálogo. Ahora la pelota empezará a moverse en el momento en que sea creada. En segundo lugar debemos definir lo que sucederá en caso de que se colisione con la pared. De nuevo presiona Add Event. Haz clic en el botón de los eventos de colisión (collision) y del menú que aparece selecciona el objeto wall. Para este evento necesitamos la acción rebotar. (Puedes ver lo que cada acción hace colocando el ratón sobre el icono que la representa). Finalmente necesitamos definir lo que se hará cuando el usuario presione el botón izquierdo del ratón sobre la pelota. Agrega el evento correspondiente y selecciona el botón izquierdo del ratón (Left button) del menú que se despliega. Para este evento necesitamos unas cuantas acciones: una para reproducir un sonido (la puedes encontrar en el grupo de acciones main1), una para cambiar el marcador (se encuentra en el grupo score) y dos más para mover la pelota a una posición aleatoria y moverla

en una nueva dirección (de la misma forma que en el evento de creación). Para la acción de sonido, selecciona el sonido adecuado. Para la acción del marcador (score), introduce un valor de 1 y marca la opciónRelative. Esto significa que se agregará 1 al marcador actual. (Si cometes algún error puedes hacer doble click sobre la acción para modificar su configuración).

Nuestros objetos ahora están listos. Lo que queda es definir la habitación. Agrega un nuevo nivel al juego, de nuevo desde el menú Add. A la derecha verás la habitación vacía. A la izquierda verás algunas propiedades que puedes modificar, como el ancho y alto de la habitación. En la parte inferior izquierda puedes seleccionar un objeto del menú desplegable. Puedes colocar instancias de ese objeto haciendo clic en el cuarto. Puedes eliminar las instancias usando el botón derecho del ratón. Crea un espacio cerrado alrededor del nivel usando el objeto wall. Finalmente coloca 1 ó 2 objetos ball en el nivel. Nuestro juego está listo.

Es hora de probar nuestro juego. Presiona el botón Run y ve lo que pasa. Si no cometiste algún error la pelota empieza a moverse alrededor. Intenta hacer click en ella con el ratón y ve qué sucede. Puedes detener el juego presionando la tecla . Ahora puedes hacer más cambios. Felicidades. Has creado tu primer juego. Pero creo que es hora de aprender un poco más sobre el Game Maker.

La interfaz global de usuario

Al iniciar el Game Maker se muestra la siguiente ventana:

(De hecho, esto es lo que ves cuando ejecutas el Game Maker en modo simple. En el modo avanzado se muestran algunas opciones más. Ve el capítulo correspondiente para más detalles). A la izquierda puedes ver los diferentes recursos, mencionados antes: Sprites, Sounds (Sonidos), Backgrounds (Fondos), Scripts, Objects (Objetos), Rooms (Habitaciones) y dos más: Game Information (Información del juego) y Game Options (Opciones del juego) En la parte superior está el ya conocido menú y la barra de herramientas. En este capítulo describiré brevemente las diferentes opciones del menú, los botones, etc. En capítulos posteriores trataremos varios de ellos con más detalle. Recuerda que muchas cosas se pueden lograr de diferentes maneras: seleccionando un comando del menú, haciendo click en un botón, o haciendo click derecho sobre un recurso.

Menú file En el menú file puedes encontrar los comandos usuales para cargar y guardar archivos, además de algunos especiales:



New. Selecciona este comando para empezar a crear un juego nuevo. Si el juego actual sufrió modificaciones se te pregunta si

quieres guardarlo. También hay un botón en la barra de herramientas para hacer esto.



Open. Abre un archivo de juego. Los archivos del Game Maker tienen la



extensión .gmd. Hay un botón en la barra de herramientas para este comando. Puedes también abrir un juego arrastrando el archivo a la ventana del Game Maker.



Recent Files. Usa este submenú para reabrir los archivos abiertos recientemente.



Save. Guarda el archivo de diseño del juego con el nombre actual. Si no se había especificado un nombre, se te pide dar uno. Puedes usar este comando solo cuando el archivo ha cambiado. Como con los anteriores, hay un botón en la barra de herramientas para realizar esta acción.



Save As. Guarda el diseño del juego con otro nombre. Se te pide un nuevo nombre.



Create Executable. Una vez que tu juego esté listo probablemente querrás distribuirlo. Mediante este comando puedes crear una versión ejecutable de tu juego. Es simplemente un ejecutable que puedes darle a otros para que jueguen tu juego. Encontrarás más información sobre la distribución de juegos en el tema correspondiente.



Advanced Mode. Al hacer clic en este comando el Game Maker cambiará entre los modos simple y avanzado. En el modo avanzado se tienen disponibles comandos y recursos adicionales.



Exit. Probablemente obvio. Presiónalo para cerrar el Game Maker. Si hiciste cambios al juego actual se te preguntará si quieres guardarlo.

Menú Edit El menú edit contiene varios comandos que se relacionan con el recurso seleccionado (objeto, sonido, etc.) o grupo de recursos. Dependiendo del tipo de recurso algunos de los comandos pueden no estar disponibles.



Insert resource. Inserta una nueva instancia del tipo de recurso actualmente seleccionado, se inserta antes del mismo. (Si seleccionaste un grupo de recursos el recurso es agregado al grupo). Se abrirá un cuadro de diálogo en el que puedes cambiar las propiedades del recurso. Esto se tratará con más detalle en los capítulos siguientes.



Duplicate. Crea y agrega una copia del recurso actual. Se abre una ventana en la que puedes modificar el recurso.



Delete. Borra el recurso seleccionado (o grupo de recursos). Ten cuidado. No puede deshacerse. Por lo que se te hará una advertencia.



Rename. Dale un nuevo nombre al recurso. Esto se puede hacer también en la ventana de propiedades del recurso. También puedes seleccionar el recurso y entonces hacer clic en el nombre.



Properties. Usa este comando para mostrar la ventana de edición de propiedades. Nota que todas las ventanas de propiedades se muestran en la ventana principal. Puedes editar muchas de ellas al mismo tiempo. Puedes también editar las propiedades haciendo doble clic en el recurso.

Observa que estos comandos puedes también aplicarse de otra forma. Haz clic derecho en un recurso o en un grupo de recursos, y aparecerá el menú apropiado.

Menú Add En este menú puedes agregar un nuevo recurso de cada uno de los diferentes tipos que hay. Nota que para cada uno de ellos hay también un botón en la barra de herramientas y un acceso directo con el teclado.

Menú Run Este menú se usa para ejecutar el juego. Hay dos formas de ejecutar el juego:



Run normally. Ejecuta el juego en modo normal. El juego se ejecuta de la manera más eficiente posible exactamente como si fuera un ejecutable.



Run in Debug mode. Ejecuta el juego en modo debug. En este modo puedes revisar ciertos aspectos del juego, pausarlo o avanzar paso a paso. Muy útil para detectar y solucionar errores.

Una vez que tu juego esté listo, puedes crear un ejecutable del juego usando la acción del menú file.

Menú Window En este menú puedes encontrar los comandos comunes para manejar las diferentes propiedades de las ventanas de la ventana principal:



Cascade. Coloca todas las ventanas en cascada de forma que cada una sea parcialmente visible.



Arrange Icons. Ordena todas las ventanas. (Útil en particular cuando cambias de tamaño la ventana principal).



Close All. Cierra todas las ventanas de propiedades, preguntando si se desea guardar o no los cambios realizados.

Menú Help Aquí encontrarás algunos comandos de ayuda:



Contents. Te permite acceder a la versión en formato de ayuda de este documento.



How to use help. En caso de que no sepas, algo de ayuda sobre cómo usar la ayuda.



Registration. Aún cuando el Game Maker puede ser usado libre de cargo, se te alienta a registrar el programa. De esta forma se eliminará la ventana publicitaria que en ocasiones aparece en la ventana de edición y ayudarás al futuro desarrollo del programa. Aquí puedes encontrar información sobre cómo registrar el programa. Si ya lo registraste puedes usar esta opción para introducir la clave de registro que recibiste.



Web site. Te conecta al sitio del Game Maker en donde puedes encontrar información sobre la versión más reciente del Game Maker y colecciones de juegos y recursos para el Game Maker. Te recomiendo que visites el sitio al menos una vez al mes para ver nueva información.



About Game Maker. Breve información sobre esta versión del Game Maker.

El explorador de recursos En la parte izquierda de la forma principal encontrarás el explorador de recursos. Aquí tienes una lista ramificada de todos los recursos de tu juego. Trabaja de la misma forma que el explorador de Windows con el cual muy probablemente ya estás familiarizado. Si un elemento tiene un signo + a su lado puedes hacer clic en el signo para ver los recursos

dentro de él. Haciendo clic en el signo – los oculta nuevamente. Puedes cambiar el nombre de un recurso (excepto los de más alto nivel) seleccionándolo (con un solo click) y luego haciendo clic en el nombre. Haz doble clic en un recurso para editar sus propiedades. Usa el botón derecho del ratón para acceder a los comandos del menú Edit.

Puedes cambiar el orden de los recursos haciendo click en ellos y manteniendo presionado el botón del ratón. Ahora arrastra el recurso (o grupo) al lugar apropiado. (Por supuesto que el lugar debe ser el apropiado. Por ejemplo no puedes arrastrar un sonido a la lista de sprites).

Definiendo los sprites

Los sprites son las representaciones visuales de todos los objetos en el juego. Un sprite es o una imagen simple, dibujada con cualquier programa que te guste, o un juego de varias imágenes que, pueden ser reproducidas una tras otra, creando un efecto de movimiento (animación). Por ejemplo, las siguientes cuatro imágenes forman un sprite para un Pacman moviéndose hacia la derecha.

Cuando haces un juego empiezas por reunir los distintos sprites para los objetos en tu juego. Con el Game Maker viene incluida una colección de sprites estáticos y animados. Puedes encontrar otros sprites en Internet, normalmente como archivos gif animados. Para agregar un sprite, selecciona el comando Add Sprite del menú Add, o usa el botón correspondiente de la barra de herramientas. Aparecerá la siguiente ventana:

En la parte superior puedes indicar el nombre del sprite. Todos los sprites (y todos los demás recursos) tienen un nombre. Será mejor que le des a cada sprite un nombre descriptivo y fácil de recordar. Asegúrate de que todos los recursos tengan diferentes nombres. Aunque no es estrictamente requerido, se recomienda firmemente usar sólo letras, dígitos y el guión bajo (_) en el nombre de un sprite (y de cualquier otro recurso) y empezar el nombre con una letra. En particular no hagas uso de espacios en los nombres. Esto pasará a ser parte importante una vez que empieces a usar código.

Para cargar un sprite, haz clic en el botón Load Sprite. Se muestra un diálogo de archivo en el que debes indicar el sprite. El Game Maker puede abrir varios tipos de archivos de imagen. Cuando cargas un gif animado, las diferentes subimágenes forman las imágenes del sprite. Una vez que el sprite es cargado, se muestra la primera subimagen a la derecha. Cuando hay múltiples subimágenes, puedes verlas usando los botones con las flechas.

La opción Transparent indica si el fondo deberá ser considerado como transparente. La mayoría de los sprites son transparentes. El fondo es determinado por el color del píxel que se encuentra en la esquina inferior izquierda de la imagen. Así que asegúrate de que ningún píxel de la imagen que se mostrará tenga este color. (Los archivos gif a menudo definen su color de transparencia, este color no es usado en el Game Maker).

Con el botón Edit Sprite puedes editar el sprite, o incluso crear un sprite completamente nuevo.

Música y sonido

La mayoría de los juegos tienen ciertos efectos de sonido y música de fondo. El Game Maker incluye algunos efectos de sonido de utilidad. Puedes encontrar muchos más en la Web.

Para agregar un recurso de sonido a tu juego, usa el comando Add Sound en el menú Add o usa el botón correspondiente en la barra de herramientas. Aparecerá la siguiente Ventana:

Para cargar un sonido, presiona el botón Load Sound. Aparece un diálogo de selección de archivo en el que debes especificar el archivo de sonido. Hay dos tipos de archivos de sonido, archivos wave (*.wav) y archivos midi (*.mid). (Para información sobre archivos mp3 ve el Capítulo 17). Los archivos wave son usados para efectos breves de sonido. Usan mucha memoria pero se reproducen instantáneamente. Úsalos para todos los efectos de sonido en el juego. Los archivos midi tratan la música en una forma diferente. Como resultado usan mucha menos memoria, pero están limitados a música instrumental de fondo. Además, sólo se puede reproducir un archivo midi a la vez.

Una vez que cargues un archivo se muestra su tipo y duración. Puedes escuchar el sonido usando el botón reproducir. También hay un botón Save Sound para guardar en un archivo el sonido actual. Este botón no es realmente requerido pero pudieras necesitarlo si perdieras el sonido original.

Fondos

El tercer tipo de recursos básicos son los fondos. Los fondos son normalmente imágenes grandes usadas como fondo para los niveles en los que se realiza el juego. A menudo las imágenes de fondo son hechas con tiles (mosaicos) de manera que pueden formar una imagen en un área sin errores visuales. De esta manera puedes llenar el fondo con un patrón. Varios tiles de fondo de este tipo vienen incluidos con el Game Maker. Puedes encontrar muchos más en la Web.

Para agregar un fondo a tu juego, usa el comando Add Background en el menú Add o usa el botón correspondiente de la barra de

:

herramientas. Aparecerá la siguiente ventana

Presiona el botón Load Background para cargar una imagen de fondo. El Game Maker soporta varios formatos de imagen. ¡Las imágenes de fondo no pueden ser animadas! La opción Transparent indica si el fondo será parcialmente transparente. La mayoría de los fondos no son transparentes, por lo que la opción por defecto es no. Como color transparente se usa el color del píxel en la esquina inferior izquierda.

.

Puedes cambiar el fondo o crear uno nuevo usando el botón Edit Background. Para más información, ve el Capítulo 18

Definiendo objetos

Hemos agregado imágenes y sonidos al juego, pero ninguno de ellos realiza ninguna acción. Ahora llegamos al recurso más importante dentro del Game Maker: los objetos. Los objetos son las entidades que hacen las cosas en el juego. La mayoría de las veces tienen un sprite como representación gráfica para que puedas verlos. Tienen un comportamiento porque pueden reaccionar a ciertos eventos. Todas las cosas que ves en el juego (excepto el fondo) son objetos. (O para ser más precisos, son instancias de objetos). Los personajes, los enemigos, las pelotas, las paredes, etc. Puede haber también ciertos objetos que no ves pero que controlan ciertos aspectos del juego.

Por favor nota la diferencia entre los sprites y los objetos. Los sprites son solo imágenes (animadas) que no tienen ningún comportamiento. Los objetos normalmente tienen un sprite que los representa pero también tienen un comportamiento. ¡Sin objetos no hay juego!

También nota la diferencia entre los objetos y las instancias. Un objeto describe cierta entidad, por ejemplo un enemigo. Puede haber múltiples instancias de este objeto en el juego. Cuando hablamos de instancia nos referimos a una instancia en particular del objeto. Cuando hablamos de un objeto nos referimos a todas las instancias de este objeto.

Para agregar un objeto al juego, selecciona el comando Add Object del menú Add. Aparecerá la siguiente ventana:

Este formulario es bastante complejo. A la izquierda hay cierta información general acerca del objeto. En el medio hay varios eventos posibles que pueden ocurrirle a un objeto. Ve el siguiente capítulo para más detalles. A la derecha hay varias acciones que puede realizar el objeto. Estas serán tratadas en el Capítulo 12.

Como siempre, puedes (y debes) agregar un nombre al objeto. Después puedes indicar el sprite para el objeto. Para hacerlo, haz clic con el botón izquierdo del ratón en la caja de sprite o en el botón de menú junto a esta. Aparecerá un menú con todos los sprites disponibles. Selecciona el que quieras usar para el objeto. Si todavía no tienes un sprite para el objeto, puedes hacer click en el botón New para añadir un sprite y cambiarlo. También verás un botón Edit para editar el sprite rápidamente.

Debajo hay dos opciones. La opción Visible indica si las instancias de este objeto serán visibles. Obviamente, la mayoría de los objetos son visibles, pero algunas veces es útil tener objetos invisibles. Por ejemplo, puedes usarlos como guías de movimiento para un enemigo. Los objetos invisibles reaccionan a eventos y otras instancias pueden colisionar con ellos. La opción Solid indica si se trata de un objeto sólido

(como una pared). Las colisiones con objetos sólidos se tratan de forma distinta a las colisiones con objetos no sólidos. Se recomienda usar la opción Solid únicamente para objetos que no se mueven.

Eventos

El Game Maker emplea lo que se conoce como programación orientada a eventos. Esto es, en todo tipo de situaciones las instancias de los objetos reciben eventos (como mensajes que indican que algo ha sucedido). Entonces los objetos pueden reaccionar a estos mensajes ejecutando ciertas acciones. Para cada objeto debes indicar a qué eventos responderá y qué acciones debe realizar. Puede parecer complicado pero en realidad es bastante sencillo. Primero que nada, para la mayoría de los eventos los objetos no tienen que hacer nada. Para los eventos donde algo suceda puedes usar muy simples comandos de arrastrar y soltar para indicar las acciones.

En medio de la ventana de propiedades de objeto hay una lista de los eventos a los cuales el objeto puede reaccionar. Al principio está vacía. Puedes agregar eventos presionando el botón Add Event. Aparecerá un pequeño menú con todos los diferentes tipos de eventos. Aquí debes seleccionar el evento que deseas agregar. En ocasiones se mostrará un nuevo menú con opciones extra. Por ejemplo, para el evento del teclado debes seleccionar la tecla. Más abajo encontrarás una completa lista con descripciones de los eventos. Seleccionaremos un evento de la lista. Este será el evento que modificaremos. Puedes cambiar el evento seleccionado haciendo clic sobre él. A la derecha están todas las acciones representadas por pequeños iconos. Se encuentran agrupadas en varias páginas / fichas de opciones. En el siguiente capítulo describiré todas las acciones y lo que realizan. Entre los eventos y las acciones se encuentra la lista. Esta lista contiene las acciones para el evento actual. Para agregar acciones a la lista, arrástralas desde la derecha a la lista. Serán colocadas una bajo la otra, con una breve descripción. Para cada acción se te pedirán algunos parámetros. Estos se describirán también en el siguiente capítulo. Después de agregar algunas acciones, tendrías algo como esto:

Ahora puedes agregar acciones a otro evento. Haz clic con el botón izquierdo del ratón sobre el evento adecuado para seleccionarlo y arrastra la acción a la lista. Puedes cambiar el orden de las acciones en la lista arrastrando los iconos. Si mantienes presionada la tecla mientras arrastras una acción, crearás una copia de dicha acción. Puedes inclusive arrastrar acciones entre diferentes listas de diferentes objetos. Cuando haces clic con el botón derecho sobre una acción, se muestra un menú desde el cual puedes eliminar la acción (también puedes hacer esto usando la tecla ), o copiar y pegar acciones. Cuando mantienes el cursor del ratón sobre una acción, se muestra una descripción más detallada sobre la misma. En el siguiente capítulo hay más información sobre las acciones.

Para eliminar el evento seleccionado y todas sus acciones, presiona el botón Delete. (Los eventos sin acciones son eliminados automáticamente cuando cierras la ventana por lo que no hay necesidad de que lo hagas tu mismo). Si deseas asignar las acciones a un evento diferente (porque por ejemplo, has decidido emplear una tecla diferente para las acciones) presiona el botón Change y selecciona el nuevo evento. (¡El nuevo evento no debe haber sido empleado antes!).

Como se mencionó arriba, para agregar un evento, presiona el botón Add Event. Se muestra la siguiente ventana:

Aquí seleccionas el evento que deseas agregar. Algunas veces aparece un menú con opciones extra. A continuación una descripción de los eventos. (Recuerda que normalmente sólo haces uso de algunos de ellos):

Evento

create

Este evento ocurre cuando se crea una instancia del objeto. Normalmente se usa para establecer el movimiento de la instancia y/o establecer ciertas variables de la misma

.

Evento Destroy Este evento ocurre cuando la instancia es destruida. Para ser precisos, ocurre justo antes de que sea destruida, ¡por lo que la instancia aún existe cuando el evento es ejecutado! La mayoría de las veces este evento no se usa pero puedes por ejemplo emplearlo para cambiar el marcador o para crear algún otro objeto.

Eventos alarm

Cada instancia tiene 12 relojes de alarma. Puedes configurar estos relojes usando ciertas acciones (ver el siguiente capítulo). El reloj de alarma hace una cuenta regresiva hasta que llega a 0, que es cuando se genera el evento de alarma. Para indicar las acciones para un reloj de alarma, necesitas primero seleccionarlo en el menú. Los relojes de alarma son muy útiles. Puedes usarlos para hacer que ciertas cosas sucedan de tiempo en tiempo. Por ejemplo un enemigo puede cambiar su dirección de movimiento cada 20 pasos. (En cuyo caso una de las acciones en el evento debe configurar nuevamente la alarma).

Eventos

step

El evento step sucede a cada paso/frame del juego. Aquí puedes colocar acciones que requieren ejecutarse continuamente. Por ejemplo, si el objeto debe seguir a otro, puedes adaptar aquí la dirección de movimiento hacia el objeto que se está siguiendo. Sin embargo ten cuidado con este evento. No coloques muchas acciones muy complicadas en el evento step. Esto podría alentar el juego. Para ser más preciso, hay tres diferentes eventos step. Normalmente solo necesitas el evento por defecto. Pero usando el menú puedes también seleccionar el inicio y el final del evento step. El inicio del evento step es ejecutado al inicio de cada paso, antes de que ocurra cualquier otro evento. El evento step normal es ejecutado justo antes de que se coloquen las instancias en sus nuevas posiciones. El final del evento step se ejecuta al final de cada paso, justo antes de que se dibuje la escena. Este evento se usa normalmente para, por ejemplo, cambiar el sprite dependiendo de la dirección actual.

Eventos

de

colisión

En el momento en que dos instancias colisionan (esto es, que sus sprites se sobreponen) ocurre un evento de colisión. Bien, para ser precisos, ocurren dos eventos de colisión, uno por cada instancia. La instancia puede reaccionar a este evento de colisión. Para este fin, selecciona en el menú el objeto con el cual quieres definir el evento de colisión. Después coloca las acciones. Hay una diferencia entre lo que sucede cuando la instancia colisiona con un objeto sólido y cuando lo hace con uno no sólido. Antes que nada, cuando no hay acciones en el evento de colisión, no sucede nada. La instancia actual simplemente continúa moviéndose; aún cuando el otro objeto sea sólido. Cuando el evento de colisión contiene acciones sucede lo siguiente: Cuando el otro objeto es sólido, la instancia se coloca de vuelta al lugar previo (antes de que ocurriera la colisión). Entonces se ejecuta el evento. Finalmente, la instancia es llevada a su nueva posición. Así que si por ejemplo, el evento invierte la dirección de movimiento, la instancia rebota contra la pared sin detenerse. Si hay una nueva colisión, la instancia se mantiene en su lugar previo. De manera que efectivamente deje de moverse. Cuando el otro objeto no es sólido, la instancia no se regresa. El evento simplemente se ejecuta con la instancia en su posición actual. Tampoco se checa una nueva colisión. Si lo piensas, esto es lo que debería ocurrir lógicamente. Porque cuando el objeto no es sólido, podemos simplemente movernos sobre él, o a través de él. El evento nos notifica lo que está sucediendo. Existen muchos usos para el evento de colisión. Las instancias pueden usarlo para rebotar contra las paredes. Puedes usarlo para destruir algún objeto cuando es tocado por una bala, etc.

Eventos

Keyboard

Cuando el usuario presiona una tecla, ocurre un evento keyboard para todas las instancias de todos los objetos. Hay un evento diferente para cada tecla. En el menú puedes seleccionar la tecla para la que quieres definir el evento de teclado y después arrastrar las acciones. Es claro que solo unos cuantos objetos necesitan eventos para unas cuantas teclas. Se tiene un evento en cada paso cuando el jugador presiona la tecla. Hay dos eventos de teclado especiales. Uno es el . Este evento ocurre en cada paso cuando no hay ninguna tecla presionada. El segundo se llama y ocurre cuando se presiona cualquier tecla. A propósito, cuando el usuario presiona varias teclas, ocurren los eventos para todas ellas. Las teclas en el teclado numérico solo producen sus eventos correspondientes cuando está activada. Eventos

mouse

Un evento mouse ocurre para una instancia cuando el cursor del ratón se encuentra sobre el sprite que representa a la instancia. Dependiendo de qué botón se presione, se obtienen los eventos no button (ningún botón), left button (botón izquierdo), right button (botón derecho), o middle button (botón central). Estos eventos son generados en cada paso mientras el jugador mantenga el botón del ratón presionado. Los eventos press se generan una sola vez cuando el botón es presionado. Los eventos release se generan una sola vez cuando se suelta el botón. Recuerda que estos eventos sólo ocurren cuando el ratón está sobre la instancia. Si el jugador presiona un botón del ratón en algún lugar donde no haya ninguna instancia, no se genera el evento. Pero en ocasiones es importante reaccionar a cualquier click del ratón. Esto puede conseguirse usando los eventos globales que aparecen en el submenú. También hay dos eventos especiales. El evnto

mouse enter ocurre cuando el ratón entra sobre el sprite de la instancia. El evento mouse leave ocurre cuando el ratón deja de estar encima de la instancia. Estos eventos se usan típicamente para cambiar el sprite o para hacer sonar algún sonido. Los eventos mouse wheel up y mouse wheel down ocurren cuando se usa la rueda del ratón. Por último, hay una serie de eventos para joysticks. Puedes indicar acciones para las cuatro direcciones del joystick (en una dirección diagonal se ejecutan ambos eventos) y para 8 botones del joystick. Puedes hacer esto para dos joysticks.

Eventos

other

Hay otros eventos que pueden ser útiles en ciertos juegos. Los encuentras en este menú. Los eventos que puedes encontrar son: •

Outside: Este evento ocurre cuando la instancia se encuentra completamente fuera del cuarto. Este es normalmente un buen momento para destruirla.



Boundary: Este evento ocurre cuando la instancia llega al borde del cuarto.



Game start: Este evento se genera para todas las instancias en el primer cuarto donde inicia el juego. Ocurre antes que el evento room start (ver abajo) y aún antes de los eventos create de las instancias en el cuarto. Este evento se define normalmente en un solo objeto “controlador” y se usa para reproducir alguna música de fondo y para dar valores iniciales a algunas variables, o para cargar información.



Game end: El evento ocurre para todas las instancias cuando termina el juego. De nuevo, es común que solo un objeto lo defina. Se emplea por ejemplo para guardar cierta información en un archivo.



Room start: Este evento se genera para todas las instancias (en el cuarto) cuando se inicia un cuarto. Ocurre antes que los eventos de creación.



Room end: Este evento se genera para todas las instancias existentes cuando finaliza el cuarto.



No more lives: El Game Maker tiene un sistema de vidas interno. Hay una acción para especificar y cambiar el número de vidas. En el momento que el número de vidas sea menor o igual a 0, se genera este evento. Normalmente empleado para terminar o reiniciar el juego.



No more health: El Game Maker tiene un sistema interno de energía. Hay una acción para especificar y cambiar el nivel de energía. En el momento que la energía sea menor o igual a 0, ocurre este evento. Normalmente se emplea para disminuir el número de vidas o para reiniciar el juego.



End of animation: Como se indicó antes, una animación consiste en varias imágenes que se muestran una después de otra. Después de que se muestra la última se inicia nuevamente con la primera. El evento ocurre en ese preciso momento. Esto se puede usar para por ejemplo cambiar la animación, o destruir la instancia.



End of path: Este evento ocurre cuando la instancia que sigue una trayectoria predeterminada (path) llega al final de la misma. Ve al Capítulo 18 para encontrar más información sobre las trayectorias.



User defined: Hay 16 de estos eventos. Normalmente nunca ocurren a menos que tú mismo los llames desde alguna pieza de código.

Evento

Drawing

Las instancias, cuando son visibles, dibujan su sprite en la pantalla en cada paso. Cuando especificas acciones en el evento de dibujo, no se

dibuja el sprite, sino que se ejecutan estas acciones en su lugar. Esto se puede usar para dibujar algo más que un sprite, o para primero hacer algunos cambios a los parámetros del sprite. Hay varias acciones de dibujo especialmente diseñadas para usarse en el evento drawing. Recuerda que el evento drawing se ejecuta solamente cuando el objeto es visible. También recuerda que, independientemente de lo que dibujes aquí, los eventos de colisión se basan en el sprite que está asociado a la instancia

Evento

Key

press

Este evento es similar al evento keyboard con la diferencia de que éste ocurre solo una vez cuando se presiona la tecla, y no continuamente. Este es útil cuando deseas que una acción ocurra solo una vez.

Key

release

events

Este evento es similar al evento keyboard, pero ocurre solo una vez cuando la tecla es liberada, en lugar de ocurrir continuamente.

En algunas situaciones es importante conocer el orden en el cual el Game Maker procesa los eventos. Como sigue. •

Eventos Begin Step



Eventos Alarm



Eventos Keyboard, Key press, y Key release



Eventos Mouse



Eventos Step normales



(ahora todas las instancias son colocadas en sus nuevas posiciones)



Eventos Collision



Eventos End Step



Eventos Drawing

Los eventos de creación (create), destruir (destroy) y otros son generados en el momento pertinente.

Acciones Las acciones indican lo que sucede en un juego creado con el Game Maker. Las acciones se colocan en los eventos de los objetos. Cuando el evento ocurre estas acciones se llevan a cabo, resultando en cierto comportamiento para las instancias del objeto. Hay una gran cantidad de

acciones disponibles y es importante que entiendas lo que hacen. En este capítulo describiré las acciones disponibles en modo simple. Nota: ciertas cantidad de acciones sólo estan disponible en la versión registrada de Game Maker. Estas serén indicadas.

Todas las acciones se encuentran en las páginas / fichas(pestañas) a la derecha de la ventana de propiedades de objeto. Hay siete grupos de acciones. Puedes ver el grupo haciendo clic en la ficha correcta. Cuando mantienes el ratón sobre una de las acciones, se muestra una breve descripción para recordar su función.

Permíteme repetir brevemente: Para colocar una acción en un evento, solo arrástrala de las páginas / fichas a la lista de acción. Puedes cambiar el orden de la lista, arrastrando y soltando los iconos. Si presionas la tecla mientras arrastras puedes hacer una copia de la acción. (Puedes arrastrar y copiar acciones entre las listas en diferentes ventanas de propiedades de objetos). Usa el botón derecho del ratón para borrar acciones (o usa la tecla ó ) o para copiar y pegar acciones.

Cuando colocas una acción, la mayoría de las veces aparece una ventana de diálogo, en la cual puedes especificar ciertos parámetros para la acción. Dos tipos de parámetros aparecen en muchas acciones. En la parte superior puedes indicar a qué instancia aplica la acción. El valor por defecto es self, que es la instancia para la cual se está realizando la acción. La mayoría de las veces esto es lo adecuado. En el caso de un evento collision, puedes especificar también si se aplica la acción a la otra instancia involucrada en la colisión. De esta forma puedes por ejemplo destruir la otra instancia.

Finalmente, puedes elegir si aplicas la acción a todas las instancias de un objeto. De esta manera puedes por ejemplo cambiar todas las pelotas rojas por azules. El segundo tipo de parámetro es la casilla marcada Relative. Al marcar esta casilla, los valores que introduzcas serán relativos a los valores actuales. Por ejemplo, de esta forma puedes agregar algo al marcador actual, en lugar de cambiar el marcador actual por su nuevo valor. Los otros parámetros se describen abajo. Puedes revisar después los parámetros haciendo doble clic en la acción.

La información sobre las acciones está disponible en los siguientes temas: Acciones de movimiento Acciones principales, grupo 1 Acciones principales, grupo 2 Acciones de control Acciones de score Acciones de dibujo Usando expresiones y variables

Acciones de movimiento El primer grupo de acciones consiste de aquellas relacionadas al movimiento de objetos. Tenemos las siguientes:

Start moving in a direction Usa esta acción para que la instancia empiece a moverse en una dirección en particular. Puedes indicar la dirección usando las flechas. Usa el botón del medio para detener el movimiento. También debes especificar la velocidad de movimiento. Esta velocidad está dada en pixels por paso. El valor por defecto es de 8. De preferencia no uses valores de velocidad negativos. Puedes especificar múltiples direcciones. En este caso se elige una al azar. De esta forma puedes por ejemplo hacer que un enemigo se mueva hacia la izquierda o hacia la derecha.

Set direction and speed of motion Esta es la segunda forma en la que puedes especificar un movimiento (con las flechas azules). Aquí puedes indicar una dirección con más precisión. Con un ángulo de entre 0 y 360 grados. 0 significa hacia la derecha. La dirección es contra las manecillas del reloj. Así por ejemplo 90 indica la dirección hacia arriba. Si quieres una dirección arbitraria, puedes poner random(360). Como verás más abajo la función random da un número al azar menor que el valor indicado. Como podrás haber notado hay una casilla llamada Relative. Si la seleccionas, el nuevo movimiento es sumado al anterior. Por ejemplo, si la instancia se está moviendo hacia arriba y le agregas un pequeño movimiento hacia la izquierda, el nuevo movimiento será hacia arriba y a la izquierda.

Move towards a point Esta acción da otra manera de especificar un movimiento. Usted indica una posición y una velocidad y la instancia comienza a moverse con la velocidad seleccionada hacia la posición establecida (la instancia no se detendrá en la posición!). Por ejemplo, tu quieres que una bala vuele hacia la posición de una nave espacial (llamada spaceship), puedes usar como posición spaceship.x, spaceship.y (Aprenderá más sobre el uso de variables como éstas más adelante). Si marcas la casillaRelative, puede especificar la posición relativa para la posición actual de la instancia. (La velocidad no es tomada como relativa!)

Set the horizontal speed La velocidad de una instancia consiste de una parte horizontal y otra vertical. Con esta acción puedes cambiar la velocidad horizontal. Una velocidad horizontal positiva representa movimiento hacia la derecha. Una negativa movimiento hacia la izquierda. La velocidad vertical permanecerá constante. Usa la opción Relative para incrementar la velocidad horizontal (o disminuirla introduciendo un valor negativo).

Set the vertical speed De manera similar, con esta acción puedes cambiar la velocidad vertical de la instancia

.

Set the gravity Con esta acción puedes especificar una gravedad para un objeto en particular. Especificas una dirección (un ángulo entre 0 y 360 grados) y una velocidad, y a cada paso esta cantidad de velocidad en la dirección especificada se aumenta al movimiento actual de la instancia del objeto. Normalmente necesitas un muy pequeño incremento de velocidad (como 0.01). Normalmente se emplea una dirección hacia abajo (270 grados). Si seleccionas la casilla Relative incrementas la velocidad de gravedad y la dirección. Nota que, contrario a la vida real, diferentes objetos pueden tener diferentes direcciones de gravedad.

Reverse horizontal direction Con esta acción inviertes el movimiento horizontal de la instancia. Esto lo puedes usar por ejemplo cuando el objeto colisiona con una pared vertical.

Reverse vertical direction Con esta acción inviertes el movimiento vertical de la instancia. Esto lo puedes usar por ejemplo cuando el objeto colisiona con una pared horizontal.

Set the friction La fricción disminuye la velocidad de las instancias cuando se mueven. Puedes especificar la cantidad de fricción. En cada paso esta cantidad se resta de la velocidad hasta llegar a 0. Normalmente usas un número muy pequeño (como 0.01).

Jump to a given position Usando esta acción puedes colocar una instancia en una posición en particular. Simplemente especificas las coordenadas ‘x’ e ‘y’, y la instancia es colocada con su punto de referencia en esa posición. Si la casilla Relative está marcada, la posición es relativa a la posición actual de la instancia. Esta acción es usada a menudo para continuamente mover la instancia. En cada pasa incrementaremos la posición un poco.

Jump to the start position Esta acción coloca la instancia de vuelta a la posición donde fue creada.

Jump to a random position Esta acción mueve la instancia a una posición aleatoria cuarto. Solo se usan posiciones en donde la instancia no intercepte ninguna instancia sólida. Puedes especificar la rapidez (snap) usada. Si especificas valores positivos, las coordenadas serán elegidas con múltiplos enteros de los valores indicados. Esto puede ser usado por ejemplo para mantener una instancia alineada con las celdas de tu juego (si la hay). Puedes especificar la rapidez horizontal y la vertical por separado.

Snap to grid Con esta acción puedes alinear la posición de una instancia a una cuadrícula. Puedes indicar los valores horizontal y vertical (esto es, el tamaño de las celdas de la cuadrícula). Esto puede ser muy útil para asegurarte que las instancias se mantengan en una cuadrícula.

Wrap when moving outside Con esta acción puedes hacer que cuando una instancia salga del room por un lado, aparezca por el lado contrario (teleportación). Normalmente esta acción se usa en el evento Outside room. Observa que la instancia debe tener una velocidad para que esta acción funcione, porque la dirección en la que reaperece se basa en la dirección de movimiento. Puedes indicar si quieres que la instancia se teleporte sólo horizontalmente, sólo verticalmente o en ambas direcciones a la vez.

Move to contact position Con esta acción puedes mover la instancia en una dirección dada hasta que se encuentre tocando a otro objeto. Si ya hay colisión en la posición actual la instancia no se mueve. En caso contrario, la instancia se coloca justo antes de que ocurra una colisión. Puedes especificar la dirección y la máxima distancia que se debe mover la instancia. Por ejemplo, cuando la instancia se está cayendo puedes moverla una distancia máxima hasta que encuentre un objeto. También puedes hacer que se tengan en cuenta sólo los objetos sólidos o todos. Normalmente esta acción se pone en el evento colisión para asegurarte de que la instancia deje de moverse al chocar con el otro objeto.

Bounce against objects Cuando colocas esta acción en el evento collision de algún objeto, la instancia rebota en este objeto de manera natural. Si configuras el parámetro precise como falso, sólo las paredes horizontales y verticales se tratan correctamente. Cuando configuras precise a verdadero también se tratan las paredes inclinadas (y aún las curvadas) de manera correcta. Sin embargo esto es más lento. También puedes indicar si el objeto rebotará solo contra objetos sólidos o contra todos los objetos. Por favor nota que el rebote no es completamente correcto porque depende de muchas propiedades. Pero en muchas situaciones el efecto es lo suficientemente bueno

.

Acciones principales, grupo 1 El siguiente grupo de acciones está relacionado con la creación, el cambio y la destrucción de las instancias de objetos.

Create an instance of an object Con esta acción puedes crear una instancia de un objeto. Debes especificar el objeto a crear y la posición para la nueva instancia. Si marcas la casilla Relative, la posición es relativa a la posición de la instancia actual. La creación de instancias durante el juego es muy útil. Una nave crea balas; una bomba puede crear una explosión, etc. En muchos juegos tendrás un objeto de control que cada cierto tiempo creará enemigos u otros objetos. El evento de creación es ejecutado para la nueva instancia al crearse.

Create an instance of an object with a speed and direction Esta acción es la misma que la anterior pero con dos campos adicionales. Puedes especificar la velocidad y dirección de la instancia que se creará. Si usas la opción Relative sólo afectará a la posición y no a la velocidad ni dirección. Por ejemplo, para hacer que una bala se mueva en la misma dirección que el personaje que la crea usa un pequeño truco: activa la opción Relative e introduce la posición 0,0. En el campo de dirección, introduce la palabra

direction, que es la dirección en la que se mueve el personaje que dispara la bala.

Create instance of random object Esta acción te permite crear una instancia de uno de hasta cuatro objetos elegidos aleatoriamente. Especificas los cuatro objetos y la posición y una instancia de uno de estos objetos se creará en la posición elegida. Si usas Relative, la posición será relativa a la instancia que ejecute la acción. Si no quieres usar 4 objetos, puedes seleccionar No Object para los demás campos. Esta acción se puede usar para crear un enemigo de un tipo aleatorio en una posición determinada.

Change the instance Con esta acción puedes cambiar la instancia actual por otro objeto. Por ejemplo, puedes cambiar una instancia de una bomba en una

explosión. Todos los parámetros, como el movimiento o los valores de variables, se mantendrán iguales. Puedes indicar si llevar a cabo o no el evento de destrucción para el objeto actual y el evento de creación para el nuevo.

Destroy the instance Con esta acción destruyes la instancia actual. Esa instancia ejecuta el evento de destrucción de la instancia.

Destroy instances at a position Con esta acción puedes destruir todas las instancias cuya caja límite contiene una posición dada. Esto es útil por ejemplo cuando empleas la explosión de una bomba. Cuando marcas la casilla Relative, la posición es relativa a la posición de la instancia actual.

Change the sprite Usa esta acción para cambiar el sprite de la instancia. Debes indicar un nuevo sprite. También puedes indicar un factor de escalado. Un factor de 1 significa que el sprite no es escalado. El factor de escalado debe ser mayor que 0. Por favor recuerda que el escalado reducirá la velocidad del dibujo. El cambio de sprites es una característica importante. Por ejemplo, a menudo querrás cambiar el sprite de un personaje de acuerdo a la dirección a la que se dirige. Esto se puede lograr haciendo diferentes sprites para cada una de las (cuatro) direcciones. En los eventos del teclado para las teclas del cursor estableces la dirección de movimiento y el sprite.

Transform the sprite Usa esta acción para cambiar el tamaño y orientación del sprite de la instancia. Usa los factores de escale para hacer el sprite más grande o pequeño. El ángulo (angle) indica la orientación en sentido anti horario del sprite. Por ejemplo, para hacer que el sprite se oriente en la dirección del movimiento usa el valor

direction. Esto es muy útil para un juego de coches, por ejemplo. Esta acción sólo está

disponible en la función registrada.

Set sprite blending Normalmente el sprie se dibuja como se ha definido. Usando esta función puedes cambiar el color del sprite. Este color se combina con los colores del sprite Si quieres dibujar un sprite en varios colores debes definir el sprite en blanco y negro y usar el color para definir la nueva apariencia del sprite. También puedes indicar una transparencia (alpha): 0 significa totalmente transparente y 1 totalmente opaco. Con un valor intermedio (Ej.: 0.5) conseguirás que se pueda ver el fondo a través del sprite. Esto es muy útil para explosiones. Esta acción sólo está disponible en la función registrada.

Play a sound Con esta acción reproduces uno de los recursos de sonido que agregaste al juego. Puedes indicar el sonido a reproducir y si debiera reproducirse solo una vez (el valor por defecto) o hacerlo continuamente Se pueden reproducir varios archivos wave al mismo tiempo, pero sólo puede reproducirse un midi a la vez. Así que si inicia el sonido de un midi, el midi actual se detiene. A menos que el sonido tenga múltiples buffers sólo se puede reproducir una instancia del sonido. Por lo que si el mismo sonido se está reproduciendo, se detiene y vuelve a empezar

.

Stop a sound Esta acción detiene el sonido indicado. Si hay varias instancias del sonido reproduciéndose, todas son detenidas.

If a sound is playing Si el sonido indicado está sonando la acción siguiente se ejecuta. Si no, la acción siguiente se ignora. Puedes seleccionar Not para que actúe al revés (es decir, si el sonido no está la acción se ejecuta). Por ejemplo, puedes comprobar si está sonando la música de fondo y si no está sonando, haces que empiece a sonar otra canción. Esta acción devuelve true cuando el sonido suena por los altavoces. Cuando usas la acción de hacer sonar un sonido tarda un poco hasta que el sonido llega a los altavoces y así que esta acción devolverá false durante ese pequeño espacio de tiempo. Cuando detienes un sonido, tampoco se para instantáneamente así que la acción tardará un poco en devolver false,

Go to previous room Ir al cuarto anterior. Puedes indicar el tipo de transición entre los cuartos. Experimenta para que veas cuál es el que te agrada. Si estás en el primer cuarto, se da un error.

Go to next room Ir al siguiente cuarto. Puedes indicar la transición. Si estás en el último cuarto da un error.

Restart the current room Se reinicia el cuarto actual. Puedes indicar el efecto de transición.

Go to a different room Con esta acción vas a un cuarto en particular. Puedes indicar el cuarto y el efecto de transición.

If previous room exists Esta acción verifica si existe el cuarto anterior. Si es cierto, se ejecuta la siguiente acción. Normalmente necesitas hacer esta comprobacion antes de moverte al cuarto anterior.

If next room exists Esta acción verifica si existe el siguiente cuarto. Si es cierto, se ejecuta la siguiente acción. Normalmente necesitas hacer esta comprobacion antes de moverte al siguiente cuarto.

Acciones principales, grupo 2 Aquí tenemos algunas acciones más, relacionadas con el tiempo, mostrar mensajes al usuario, y al juego en conjunto.

Set an alarm clock Con esta acción puedes configurar uno de los doce relojes de alarma para la instancia. Puedes indicar el número de pasos y la alarma. Después del número indicado de pasos, la instancia recibirá el correspondiente evento de alarma. También puedes incrementar o decrementar el valor marcando la casilla Relative. Si configures la alarma a un valor menor o igual que 0 la desactivas, por lo que no se genera el evento.

Sleep for a while Con esta acción puede congelar la escena por un cierto tiempo. Esto usualmente se usa al inicio de un nivel o cuando le das algún mensaje al jugador. Especificas el número de milisegundos a pausar. También indicas si la pantalla debiera ser dibujada primero para mostrar la situación más reciente.

Display a message Con esta acción puedes mostrar un mensaje en una ventana de diálogo. Simplemente tecleas el mensaje. Si usas el símbolo # en el texto del mensaje será interpretado como un carácter de nueva línea (usa \# para obtener el símbolo #). Si el mensaje empieza con una comilla o dobles comillas, se interpreta como una expresión. Ve el team correspondiente sobre las expresiones.

Show the game information Con esta acción puedes mostrar la ventana de información del juego.

Restart the game Con esta acción puedes reiniciar el juego desde el principio.

End the game Con esta acción termina el juego.

Save the game Con esta acción puedes guardar el estado actual del juego. Especificas el nombre del archivo a guardar (el archivo es creado en la carpeta de trabajo del juego). Después el juego puede ser cargado con la siguiente acción (observa que cosas como el sonido que está sonando, los contenidos de las estructuras de datos, partículas, etc…no se cargarán).

Load the game Carga el estado del juego desde un archivo. Aquí especificas el nombre del archivo. Asegúrate de que el juego guardado corresponde al mismo juego y que fue creado con la misma versión del Game Maker. De otra manera pudiera haber errores (para ser precisos, el juego se carga en el evento step actual. Por lo que aún se realizan algunas acciones después de esta aún son realizadas en el juego actual, ¡no en el cargado!).

Acciones de control Hay varias acciones con las que puedes controlar qué otras acciones se llevan a cabo. La mayoría de estas acciones hacen una pregunta, por ejemplo si es que una posición está vacía. Cuando la respuesta es yes (true) se ejecuta la siguiente acción, de otra forma se salta esa acción. Si quieres que se ejecuten o salten varias acciones basándote en el resultado puedes colocarlas dentro de un bloque. También puede haber una parte else, la cual se ejecuta cuando la respuesta es no. Así, una pregunta normalmente tiene la siguiente estructura:

Aquí se pregunta si una posición para la instancia actual está libre de colisión. De ser así, la instancia comienza a moverse en una dirección dada. Si no, la instancia es movida a una posición dada. Para todas las preguntas hay un campo marcado NOT. Si lo marcas, el resultado de la pregunta se invierte. Esto es, si el resultado era verdadero se vuelve falso, y si era falso, se vuelve verdadero. Esto te permite realizar ciertas acciones cuando una pregunta no es verdadera. Para muchas preguntas puedes indicar si deben aplicar a todas las instancias de un objeto en particular. En este caso el resultado es verdadero solo si es verdadero para todas las instancias del objeto. Por ejemplo, puedes checar si para todas las pelotas la posición ligeramente a la derecha está libre de colisión.

Las siguientes preguntas y acciones relacionadas están disponibles. (Nota que todas ellas tienen un icono con forma y color de fondo diferentes de manera que puedan ser distinguidos más fácilmente de otras acciones). If a position is collision free Esta pregunta devuelve verdadero si la instancia actual, colocada en la posición indicada no provoca una collision con algún objeto. Puedes especificar si la posición es absoluta o relativa. Puedes también indicar si solo los objetos sólidos o todos los objetos debieran ser tomados en cuenta. Esta acción es normalmente empleada para checar si la instancia se puede mover a una posición en particular.

If there is a collision at a position Esta es la inversa de la acción anterior. Devuelve verdadero si hay una colisión cuando la instancia actual es colocada en la posición indicada (de nuevo, ya sea sólo con objetos sólidos o con toda clase de objetos).

If there is an object at a position Esta pregunta devuelve verdadero si la instancia colocada en la posición indicada encuentra una instancia del objeto indicado.

If the number of instances is a value Especificas un objeto y un número. Si el número de instancias del objeto es igual al número la pregunta devuelve verdadero. De otra forma devuelve falso. Puedes también indicar que la revisión debiera ser si el número de instancias es menor o mayor que el valor. Esto se usa normalmente para checar si todas las instancias de un tipo en particular han desaparecido. Este es normalmente el momento de terminar el nivel o el juego.

With a change perform next action Especificas el número de lados del dado. Entonces si el dado cae en uno, el resultado es verdadero y se realiza la acción. Esto se puede emplear para agregar cierta aleatoriedad en tu juego. Por ejemplo, en cada paso puedes generar con cierta probabilidad una bomba o un cambio de dirección. Entre mayor sea el número de lados del dado, la probabilidad es menor. Puedes emplear números reales. Por ejemplo, si configuras el número de lados a 1.5 la siguiente acción se realizará dos de tres veces. El emplear un número menor que 1 no tiene sentido.

If the user answers yes to a question Especificas una pregunta. Se muestra una ventana de diálogo al usuario con dos botones: Yes y No. El resultado es verdadero si el jugador contesta Yes.

If an expression is true Puedes introducir una expresión. Si la expresión se evalúa como verdadera (esto es, un número mayor o igual a 0.5) se realizará la siguiente acción. Ve más abajo para más información sobre las expresiones.

If a mouse button is pressed Devuelve verdadero si el botón indicado del ratón es presionado. Un uso estándar está en el evento paso. Puedes checar si un botón del ratón está presionado, y si es así, por ejemplo moverte a esa posición (usa la acción jump to a point con los valores

mouse_x

y

mouse_y).

If instance is aligned with grid Devuelve verdadero si la posición de la instancia se encuentra sobre una cuadrícula. Especificas el espaciado horizontal y vertical de la cuadrícula. Esto es muy útil cuando ciertas acciones, como el dar una vuelta, no son permitidas cuando se está alineado a una posición en la cuadrícula.

Start of block Indica el inicio de un bloque de acciones.

End of block Indica el final de un bloque de acciones.

Else Detrás de esta acción sigue el else, que se ejecuta cuando el resultado de la pregunta es falso. Repeat next action Esta acción se emplea para repetir la siguiente acción (o bloque de acciones) cierto número de veces. Puedes simplemente indicar el número.

Exit the current event Cuando se encuentra esta acción, no se realiza ninguna otra en el evento. Normalmente se emplea después de una pregunta. Por ejemplo, cuando una posición está libre no se necesita hacer nada por lo que salimos del evento. En este ejemplo, las acciones siguientes son solo ejecutadas cuando hay una colisión.

Si deseas más control sobre lo que está ocurriendo en el juego puedes uar el lenguaje de programación de Game Maker, el GML, que se explica en la segunda parte del manual. Te da mucha más flexibilidad que usando las acciones, gracia a que puedes usar tus propias variables. Las acciones siguientes se ocupan de esto: Execute a piece of code Cuando agregas esta acción, se muestra una ventana en la que puedes introducir una pieza de código. Éste funciona en la misma forma que definir scripts. La única diferencia es que puedes indicar para qué instancias se debe ejecutar el código. Usa esta acción para pequeñas piezas de código. Para piezas más largas se te recomienda usar scripts.

Comment Usa esta acción para agregar una línea de comentarios a la lista de acciones. La línea se muestra en fuente cursiva. No hace nada cuando se ejecuta el evento. El agregar comentarios te ayuda a recordar lo que estás haciendo en tus eventos.

Set the value of a variable Hay muchas variables internas en el juego. Con esta acción puedes cambiar sus valores. También puedes crear tus propias variables y asignarles valores. Indicas el nombre de la variable y un nuevo valor. Cuando seleccionas la opción Relative, el valor se suma al valor actual de la variable. ¡Por favor nota que esto sólo puede usarse si la variable ya tiene un valor asignado!. Ve más adelante para más información sobre las variables.

If a variable has a value Con esta acción puedes checar cuál es el valor cierta variable. Si el valor de la variable es igual al número introducido, la pregunta

devuelve true. En cualquier otro caso devuelve false. Puedes indicar si se checará si la el valor es menor o mayor que el dado. Ve abajo para más información sobre las variables. De hecho, también puedes usar esta acción para comparar dos expresiones.

Draw the value of a variable Con esta acción puedes dibujar el valor de una variable en cierta posición de la pantalla. Esta acción sólo se puede usar en el evento Draw.

Acciones de score En la mayoría de los juegos el jugador tendrá cierto score. También muchos juegos le dan al jugador cierto número de vidas. Finalmente, a menudo el jugador cuenta con cierto nivel de energía. Las siguientes acciones permiten manejar de manera sencilla el score, las vidas y la energía del jugador.

Set the score Game Maker tiene un mecanismo interno de score. El score normalmente se muestra en el título de la ventana. Puedes usar esta acción para cambiar el score. Simplemente introduces un nuevo valor para éste. A menudo querrás agregar puntos al score. En este caso no olvides seleccionar la opción Relative.

If score has a value Con esta pregunta puedes checar si el score ha alcanzado un valor en particular. Puedes indicar el valor y si el score debe ser igual, menor o mayor a ese valor.

Draw the value of score Con esta acción puedes dibujar el valor del score en cierta posición de la pantalla. Proporcionas la posición y el título que se mostrará antes del score. El score se dibuja con la fuente actual. Esta acción sólo puede emplearse en el evento draw de algún objeto.

Display the highscore table Cada juego guarda los diez mejores scores. Esta acción muestra la lista de récords. Si el score actual está entre los mejores diez, el nuevo score se inserta y el jugador puede introducir su nombre. Puedes indicar la imagen de fondo a usar, si la ventana tendrá borde, el color para la nueva y las otras entradas, y la fuente a emplear.

Clear the highscore table Esta acción vacía la tabla de récords.

Set the number of lives El Game Maker también cuenta con un sistema interno de vidas. Con esta acción puedes cambiar el número de vidas que quedan. Normalmente lo pones a un valor como 3 al inicio del juego y lo aumentas o disminuyes dependiendo de lo que ocurra. No olvides

seleccionar la opción Relative si deseas agregar o restar al número de vidas. En el momento en que el número de vidas llegue a 0 (ó menos que 0) se genera un evento “no more lives”.

If lives is a value Con esta pregunta puedes checar si el número de vidas ha llegado a un cierto valor. Puedes indicar el valor y si el número de vidas debe ser igual, menor o mayor a ese valor.

Draw the number of lives Con esta acción puedes dibujar en pantalla en número de vidas. Das la posición y el título que se colocará antes del número de vidas. El número de vidas se dibuja con la fuente actual. Esta acción sólo puede ser usada en el evento draw de algún objeto.

Draw the lives as image En lugar de indicar el número de vidas con un número, es mejor usar pequeñas imágenes para indicar las vidas. Esta acción hace eso precisamente. Especificas la posición y la imagen, y en la posición indicada se dibuja el número de vidas como imágenes. Esta acción sólo puede emplearse en el evento draw de un objeto.

Set the health Game Maker tiene un mecanismo interno de energía. Puedes emplear esta acción para cambiar la energía. Un valor de 100 se considera como energía completa y 0 es sin energía. Simplemente das un nuevo valor para la energía. A menudo querrás restar algo a la energía. En este caso no olvides seleccionar la opción Relative. Cuando la energía sea igual o menor que 0 se genera un evento “out of health”.

If health is a value Con esta pregunta puedes checar si la energía ha alcanzado cierto valor. Indicas el valor y si la energía debe ser igual, menor o mayor que ese valor.

Draw the health bar Con esta acción puedes dibujar la energía en forma de una barra. Cuando la energía es 100 la barra es dibujada completa. Cuando es 0 la barra está vacía. Puedes indicar la posición y el tamaño de la barra de energía y el color para la barra y el fondo de la misma.

Set the window caption information Normalmente en el título de la ventana se muestra el nombre del cuarto y el score. Con esta acción puedes cambiar esto. Puedes indicar si se muestra o no el score, las vidas, la energía y los títulos para estas opciones.

Acciones de dibujo

Normalmente, a cada instancia se le dibuja su sprite en cada paso del juego. Puedes cambiar esto poniendo acciones en el evento draw de un objeto. Observa que estas acciones sólo se ejecutarán si están colocadas en el evento draw y la instancia es visible, en cualquier otro caso simplemente se ignoran.

Draw a sprite image Indicas el sprite, la posición (ya sea absoluta o relativa a la posición actual de la instancia) y la subimagen del sprite. (Las subimágenes están numeradas de 0 hacia arriba). Si quieres dibujar la subimagen actual, usa el número –1.

Draw a background image Indicas la imagen de fondo, la posición (absoluta o relativa) y si la imagen debe o no repetirse en todo el cuarto.

Draw a text Indicas el texto y la posición. Un símbolo # en el texto se interpreta como el inicio de una nueva línea. (Usa \# para mostrar el símbolo #). Por lo que puedes crear texto multilínea. Si el texto inicia con comilla simple o doble, es interpretado como una expresión. Por ejemplo, puedes usar

'X: ' + string(x) para mostrar el valor de la coordenada x de la instancia. (La variable x guarda la coordenada x actual. La función string() convierte este número en una cadena. + combina las dos cadenas).

Draw a text transformed Esta acción es similar a la acción anterior pero en este caso puedes escalar el texto vertical y horizontalmente y rotarlo un ángulo determinado. Esta acción sólo está disponible en la versión registrada.

Draw a rectangle Indicas las coordenadas de las dos esquinas opuestas del rectángulo, ya sean absolutas o relativas a la posición actual de la instancia.

Draw a horizontal gradient Esta acción también dibuja un rectángulo pero lo rellena con un degradado de izquierda a derecha. Tienes que especificar las coordenadas del rectángulo y los dos colores para el degradado. Esta acción sólo está disponible en la versión registrada.

Draw a vertical gradient Esta acción es igual que la anterior pero el degradado es de abajo a arriba. Esta acción sólo está disponible en la versión registrada.

Draw an ellipse Indicas las coordenadas de las dos esquinas opuestas del rectángulo alrededor de la elipse, ya sean absolutas o relativas a la posición actual de la instancia.

Draw a gradient ellipse Igual que la anterior pero puedes especificar un color para el centro y otro para el borde para rellenar la elipse con un degradado. Esta acción sólo está disponible en la versión registrada.

Draw a line Indicas las coordenadas de los dos extremos de la línea; ya sean absolutas o relativas a la posición actual de la instancial.

Draw an arrow Dibuja una flecha. Puedes especificar las coordenadas del principio y final de la fecha y el tamaño de la punta.

Set the colors Te permite seleccionar el color usado para rellenar los rectánguos y elipses, y el color empleado para las líneas alrededor de los rectángulos y elipses y para dibujar una línea.

Change fullscreen mode Con esta acción puedes cambiar el modo de la pantalla de ventana a pantalla completa y viceversa. Puedes indicar si se cambia entre modos o si cambiar a modo de ventana o a modo a pantalla completa.

Take a snapshot image of the game Puedes sacar una foto de la pantalla y guardarla como una imagen .bmp. Debes especificar el nombre del archivo donde se guardará la imagen. Esta acción sólo está disponible en la versión registrada.

Create an effect Con esta acción puedes crear varios efectos de una manera sencilla. Especificas el tipo de efecto (explosion, humo,…), su posición, tamaño y color y si debe dibujarse sobre los objetos o bajo ellos. Todo lo demás es automáico (para el efecto de lluvia la posición es irrelevante porque siempre cae desde la parte superior de la pantalla. Para conseguir lluvia continua debes llamar a esta acción desde el evento step). Esta acción sólo está disponible en la versión registrada.

Usando expresiones y variables En muchas acciones necesitas especificar valores para los parámetros. En lugar de escribir un número, puedes poner una fórmula (ejemplo: 32*12). Pero también puedes proporcionar expresiones mucho más complicadas. Por ejemplo, si quieres doblar la velocidad horizontal, puedes poner

2*hspeed. En esta expresión hspeed es una variable que se refiere a la velocidad horizontal actual de la instancia.

También hay otras variables que puedes usar, las más importantes son las siguientes: x coordenada x de la instancia

y coordenada y de la instancia hspeed velocidad horizontal (en píxeles por step) vspeed velocidad vertical (en píxeles por step) direction dirección actual en grados (de 0 a 360) speed velocidad actual en esta dirección visible si el objeto es visible (1) o no (0) image_index esta variable indica qué subimagen del sprite se está dibujando. Si pones la variable image_speed a 0 puedes mostrar una imagen fija, parando la animación del sprite. image_speed indica la velocidad con la que las subimágenes del sprite cambian durante la animación. Por defecto vale 1. Si pones un valor mayor a 1 algunas subimágenes de la animación se saltan y de la impresión de que la animación va más rápido. Si lo haces menor que 1 las subimágenes se repiten y da la impresión de que la animación va más lenta. score valor actual del score lives número actual de vidas health health actual (0-100) mouse_x posición x del ratón mouse_y posición y del ratón Puedes cambiar casi todos estos valores usando la acción set variable. También puedes definir tus propias variables simplemente dándoles un valor (no uses la opción relative al hacer esto, pues todavía no existe esa variable). También puedes usarlas luego en expresiones. Las variables que creas son variables locales de la instancia, es decir, cada objeto tiene la suya propia distinta a la de los demás. Para crear una única variable para todos, pon global seguido de un punto delante del nombre de la variable.

También puedes acceder a las variables de los demás objetos poniendo el nombre del objeto, un punto y el nombre de la variable a la que quieres acceder. Por ejemplo, para mover una pelota al lugar donde hay una moneda puedes dar a la posición los valores (moneda.x , usando

moneda.y). En caso de colisión, puedes acceder a las variables del otro objeto (el objeto contra el que estás chocando)

other.nombre_de_la_variable. En expresiones condicionales puedes usar comparaciones como < (menor que), >,

etc.

Por último, también puedes usar funciones. Por ejemplo, la función

random(10) devuelve un número real menor que 10. Así, puedes

hacer que la velocidad o la dirección tomen este valor. Existen muchas más funciones que se describen en la parte del manual dedicada al GML.

Creando rooms Ahora que has definido los objetos con su comportamiento en forma de eventos y acciones, es hora de crear los cuartos o niveles en los que se llevara a efecto el juego. Cualquier juego requerirá al menos un cuarto. En estos cuartos colocamos instancias de los objetos. Una vez que el juego inicia se muestra el primer cuarto y las instancias en él

toman vida por las acciones en sus eventos de creación.

Hay un gran número de posibilidades al crear cuartos. Además de establecer ciertas propiedades y agregar las instancias de los objetos puedes agregar fondos, definir vistas, y agregar tiles. La mayoría de estas opciones se discuten más adelante en el Capítulo 20. en este capítulo solamente discutiremos las opciones básicas, el agregar instancias de

objetos y la configuración de las imágenes de fondo.

Para crear un cuarto, selecciona Add Room en el menu Add. Se muestra la siguiente ventana:

En la parte superior de la ventana hay una barra de herramientas. Desde ella puedes indicar el tamaño de las celdas de la rejilla usada para alinear objetos, si deben mostrarse o no los fondos,...A veces es útil ocultar temporalmente algunos elementos del room. Observa que cuando estés añadiendo instancias de ojetos éstas siempre se mostrarán, independientemente de la configuración de las vistas. También hay botones para eliminar todas las instancias del room o para moverlas una cantidad determinada de píxeles. Usa valores negativos para moverlas hacia arriba o a hacia la izquierda. Esto es muy útil cuando decides agrandar el cuarto (o para situar instancias fuera del room).

Finalmente están los botones Undo para deshacer los cambios y OK para guardarlos (usa la cruz en la esquina superior derecha para cerrar la ventana sin guardar los cambios).

A la izquierda hay tres fichas (cinco en modo advanced). La ficha objects es donde puedes agregar instancias de los objetos al cuarto. En la ficha settings puedes indicar varias opciones para el cuarto. En la ficha backgrounds puedes configurar las imágenes de fondo para el cuarto.

Añadiendo instancias A la derecha en la ventana de diseño puedes ver el cuarto. Al principio está vacío, con un fondo gris.

Para agregar instancias al cuarto, primero selecciona la ficha objects si no está visible. A continuación selecciona el objeto que deseas agregar haciendo click en el botón con icono de un menu (o haciendo clic en el área de imagen a la izquierda). La imagen del objeto aparece a la izquierda. (observa que hay una cruz en la imagen. Esta indica cómo se

alinearan las instancias con la cuadrícula). Ahora haz click con el botón izquierdo del ratón en el área a la derecha. Aparece una instancia del objeto. Ésta se alineará a la cuadrícula indicada. Si mantienes presionada la tecla mientras colocas la instancia no se alineará a la cuadrícula. Si mantienes presionado el botón mientras mueves el ratón puedes mover la instancia sobre la room hasta una nueva posición. Si pulsas mientras pulsas el botón y mueves el ratón añadirás varias instancias a la vez. Con el botón derecho del ratón puedes eliminar las instancias. De esta manera es como defines el contenido del cuarto. Si mantienes presionado el botón mientras lo arrastras sobre el cuarto, eliminarás varias instancias.

Como te darás cuenta, si colocas una instancia sobre otra, la primera desaparece. Normalmente será lo que desees, pero no siempre. Esto puede evitarse al deshabilitar la opción Delete underlying a la izquierda.

Si quieres cambiar la posición de una instancia pulsa la tecla y pincha con el botón izquierdo del ratón. Sin solta ninguna de las dos teclas puedes arrastrar la instancia a una nueva posición (usa para posicionarlo con mayor precisión).

Si mantienes pulsado mientras pinchas con el botón derecho sobre una instancia aparece un menú. Desde este menú puedes borrar la instancia, especificar un posicionamiento preciso o mover la instancia al frente sobre todas las demás o al fondo bajo el resto.

Configuración del room Cada cuarto tiene ciertas opciones que puedes cambiar haciendo click en la ficha settings. Sólo trataremos las más importantes aquí.

Cada cuarto tiene un nombre, mejor dale uno con sentido. También hay un título. Este título se muestra en la ventana cuando se ejecuta el juego. Puedes establecer el ancho y alto del cuarto (en píxeles). También puedes configurar la velocidad del juego. Este es el número de pasos por segundo. Cuanto mayor sea la velocidad, más suave será el movimiento. Pero necesitarás una computadora más rápida para ejecutarlo.

Configurando el fondo Con la ficha backgrounds puedes establecer la imagen de fondo para el cuarto. De hecho, puedes indicar varios fondos. La ficha se ve como sigue:

En la parte superior versa el color de fondo. Puedes hacer clic sobre este para cambiarlo. El color de fondo sólo es útil si no usas una imagen de fondo que cubra todo el cuarto. De otra forma, mejor deshabilita la opción Draw background color ya que significaría una pérdida de tiempo.

Arriba verás una lista de 8 fondos. Puedes definir cada uno de ellos pero la mayoría de las veces sólo necesitaras uno ó dos. Para definir un fondo, primero selecciona uno en la lista. A continuación marca la opción Visible when room starts o de otra forma no lo verás. El nombre del fondo se pondrá en negritas cuando esté definido. Ahora indica una

imagen de fondo en el menu. Hay ciertas opciones que puedes cambiar. Primero de todo puedes indicar si la imagen de fondo se repetirá horizontal y/o verticalmente. Puedes también indicar la posición del fondo en el cuarto (esto también influirá el tiling). Otra opción es usar la opción Stretch para que el fondo ocupe toda la pantalla (puede distorsionar la imagen). Finalmente puedes hacer que el fondo se desplace dándole una velocidad horizontal o vertical (píxeles por step). No se recomienda dar velocidad al fondo si usas la opción Stretch.

Hay una opción más llamada Foreground image. Cuando la activas, el fondo se colocará en primer plano, y se dibujará al frente de todo en lugar de detrás de todo. Obviamente una imagen de este tipo debiera ser parcialmente transparente para que tenga alguna utilidad.

Distribuyendo tu juego Con la información de los capítulos anteriores puedes crear tus juegos. Una vez que hayas creado un buen juego probablemente quieras darlo a otras personas para que lo jueguen. Puedes distribuir libremente y en la forma que desees los juegos que crees con el Game Maker. Incluso puedes venderlos. Lee el acuerdo de licencia adjunto para más información al respecto.

Básicamente hay tres diferentes formas en las que puedes distribuir tus juegos. La manera más fácil es simplemente dar el archivo *.gm6 que contiene el juego. Sin embargo la otra persona debe tener el Game Maker. (No se te permite distribuir el Game Maker con tu juego peros ellos pueden bajarlo gratuitamente desde el sitio Web). Además, la otra persona puede hacer cambios al juego.

La segunda forma es crear un ejecutable del juego. Esto puede hacerse seleccionando la opción Create Executable en el menu File. Se te pedirá un nombre para el ejecutable que contendrá el juego. Indica un nombre, presiona OK y tendrás un juego ejecutable que puedes dar a quien tú quieras. Puedes configurar el icono para el juego ejecutable en la ventana Global Game Settings (Si tu juego usa algún otro archivo debieras copiarlos a la carpeta que contiene el ejecutable del juego). Ahora puedes distribuir este archivo a otras personas (tal vez quieras comprimirlo antes).

La tercera opción es crear un archivo de instalación. Hay varios programas freeware para la creación de instaladores disponibles en la red. Lo primero es crear una versión ejecutable del juego y luego emplear el instalador para crear una instalación. Cómo se haga esto depende del instalador que emplees.

Uso avanzado En esta sección se describen los aspectos más avanzados de Game Maker. En ella se explican los paths, fuentes, time lines, scripts y las técnicas para crear rooms con tiles y el uso de vistas. Esta sección se divide en los siguientes temas: Modo avanzado Más sobre los sprites Más sobre sonido y música Más sobre los fondos Más sobre los objetos Más acciones Más sobre las rooms Fuentes Paths Time lines Scripts

Modo avanzado Hasta ahora hemos considerado las opciones más simples de Game Maker. Pero hay muchas mas posibilidades. Para habilitarlas debes ejecutar Game Maker en Modo Avanzado (Advanced Mode).

Es fácil de cambiar. En el Menú File, click en el ítem Advanced Mode. (Para ver los cambios debes reiniciar Game Maker o al menos guardar tu juego y volver a cargarlo). Cuando comience Game Maker en Advanced Mode, el siguiente formulario se mostrara:

Contiene todo lo que estaba en Simple Mode, pero hay un número de recursos adicionales, botones e ítems de menú. También, como veremos en los siguientes capítulos los diferentes recursos tienen opciones adicionales. Aquí analizaremos los diferentes ítems del menú.

Menú File En el Menú File puedes encontrar los siguientes comandos.



Merge Game (Unir Juego). Con este comando puedes unir todos los recursos (sprites, sonidos, objetos, cuartos, etc.) de otro juego en tu actual proyecto. Esto es bastante útil se deseas hacer algo que quieras volver a usar (Ej.: Sistemas de menú). Fíjate que todos los recursos, instances y tiles tendrán nuevos nombres lo que puede causar problemas si los usas en scripts. Es tu responsabilidad hacer que sea seguro que los recursos en los dos diferentes archivos tengan distintos nombres, de otro modo, podrían aparecer problemas.



Preferences (Preferencias). Aquí puedes configurar varias opciones del programa. Estas opciones se aplicarán cada vez que uses Game Maker y se explican en el apartado siguiente.

Preferencias Aquí puedes poner un número de preferencias sobre Game Maker. Estas serán recordadas entre diferentes llamadas a Game Maker. Las siguientes preferencias se podrán elegir:



Show recently edited games in the file menú (Mostrar los juegos recientemente editados en el Menú File): Si está chequeada los ocho juegos mas recientemente editados serán mostrados debajo de recent files en el Menú File.



Load last opened file on startup (Cargar el último juego abierto al comienzo): Si está chequeada cuando comiences Game Maker el archivo abierto más recientemente será abierto automáticamente.



Maximal number of backups (Máximo numero de copias): Aquí indicas cuántas (1-9) diferentes copias de respaldo deben ser recordadas por el programa.



Show progress while loading and saving files. Cuando se carga o se guarda el juego se muestra un indicador de progreso.



At startup check for and remove old temporary files. Game Maker y los juegos creados con él, crean unos archivos temporales. Normalmente estos archivos se eliminan automáticamente pero a veces, debido a fallos en los juegos, no ocurre así. Activando esta opción Game Maker chequea si existen archivos de este tipo y los elimina al arrancar.



Run games in secure mode. (Ejecutar el juego en modo seguro): Si está chequeada, cualquier juego creado con Game Maker que funcione en tu maquina, no permitirá ejecutar programas externos, o cambiar o eliminar archivos en un lugar diferente del que se encuentre el juego (Esto es una garantía contra Troyanos). Chequeándola puede hacer que ciertos juegos que usen archivos externos no se ejecuten correctamente. Esta opción sólo funciona al ejecutar los juegos desdeGame Maker y no al jugarlos desde el ejecutable.



Show the origin and bounding box in the sprite image (Mostrar el origen y la bounding box en el sprite): Si está chequeada, en el formulario de propiedades del sprite, el origen y la bounding box del sprite será indicada.



In object properties, show hints for actions (En las propiedades del objeto, mostrar descripción para las acciones): Si esta chequeada, en el formulario de propiedades del objeto, cuando pases el puntero del mouse sobre alguna de las acciones, una descripción será mostrada.



When closing, remove instances outside the room. Si se activa, el programa te avisará si hay instancias o tiles fuera del room y te preguntará si quieres eliminarlas.



Remember room settings when closing the form. (Recordar la configuración del cuarto cuando se cierre el formulario): Si esta chequeada, un numero de opciones del cuarto; como whether to show the grid, whether to delete underlying objects, etc. serán recordadas cuando edites el cuarto más adelante.



Scripts and code and colors (Scripts y código en colores): Consulta el capítulo sobre scripts para más información.



Image editor (Editor de imágenes): Por defecto Game Maker tiene un editor interno de imágenes tú tienes un mejor programa editor de imágenes puedes indicarlo aquí para usar un programa diferente para edita imágenes.



External sound editors (Editores externos de sonido): Puedes indicar qué editor externo quieres usar para los diferentes tipos de sonido. (Fíjate que Game Maker no tiene un editor interno de sonido, por lo que si no indicas ninguno no podrás editar los sonidos).

Menú Edit En el Menú File puedes encontrar los siguientes comandos:



Insert group (Insertar grupo): Los recursos pueden ser agrupados juntos. Esto es bastante útil si tú haces un juego grande. Por ejemplo, puedes poner todos los sonidos relativos a un objeto juntos en un grupo, o puedes agrupar todos los objetos que usas en un nivel en particular. Este comando crea un nuevo grupo en el tipo de recurso seleccionado actualmente. Te preguntaras por el nombre. Los grupos pueden contener otros grupos dentro de ellos, etc. Como indica bajo puedes arrastrar recursos hacia los grupos.



Find Resource (Buscar recurso): Con este comando pones el nombre del recurso y abre el formulario de propiedades correspondiente.



Expand Resource Tree. Expande completamente el árbol de recursos, mostrándolos todos.



Collapse Resource Tree. Contrae completamente el árbol de recursos, ocultándolos todos.



Show Object Information. Con este comando puedes obtener un resumen de todos los objetos del juego.

Menú Add Con este menú puedes añadir recursos adicionales. Fíjate que para cada uno de ellos hay un botón en la barra de herramientas y un método abreviado del teclado.

Menú Scripts En este menú puedes encontrar los comandos siguientes:



Import Scripts. Se usa para importar scripts desde otros archivos.



Export Scripts. Sirve para guardar tus scripts en un archivo para poder distribuirlos. Cuando seleccionas un script sólo ése es guardado. Cuando seleccionas un grupo de scripts se guardan todos los scripts del grupo. Cuando seleccionas el recurso raíz (o un tipo diferente de recurso) se guardan todos los scripts. También puedes acceder a este menú clickando con el botón derecho del ratón sobre un script o un grupo de scripts.



Show Built-in Variables. Muestra una lista ordenada de todas las variables propias locales y globales.



Show Built-in Functions. Muestra una lista ordenada de todas las funciones de Game Maker.



Show Constants. Muestra una lista de todas las constantes propias de Game Maker y de las definidas en las opciones del juego.



Show Resource Names. Muestra una lista ordenada de todos los recursos. Puedes pinchar en los recursos para editarlos.



Search in Scripts. Puedes buscar una cadena de texto en todos los scripts a la vez. Puedes pinchar en los resultados para editar ese script.



Check Resource Names. Chequea todos los nombres de los recursos, mostrando los nombres incorrectos, duplicados o si coinciden con una variable, función o constante. Puedes pinchar en los resultados para editar ese recurso.



Check All Scripts. Chequea todos los scripts buscando errores. Puedes pinchar en los resultados para editar ese script.

Más sobre los sprites Existen varias posibilidades avanzadas para crear tus propios sprites. La información sobre las opciones avanzadas de los sprites se halla en los siguientes temas: Editando los sprites Strips Editando subimágenes individualmente Características avanzadas de los sprites

Editando los sprites Hasta ahora, cargábamos nuestros sprites desde archivos. Sin embargo, también es posible crearlos o editarlos con Game Maker. Para hacer esto, abre la ventana de propiedades de sprite, pulsando sobre uno de tus sprites. (O creando uno nuevo). Ahora presiona el botón etiquetado como Edit Sprite. Un Nuevo formulario aparecerá mostrando todas las subimágenes que forman el sprite.

El formulario de edición del sprite tiene el siguiente aspecto:

A la derecha veras las diferentes imágenes que forman el sprite. Observa que en Game Maker todas las subimágenes de un sprite, deben tener el mismo tamaño. A la izquierda, se reproduce una animación del sprite. (Si no ves la animación, active la opción Show Preview.) Bajo la previsualización, puedes cambiar la velocidad de animación y el color de fondo. De esta manera, puedes hacerte una idea de como se vera la animación en el juego. (Observa que esta velocidad es solo para la previsualización. La velocidad de la animación durante el juego, depende de la velocidad del nivel (“room”).

El editor de sprites contiene una gran variedad de funciones para crear o modificar el sprite. Puedes acceder a todas a través de los menús. (Para algunas, hay botones directamente en la barra de herramientas.) Algunos comandos trabajan sobre imagines individuales. Requieren que primero selecciones una sub-imagen con el ratón.

Menú File

El menú File contiene un cierto numero de funciones para cargar y grabar sprites.



New. Crea un Nuevo sprite vacío. Debes indicar el tamaño del sprite. (Recuerda que todas las imagines deben tener el mismo tamaño.)



Create from file. Crea el sprite desde un archivo. Pueden usarse gran variedad de tipos de archivo. Todos crean un sprite consistente en una imagen simple, a excepción de los GIFs animados, que son divididos en sus sub-imágenes. Por favor date cuenta de que el color transparente es el que tiene el píxel situado en la esquina inferior izquierda del sprite, no el color transparente del archivo GIF. Puedes elegir múltiples imagines para que se carguen todas. Deben tener el mismo tamaño.



Add from file. Añade una imagen (o imágenes) de un archivo al sprite con el que estemos trabajando. Si las imagines no tienen el mismo tamaño, puedes elegir donde ponerlas o estirarlas/encogerlas. Puedes elegir varias imagines para que se carguen todas. Deben tener el mismo tamaño.



Save as GIF. Guarda la imagen como un gif animado.



Save as strip. Guarda todas las imagines en formato bmp (mapa de bits), con todas las subimágenes colocadas una junto a otra.



Create from strip. Te permite crear un sprite desde un strip (tira de imágenes). Mira debajo para más información.



Add from strip. Utiliza esta opción para añadir imágenes de una tira (strip). Más info debajo.



Close saving changes. Cierra el formulario, guardando los cambios realizados en el sprite. Si no quieres guardar los cambios, pulsa sobre el botón de cierre de la ventana.

Menú Edit

El menú edición contiene varios comandos para trabajar con el sprite seleccionado. Puedes cortarlos al portapapeles (clipboard), pegar una imagen desde el portapapeles, borrar el sprite y cambiar el orden de las subimágenes dentro de la secuencia de la animación. Por último, existe un comando para editar una subimagen de forma individual, utilizando el programa de dibujo incorporado de GM (ver debajo).

Menú Transform

En el menú “transform” puedes realizar algunas transformaciones sobre las imágenes.



Mirror horizontal. Invierte horizontalmente la imagen.



Flip vertical. Invierte verticalmente la imagen.



Shift. Con esta opción puedes deslizar las imágenes a derecha o izquierda según especifiques



Rotate. Puedes rotar las imágenes 90 grados, 180, o cualquier otra cantidad de grados arbitrariamente. En el último caso, debes especificar la calidad. Experimenta para conseguir mejores resultados.



Resize Canvas. Aquí puedes cambiar el tamaño del lienzo. También puedes indicar donde se sitúan las imágenes antiguas dentro del nuevo lienzo.



Stretch. Te permite estirar o contraer las imágenes a un Nuevo tamaño. Puedes indicar la escala y la calidad.



Scale. Este comando cambia de tamaño las imágenes (pero no el tamaño del sprite que hay en su interior!). Puedes indicar la escala, la calidad y la posición de las imágenes actuales dentro de las escaladas.

Menú Images

En el menú “images” puedes realizar varias operaciones sobre las imágenes.



Cycle left. Mueve todo el ciclo una posición a la izquierda. Esto hace que la animación comience en un punto diferente.



Cycle right. Mueve todo el ciclo de la animación una posición hacia la derecha.



Black and white. Transforma el sprite en uno en blanco y negro (no afecta al color transparente!).



Colorize. Te permite cambiar el color (matiz) de las imágenes. Utiliza el deslizador para conseguir diferentes colores.



Colorize Partial. Te permite cambiar el color de parte de las imágenes. Puedes seleccionar el color antiguo y un rango (espectro) de colores similares, para después indicar en Nuevo color en que se convertirán los colores de este espectro. Esto puede utilizarse par alas instancias para cambiar solo el color de las camisetas de los jugadores, por ejemplo.



Shift Hue. Otra forma de cambiar el color de las imágenes. Pero en esta ocasión, los colores varían sobre la cantidad indicada, consiguiendo efectos más interesantes.



Intensity. Te permite cambiar la intensidad, introduciendo valores para la saturación y la luminosidad de las imágenes.



Invert. Invierte el color de las imágenes.



Fade. Aquí especificas un color una cantidad. Los colores en las imágenes realizaran un degradado hacia ese color.



Transparency. Te permite indicar un nivel de transparencia. Se consigue transformando un determinado número de sprites en píxeles transparentes.



Blur. Desenfocando las imágenes, los colores se mezclan un poco,

mas difusos. Cuanto mayor sea el valor, mas difusa se vera

la imagen.



Outline. Crea un contorno alrededor de la imagen. Se te pregunta el color y si las imágenes actuales deben ser borradas o no (dejando solo el contorno).



Boundary. Similar al contorno, pero no se dibuja fuera, sino sobre los píxeles de los márgenes.



Crop. Esto hace que las imágenes sean lo mas pequeñas posible. Esto es muy útil, porque, a mayores imágenes, más memoria de video se necesita. Deberías dejar solo un pequeño borde alrededor de los sprites para evitar problemas con las transparencias.

Experimenta con estos comandos para conseguir los sprites que pretendes.

Menú Animation

Bajo el menú de animación puedes crear nuevas animaciones fuera de la animación actual. Hay muchas opciones, deberías experimentar un poco para crear los efectos que quieres. Tampoco olvides que puedes guardar una animación y añadirla después a la actual. También puedes añadir algunas imágenes vacías y borrar las que no necesites. Explicaremos brevemente las diferentes posibilidades.



Set Length. Te permite cambiar la longitud de la animación. La animación se repite las veces necesarias para conseguir el número de frames que indiques. (Normalmente deseas que sea un múltiplo del número actual de frames.)



Stretch. Este comando también cambia la longitud de la animación. Pero en esta ocasión, los frames se duplican o se borran para conseguir el número adecuado. Así que si incrementas el numero de frames, la animación ira mas despacio, y viceversa.

• •

Reverse. Bien, como puedes suponer, invierte la animación. Se reproduce hacia atrás. Add Reverse. En esta ocasión la secuencia invertida es añadida, doblando el número de frames. Esto es muy útil cuando quieres que un objeto vaya de izquierda a derecha, cambie de color y vuelva, etc.



Translation sequence. Podrás crear una animación en la que la imagen se trasponga en cada paso. Debes indicar el número de pasos y la cantidad total de movimiento vertical u horizontal.



Rotation sequence. Crea una animación en la que la imagen rota. Puedes elegir si lo hará hacia la derecha o hacia la izquierda. Especifica el numero de frames y el ángulo total en grados (360 son un giro completo). Es posible que tengas que aumentar antes el tamaño del lienzo para estar seguro de que se ven todas las imágenes al completo.



Colorize. Crea una animación que convierte el color de la imagen en otro.



Fade to color. Crea una animación que efectúa un degradado de la imagen hacia un color determinado.



Disappear. Hace que la imagen vaya desapareciendo aumentando su transparencia.



Shrink. Encoge la imagen hasta hacerla desaparecer. Puedes indicar la direccion.



Grow. Hace crecer la imagen desde la nada.



Flatten. Aplana la imagen hasta que desaparece.



Raise. Hace levantarse la imagen desde la nada. Debes indicar la direccion



Overlay. Solapa la animación con otra animación o imagen de un archivo.



Morph. Transforma la animación en otra animación o imagen de un archive. Funciona major si ambas animaciones tienen el mismo tamaño.

Los dos últimos comandos en particular son muy potentes. Por ejemplo, para, hacer explotar un objeto, añade un numero de copias y después un numero de frames vacíos. Después solápalo con una animación de explosión. (Augúrate de que encaje el número de imágenes.) O haz un “morph” con la explosión. Puedes conseguir sprites estupendos.

Strips Como indicamos antes, los sprites normalmente se guardan como Gif animados o como tiras de imágenes (strips). Una tira es una imagen grande que guarda todas las imágenes cerca unas de otras. El único problema es que el tamaño original de las sub-imágenes no se guarda en el archive. Además muchos archivos de este tipo guardan varios sprites en un solo archive. En la siguiente muestra, veremos un strip con cuatro animaciones.

Para seleccionar sprites individuales, puedes elegir la opción Create from Strip o Add from Strip del menú File. Después de indicar el archivo de strip correcto, aparece el siguiente formulario:

A la derecha puedes ver (en parte) la tira de imágenes que elegiste. A la izquierda puedes indicar ciertos parámetros que especifican en que subimágenes estas interesado. Observa que uno o más rectángulos en la imagen indican que imágenes estas seleccionando. Estos son los parámetros que pueden ser especificados:



Number of images. El numero de imágenes que quieres coger de la tira (strip).



Images per row. Cuantas imágenes de las que hay, quieres por fila. Por ejemplo indicando una sola fila (row) seleccionaras una sola secuencia vertical de imágenes.



Image width. Anchura de las imágenes individuales.



Image height. Altura de las imágenes individuales.



Horizontal cell offset. Si no quieres seleccionar las imágenes de la parte superior izquierda, puedes indicar Aquí cuantas imágenes se ignoraran horizontalmente.



Vertical cell offset. Aquí seleccionas cuantas imágenes ignoras verticalmente.



Horizontal píxel offset. A veces existe un espacio adicional en la zona superior izquierda. Aquí indicas su tamaño (en píxeles).



Vertical píxel offset. Tamaño vertical del espacio adicional.



Horizontal separation. En algunas tiras existen líneas o espacios vacíos entre las imágenes. Aquí puedes indicar el espacio horizontal que se debe ignorar entre imagen e imagen (en píxeles).



Vertical separation. Espacio vertical a ignorar entre imágenes (en píxeles).

Cuando selecciones el número correcto de imágenes, presiona OK para crear el sprite. Por favor recuerda que solo se permiten utilizar imágenes creadas por terceros cuando has pedido su permiso o son freeware.

Editando subimágenes individualmente

También puedes editar las sub-imágenes individualmente. Para terminar selecciona una sub-imagen y elige la opción Edit Image del menú Image. Esto abrirá un pequeño programa de dibujo incorporado. Por favor comprueba que se trata de un programa diseñado para realizar pequeños cambios en imágenes ya existentes, no para dibujar otras nuevas. Para esto, utiliza mejor un programa de dibujo mas especifico y utiliza los archivos resultantes (o copia y pega) para utilizar la imagen enGame Maker. En las preferencias también puedes especificar un editor externo.

El formulario muestra la imagen en el centro y varios botones de herramientas de dibujo básicas a la izquierda. Aquí podrás aumentar o disminuir el zoom, dibujar píxeles, líneas, rectángulos, textos, etc. Date cuenta de que el color depende del botón del ratón que utilices (derecho o izquierdo). Para algunas herramientas de dibujo puedes definir algunas propiedades (como el ancho de la línea o la visibilidad del contorno). Existe un botón especial para cambiar todos los píxeles de un color por otro. Esto es particularmente útil para cambiar el color de fondo que se utiliza como transparencia. En la barra de herramientas, tenemos algunos botones especiales para mover todos los píxeles de la imagen en una dirección determinada. También puedes indicar si muestras la cuadricula cuando se amplia el zoom de la imagen (Solo funciona con un factor de zoom de 4 como mínimo).

Puedes seleccionar áreas normalmente presionando el botón de selección y dibujando un rectángulo. Después coloca el ratón dentro del área seleccionada para moverla donde quieras. Normalmente el área original se rellena con el color seleccionado para del botón izquierdo del ratón. Si mueves la selección con la tecla presionada, el área original permanecerá sin afectar. Con la tecla también puedes tener múltiples copias del área seleccionada. Si utilices el botón derecho del ratón para moverte en lugar del izquierdo, la selección se considera transparente.

La herramienta texto requiere algo de explicación. Para añadir un texto, presiona sobre el botón texto y pulsa sobre la imagen. Una ventana emergente donde añadir el texto aparecerá, utilice el símbolo # para añadir una línea. Una vez presiones OKel texto se colocara en la imagen, con una selección a su alrededor. Ahora puedes mover el texto presionando con el ratón sobre la selección y arrastrándola. Puedes cambiar el texto pulsando con el botón derecho en la selección. Utilizando el menúText también puedes cambiar el alineamiento y la fuente utilizada.

A la derecha del formulario puedes seleccionar los colores a utilizar (uno para el botón izquierdo del ratón y otro para el derecho). Existen cuatro formas de cambiar el color. Primero puedes pulsar con el botón del ratón (izquierdo o derecho) sobre uno de los 16 colores básicos. Observa que existe una muestra especial de color que contiene el color del píxel inferior izquierdo de la imagen que es el transparente. ^Puedes usar este color para hacer parte del sprite transparente. La segunda manera es pulsando sobre la imagen con el color cambiante. Podrás elegir muchos mas colores. Puedes mantener pulsado el ratón para ver el color que estas seleccionando. En tercer lugar, puedes pulsar con el botón izquierdo en las muestras que indican los colores derecho e izquierdo. Una ventana emergente de colores aparecerá y podrás seleccionar el color. Por último, puedes seleccionar la herramienta cuentagotas y pulsar con el botón izquierdo sobre la parte de la imagen que contenga el color que quieres copiar.

Hay dos características especiales más. Cuando pulsas la tecla puedes tomar un color para dibujar de la imagen actual. Cuado pulsas la tecla mientras dibujas líneas, solo podrás hacerlas horizontales, verticales o diagonales. Algo similar ocurre cuando presionas la tecla mientras dibujas elipses o rectángulos. Solo dibujaras círculos o cuadrados perfectos.

En los menús puedes encontrar las mismas transformaciones y comandos de cambio de imagen, que están disponibles en el editor de sprites. En esta ocasión solo son aplicables a la imagen actual. (Cuando el sprite tiene varias sub-imágenes, los comandos que cambian el tamaño, no están disponibles.) También puedes guardar la imagen como un archive bmp (mapa de bits). Existen dos comandos adicionales en el menú Image:



Clear. Limpia la imagen y la colorea con el color izquierdo (que se convierte en el color transparente).



Gradient fill. Con este comando puedes rellenar la imagen con un color que cambia de forma gradual (no muy útil para hacer sprites, pero es útil para fondos).

Observa que la mayoría de las rutinas de dibujo han desaparecido. Para tener más deberíamos utilizar un programa de dibujo más avanzado (o el sencillo programa de dibujo que viene con Windows). La forma más sencilla de hacerlo es utilizar el botón “copiar” para poner la imagen en el portapapeles. En tu programa de dibujo, solo tienes que pegarla. Molifícala y cópìala en el portapapeles. Ahora, en Game Maker puedes pegar la imagen modificada.

Características avanzadas de los sprites En el modo avanzado, dentro del formulario de propiedades del sprite, hay varias opciones avanzadas sobre las que trataremos a continuación.

Lo primero que vemos son opciones relacionadas con el chequeo de colisiones. Siempre que dos imágenes se encuentran, se genera un evento de colisión. Las colisiones se generan de la siguiente forma: Cada sprite tiene una “caja de contorno”. Esta “caja” contiene la parte no transparente de todas las sub-imágenes. Cuando las cajas de contorno se solapan, (se chequea comprobando cuando dos píxeles de las sub-imágenes de los dos sprites se solapan). Esta segunda operación es costosa y requiere memoria extra y un preprocesamiento previo. Así, que si no estas interesado en una colisión precisa para un determinado tipo de sprite, deberías deseleccionar la opción Precise colisión checking. En este caso solo se verificara la colisión entre las cajas de contorno y no de su interior. También puedes cambiar el tamaño de

la caja de contorno. Esto no se necesita casi nunca, pero en determinadas ocasiones, necesitaras hacer más pequeña la caja de contorno, para que las colisiones con algunas partes del sprite no se tengan en cuenta.

Los bordes de los sprites pueden verse un poco pixelados. Para evitarlo puedes seleccionar la opción Smooth edges. En este caso los píxeles de los bordes del sprite (los píxeles cercanos a los píxeles transparentes) son dibujados parcialmente transparentes. Esto puede hacer que se vean mucho mejor. (No utilices esta opción cuando los sprites sean parte de una imagen mayor, porque se verán líneas semi transparentes entre ellos.) ¡El efecto de esta selección solo se ve en el juego, no en el editor!

Durante el juego, los sprites se transforman en texturas. Las texturas se deben almacenar en la memoria (en la tarjeta de video) de video antes de utilizarse. Cuando seleccionamos la opción Preload texture esta acción se hace durante la carga del juego, no existiendo retardo durante el juego). Si tienes muchos sprites de gran tamaño que no se van a usar al principio deberías deseleccionar esta opción. Game Maker guardara las texturas en la memoria de video y las retomara cuando las necesite.

Por último, puedes indicar el origen del sprite. Esto es el punto del sprite que corresponde a su posición. Cuando defines la posición de una instancia, el origen del sprite se sitúa en esa posición. Por defecto se trata del punto situado en la esquina superior izquierda del sprite, pero a veces es más conveniente colocar el origen en el centro o en cualquier otro lugar importante del sprite. Incluso puedes elegir un punto fuera del sprite. También puedes definir el origen pulsando sobre la imagen. (Cuando el origen es mostrado en la imagen).

Más sobre sonido y música En el modo avanzado tienes un control mucho mayor sobre los sonidos y músicas del juego. Cuando añadas un sonido se mostrará la siguiente ventana:

Además de las opciones que ya habíamos visto (load, save y play) hay muchas otras que explicaremos ahora:

Primero puedes indicar el tipo de sonido entre los 4 posibles. Normal sounds se usan para efectos de sonido en archivos wav (aunque también pueden usare para archivos midi). Multiple normal sounds pueden sonar a la vez. Puedes incluso hacer sonar varias copias del mismo sonido a la vez. Background music es similar a los Normal sounds pero sólo puede sonar uno la vez. Así que cuando empieza a sonar un sonido de este tipo, los demás sonidos de este tipo dejarán de sonar. Por defecto se usan archivos midi para esto. 3D sound son los sonidos a los que les puedes aplicar efectos especiales mediante el uso de las funciones apropiadas. Sólo necesitarás estos para efectos de sonido avanzados

Los archivos de sonido suenan a través de DirectX, lo que nos da muchas posibilidades pero nos limita a archivos del tipo wav o midi. Si quieres utilizar archivos de otro tipo como mp3 tienes que seleccionar la opción para usar el media placer. Esto limita mucho los sonidos porque no se puede cambiar el sonido o aplicar efectos y sólo puede sonar un sonido a la vez. Los archivos midi suenan distinto, debido a que al usar el media placer utilizan el sintetizador de hardware, lo que hace que suenen distinto dependiendo del ordenador en el que suenen. Pero al ser usados como Normal sound o como Background music utilizan un sintetizador de software que suena igual en todos los ordenadores. No se aconseja usar mp3 en los juegos ya que necesitan ser descomprimidos y eso afecta a la velocidad del juego. Aunque sean de menor tamaño usan más memoria, suenan distinto en cada ordenador y no todos los ordenadores los soportan.

También puedes indicar efectos de sonido como chorus (coro) o echo (eco), pero sólo en la versión registrada). Puedes combinar los efectos y escucharlos. Usando GML puedes hasta cambiar los parámetros de estos efectos.

Puedes indicar el volumen de cada sonido y en qué altavoz debe sonar (izquierdo o derecho).

Puedes indicar si el sonido de be ser cargado con antelación (Preload) o no. Cuando un sonido suena primero debe ser cargado en la memoria de audio. Si usas la opción preload esto se hace al principio del juego, así que cuando necesites que el sonido suene ya estará listo. Si no usas esta opción, el sonido se carga en la memoria la primera vez que es usado, lo que ahorra memoria pero puede hacer que el sonido tarde un poco en sonar la primera vez que se usa.

Game Maker no tiene un editor interno de sonidos. Pero en Preferences puedes indicar los editores externos que quieras para editar tus sonidos. Si los indicas, puedes presionar en el botón Edit Sound para editar los sonidos que estés usando. (La ventana de Game Maker se ocultara mientras edites tus sonidos y se reestablecerá cuando cuando cierres el editor de sonidos).

Más sobre los fondos Además de importarlos desde archivos existentes, también tienes la posibilidad de crear tus propios fondos. Para este fín, presiona el botón Edit Background (Editar Fondo). Se abrirá un programa de dibujo que viene incluido en el que puedes crear o editar tus fondos. Es importante remarcar que éste no es un programa sofisticado de diseño. Para realizar tareas de diseño más avanzadas y disponer de herramientas de dibujo más sofisticadas utiliza algún programa especializado en ello. Hay una opción que es particularmente útil, en el menú Image (Imagen) encontrarás un comando llamado Gradient Fill (Relleno Degradado). Con esta opción se pueden crear muy buenos fondos.

En el modo avanzado, la ventana de propiedades de fondo, contiene algunas opciones avanzadas.

Los bordes de los fondos, sobre todo si son transparentes, pueden resultar un poco cuadrados. Para impedir esto puedes usar la opción Smooth edges. Los píxeles en el borde del fondo (es decir, los píxeles vecinos a los transparentes) son dibujados parcialmente transparentes, con lo que el resultado final es mucho mejor (no uses esta opción cuando tengas un fondo compuesto por varias imágenes, porque aparecerá una línea transparente entre ellas) ¡Este efecto sólo es visible en el juego, no en el editor!

Durante el juego, los fondos se transforman en texturas. Las texturas se cargan en la memoria gráfica (en la tarjeta gráfica) antes de ser usadas. Si activas la opción Preload texture esto ocurre inmediatamente cuando comienza el juego, evitando que haya retrasos durante el juego. Si tienes muchos fondos de gran tamaño que no se usan al principio del juego es mejor que no uses esta opción, porque consume mucha memoria. En este caso, Game Maker moverá las texturas dentro y fuera de la memoria gráfica según las necesite.

A veces quieres usar un background como un conjunto de tiles, es decir, una colección de pequeñas imágenes que se unen para formar una imagen mayor. Cuando crees una room puedes añadir estas imágenes en diferentes lugares del room. Esto es muy útil para crear niveles vistosos. Para usar un fondo como tile set, usa la opción Use as tile set. La ventana se mostrará de la forma siguiente:

Puedes configurar varias cosas para el tileset. En particular, puedes indicar la altura y anchura de cada tile (sólo puedes indicar un valor, así que asegúrate de que todas las tiles tienen el mismo tamaño). También puedes indicar el origen para la tile situada arriba y a la izquierda

del todo. Finalmente, se puede indicar la separación entre tiles (normalmente 0 ó 1). Para más información sobre las tiles, mira el capítulo sobre crear rooms.

Aviso: cuando pones bordes separadores entre los sprites y usas interpolación entre píxeles (consulta las global game settings) pueden aparecer rajas entre las tiles. Para evitarlo, asegúrate de que los píxeles alrededor de las tiles son del mismo color que los píxeles en el borde interior de las tiles.

Más sobre los objetos Cuando creas un objeto en modo avanzado, puedes cambiar otras opciones avanzadas.

Profundidad Primero que nada, puedes configurar el depth (profundidad) de las instancias de un objeto. Cuando las instancias son dibujadas, según el depth se dibujaran una encima de otras. Las instancias con mayor depth son dibujadas primero, y las instancias con menor depth se dibujaran últimas. Cuando 2 ó más instancias poseen el mismo depth, se dibujan según el orden en el que fueron creadas. Si quieres estar seguro que un objeto se encuentra por encima de los demás, introduce un valor negativo. Si quieres estar seguro que un objeto se encuentra por debajo de los demás, introduce un valor positivo muy alto. También puedes cambiar el depth de una instancia durante el juego usando la variable depth.

Objetos persistentes Puedes hacer persistente a un objeto. Los objetos persistentes continúan existiendo inclusive si pasan de una habitación a la otra. Estos sólo desaparecen cuando los destruyes expresamente. Así, solo es necesario poner una instancia del objeto en la primera habitación y seguirá apareciendo en las siguientes habitaciones. Esto es realmente muy útil cuando posees un personaje principal que debe moverse de habitación en habitación. El uso de objetos persistentes es una herramienta poderosa, pero también puede producir errores fácilmente.

Parents Todo objeto puede poseer un objeto padre. Cuando un objeto posee un objeto padre, este hereda las características del mismo. Dicho de otra manera, el objeto es una especie de variante del objeto padre. Por ejemplo, si tienes 4 pelotas distintas, llamadas ball1, ball2, ball3 y ball4, y todos se comportan de la misma manera pero tienen sprites distintos, puedes hacer que ball1 sea el objeto padre de el resto. Así solo será necesario que establezcas los eventos y acciones para ball1. Las demás pelotas heredaran las características de ball1 y actuaran de la misma manera. De manera que si aplicas acciones a las instancias del objeto padre, estas también se aplicaran a las instancias de los objetos hijos. Por ejemplo, si destruyes las instancias del objeto ball1 también se destruirán las instancias de los objetos ball2, ball3 y ball4. Esta opción nos permite ahorrar mucho tiempo y trabajo.

A menudo, los objetos deben comportarse casi idénticamente pero suelen encontrarse pequeñas diferencias. Por ejemplo, un monstruo se mueve de arriba hacia abajo y otro hacia la izquierda y la derecha. En lo demás ambos monstruos poseen el mismo comportamiento. En este caso casi todos los eventos deberían poseer las mismas acciones, pero uno o dos podrían llegar a ser diferentes. En este caso podemos hacer a un objeto el padre del otro. Pero también debemos definir algunos eventos para el objeto hijo. Estos eventos se sobrepondrán a los

eventos del padre. De forma tal que mientras un evento del objeto hijo contenga acciones, éstas se ejecutarán en lugar de las del mismo evento del objeto padre. Si además se requiere ejecutar el evento del padre, se puede 'llamar' al 'evento heredado' usando la acción apropiada. De hecho, es una buena práctica en tales casos crear un objeto base, por ejemplo un objeto ball0. Este objeto contiene todo el comportamiento por defecto pero nunca se utiliza en el juego. Todos los objetos 'reales' tienen a este objeto base como padre.

Los objetos padre pueden así mismo tener padres, y así sucesivamente. (Obviamente no está permitido crear círculos.) De ésta forma se puede crear una jerarquía de objetos. Esto es extremadamente útil para mantener tu juego estructurado y es ampliamente recomendado aprender a utilizar éste mecanismo. También hay otra utilidad de los objetos padre. Permite heredar el comportamiento en colisiones para otros objetos. Permíteme explicar esto con un ejemplo. Supongamos que tenemos cuatro objetos 'suelo' distintos. Cuando una pelota golpea el suelo ésta debe cambiar su dirección. Este cambio debe especificarse en el evento colisión de la pelota con el suelo. Debido a que hay 4 distintos suelos necesitamos escribir código en 4 eventos colisión distintos de la pelota. En cambio, cuando se tiene un objeto base y éste es padre de los 4 suelos reales, sólo se debe especificar el evento colisión con éste objeto base. Las demás colisiones ejecutarán el mismo evento. Esto, igualmente ahorra mucho trabajo.

Tal como se indica, dondequiera que se utiliza un objeto, se involucrarán a sus descendientes. Esto sucede cuando, en una acción, se indica que ésta debe aplicarse a instancias de un objeto determinado. Lo mismo sucede cuando se utiliza la sentencia with en código (ver abajo). Y funciona cuando se llaman a funciones como instance_position, instance_number, etc. Finalmente, sucede cuando se hace referencia a variables en otros objetos. En el ejemplo anterior, cuando se fija la variable ball1.speed a 10 este cambio es también aplicado a los objetos ball2, ball3 y ball4.

Máscaras Cuando dos instancias colisionan ocurre un evento de colisión. Para decidir cuando dos instancias se interceptan, se usan los sprites de las mismas. Esto es suficiente en la mayoría de los casos, pero a veces se quiere basar las colisiones en distintas formas. Por ejemplo, si haces un juego isométrico, los juegos tienen una altura (para darles una apariencia 3D). Pero para colisiones solo es necesario usar la parte de abajo del sprite. Esto puede lograrse creando un sprite por separado que es usado como máscara de colisión para el objeto.

Información El botón Show Information nos permite ver la información completa del objeto que también puede imprimirse si se quiere. Esto es útil cuando pierdes la vista de todas las acciones y eventos.

Más acciones En el modo avanzado hay un número de acciones adicionales disponibles que describiremos aquí. Estas acciones se describen con detalle en las siguientes secciones: Más acciones de movimiento Más acciones principales Más acciones de control Más acciones de dibujo Acciones de partículas Acciones extra

Más acciones de movimiento Algunas acciones de movimiento sólo están disponibles en el modo avanzado:

Set a path for the instance Con esta acción puedes especificar qué instancia debe seguir un path particular. Defines el path que debe seguir y la velocidad en píxeles por step. Cuando la velocidad es positiva la instancia empieza en el comienzo del path. Cuando es negativa comienza en el final. Luego especificas lo que sucederá cuando se alcanza el final del path. Puedes elegir parar el movimiento, volver a empezar desde el principio, volver a empezar desde la posición actual (que es lo mismo que volver al principio cuando el path se cierra), o el movimiento al revés. Finalmente puedes indicar que el path debe ser visto en absoluto, esto es, la posición será indicada en el path (esto es útil cuando tienes diseñado el path en un lugar en particular dentro del room) o relativa, en cual caso el punto de comienzo del path es colocado en la localización actual de la instancia (punto final cuando la velocidad es negativa). Consulta el capítulo de paths para más información.

End the path for the instance Usa esta acción para detener el path para la instancia.

Set the position on the path Con esta acción puedes cambiar la posición actual de la instancia en el path. Deberá ser un valor entre 0 y 1 (0=principio. 1= final)

Set the speed for the path Con esta acción puedes cambiar la velocidad de la instancia en el path. Una velocidad negativa mueve la instancia al revés a lo largo del path. Pon 0 para parar temporalmente el movimiento.

Perform a step towards a point Esta acción se debe poner en el evento step para que la instancia vaya hacia una posición en particular. Cuando la instancia llega a esa

posición no se moverá más. Tú especificas la posición a mover, la velocidad con la cual se moverá, es decir, el tamaño del paso, y si el movimiento debe parar cuando golpea una instancia sólida o cuando golpea cualquier instancia

Step towards a point avoiding objects Esta es una acción de movimiento muy útil. Debe ser colocada en el evento step. Como la anterior acción hace que una instancia vaya hacia una posición en particular. Pero en este caso este intenta de esquivar obstáculos. Cuando la instancia encuentra instancia sólida (o cualquier instancia) cambiará la dirección del movimiento para internar esquivar la instancia y moverse alrededor de ella. El acercamiento no está garantizado que funcione pero en los casos más simples moverá la instancia hacia la meta efectivamente. Para casos más complicados, hay funciones de planificación del movimiento. Especificas la posición a mover, la velocidad y si el movimiento debe esquivar instancias sólidas o cualquier instancia.

Más acciones principales Algunas acciones principales adicionales están disponibles en el modo avanzado. Las siguientes acciones se agregan:

Set a time line (Sólo disponible en el modo avanzado.) Con esta acción tu pones un time line particular para una instancia de un objeto e indicas el time line y la posición donde comienza dentro del time line (0 es el principio). Puedes usar esta acción para finalizar un time line escogiendo No Time Line como valor.

Set the time line position (Solo disponible en el modo avanzado). Con esta acción puedes cambiar la posición del time línea actual (absoluta o relativa). Esta puede ser usada para saltar ciertas partes del time line o para repetir ciertas partes. Por ejemplo, si quieres hacer una time line que se reproduzca siempre, en el último momento, agrega esta acción y pon la posición de nuevo a 0. Puedes usarlo para esperar a que algo suceda. Sólo agrega la acción de prueba y, si no es verdadera, pon la posición relativa de la time line a -1.

Show a video Con esta acción puedes mostrar un archivo de video/película. Especificas el nombre del archivo y si debe ser mostrado en pantalla completa o en la ventana. Estate seguro de que el archivo de video existe. Debes distribuirlo con tu juego o ponerlo en un datafile y exportarlo.

Replace a sprite from a file Esta acción puede ser usada para remplazar un sprite del contenido de un archivo. Indicas el sprite que quieres remplazar, el nombre del archivo (.bmp .jpg o .gif) y el número de sub-imágenes en el sprite cuando cargas de un archivo bmp o jpg. Para un archivo gif el número de sub-imágenes es automático basado en la cantidad de sub-imágenes del archivo gif. Otras opciones para el sprite, p. Ej., si es transparente o no, no se cambian. Puedes usar esta acción para evitar almacenar todos los sprites en el mismo programa. Por ejemplo, en el comienzo de un nivel puedes reemplazar sprites por los personajes que quieres usar. NO cambies un sprite que en el momento se esta utilizando por una instancia en el room. Esto puede dar efectos indeseados con colisiones. Esta acción sólo está disponible en la versión registrada.

Replace a sound from a file Con esta acción puedes remplazar un sonido por el contenido de un archivo (.wav .mid o .mp3). Especificas el sonido y el nombre del archivo. Esto evita tener que almacenar todos los sonidos en el juego. Por ejemplo, puedes usar diferentes piezas de una música de fondo y escoger el que quieres escuchar. NO cambies de sonido mientras se está jugando. Esta acción sólo está disponible en la versión registrada

Replace a background from a file Con esta acción puedes reemplazar un background por el contenido de un archivo (.bmp o .jpg). Especificas el nombre del archivo. Esto evita almacenar todos los background en el juego. No cambies un background que esté visible en ese momento.Esta acción sólo está disponible en la versión registrada

Más acciones de control Algunas acciones de control adicionales están en el modo avanzado. Las siguientes acciones se agregan:

Execute a script Con esta acción puedes ejecutar un script que agregaste a tu juego. Especificas el script y un máximo de 5 argumentos.

Call the inherited event Esta acción es útil cuando el objeto tiene un objeto padre. Esta acción llama al evento correspondiente en el objeto padre.

Más acciones de dibujo La siguiente acción de dibujo está disponible en el modo avanzado:

Set a font for drawing text Puedes poner la fuente que será usada para el texto. Esta fuente debe ser uno de los recursos de fuente que tienes definido. Si eliges No Font se usará la fuente predeterminada: Arial tamaño 12.

Acciones de partículas Un sistema de acciones que se encargan de las partículas está en la pestaña Extra. Estas acciones están disponibles sólo en la versión registrada de Game Maker.

Sistema de partículas significa crear efectos especiales. Las partículas son pequeños elementos (representados por un píxel o una forma pequeña). Tales se mueven según las reglas predefinidas y cambiando de color. Muchas partículas juntas pueden crear, por ejemplo, fuegos artificiales, llamas, lluvia, nieve, etc.

Game Maker contiene un sistema de partículas que se puede alcanzar con funciones. Un sistema más limitado de partículas se puede realizar con las acciones descritas abajo.

Un sistema de partículas puede tener partículas de diferentes tipos. Después de crear el sistema de partículas la primera cosa a hacer es especificar los tipos de partículas. Usando las acciones de abajo puedes especificar hasta 16 tipos de partículas. Cada tipo tiene una forma, un tamaño, un color inicial y otro final. El color cambia lentamente del color del comienzo al color del final. Las partículas tienen un tiempo de vida limitado. En el tipo defines el mínimo y el máximo tiempo de vida de las partículas. También tienen velocidad y dirección. Finalmente, gravedad y fricción puede usarse para trabajar con partículas.

Después de especificar el tipo de partículas debes crearlas y colocarlas en el room. Puedes hacer estallar un número de partículas de un tipo de partícula desde un lugar o puedes crear una corriente constante de aparición de las partículas. Partículas aparecen en emmiters (emisores). El sistema de partículas puede tener hasta 8 emisores trabajando al mismo tiempo. Después de crear los tipos de partículas tienes que crear los emisores y llamarlos para que estallen o fluyan.

Aquí hay un completo set de acciones. Experimenta con ellas para obtener el efecto que desees:

Create the particle system Esta acción crea el sistema de partículas. Debe ser llamada antes de que otras acciones sean usadas. Sólo debes llamarla una vez. Puedes especificar el depth (profundidad) en las partículas que se están dibujando. Si usas un depth positivo grande las partículas aparecerán detrás de las instancias. Si usas una profundidad negativa aparecerán delante de las instancias.

Destroy the particle system Esta acción destruye el sistema de partículas, liberando memoria. No te olvides de llamar a esta acción (p. Ej. Cuando vas a un room diferente) porque los sistemas de partículas usan mucha memoria.

Clear all particles in the system Esta acciones quita todas las partículas actualmente visibles. Esto no detiene los emisores así que nuevas partículas pueden ser creadas si tienes emisores que fluyen (lee más abajo)

Create a type of particle Con esta acción creas un tipo de partícula. Puedes definir hasta 16 tipos distintos. Para la partícula puedes especificar la forma o el sprite

que usará. Si especificas un sprite, este será usado. Si no seleccionas ningún sprite, la forma será usada. Hay un número de interesantes formas internas. Puedes indicar el tamaño máximo y el mínimo (cuando las partículas aparecen se utiliza un valor aleatorio entre estos). Finalmente especificas el aumento del tamaño en cada step. Para disminuir, usa un valor negativo. Nota que únicamente un tipo de partícula es creado, no una partícula. Para esto necesitas emisores (mira abajo)

Set the color for a particle type Una partícula puede tener un color (el color predeterminado es blanco). Con esta acción puedes definir el color que se usará para un tipo en particular. Debes indicar el tipo de partícula para la que se define el color. Luego especificas cómo se aplicará el color. Cualquier color es elegido entre dos colores dados, o el color comienza con el primer color y gradualmente sobre el tiempo de vida de la partícula, cambia al segundo color. Ambos colores pueden ser dados. Finalmente puedes indicar la transparencia alpha. Especificas la transparencia en el momento que la partícula es creada y cuando muere. La transparencia cambia lentamente entre esos valores. Es normalmente lindo que se disminuya el valor del alpha sobre el tiempo de vida de la partícula.

Set the life time for a particle type Una partícula vive un número limitado de steps. Después desaparece. Con esta acción pones el tiempo de vida para un tipo de partícula. Das dos valores límites y el tiempo de vida es elegido de forma aleatoria entre ellos.

Set the motion for a particle type Con esta acción puedes poner la velocidad y dirección del movimiento para un tipo de partícula. Otra vez das 2 valores límites y el valor será elegido de forma aleatoria entre aquellos valores. Por ejemplo, para hacer que la partícula se mueva en una dirección aleatoria, debes dar 0 y 360 para los límites de la dirección. Puedes también especificar la fricción. Esta cantidad es sustraída de la velocidad en cada step hasta que se convierta en 0. (Puedes hacer que la velocidad suba usando una fricción negativa).

Set the gravity of a particle type Con esta acción puedes poner la cantidad de gravedad y la dirección de ésta para un tipo de partícula. 270 es hacia abajo.

Create secondary particles Esto es un poco más complicado. Partículas pueden crear otras partículas durante su vida y cuando mueren. Con esta acción puedes especificar esto. Puedes definir el tipo y número de partículas que serán creadas en cada step durante su tiempo de vida y cuando una partícula muere. Se muy cuidadoso aquí. Puedes crear grandes números de partículas de esta manera, retrasando el sistema considerablemente. Para los números puedes usas también un valor negativo. Un valor negativo x significa que en cada step una partícula es creada con la proporción -1/x. Por ejemplo, si quieres generar una partícula secundaria cada 4 steps, usa el valor -4. Partículas secundarias son geniales para crear efectos como colas de partículas o partículas que explotan.

Create a particle emitter Esta acción crea un emmiter (emisor de partículas). Las partículas son generadas por los emitters. Puedes tener hasta 8 emisores. Elige el emisores y especifica su forma, su tamaño y posición (en forma de una caja de contorno)

Destroy an emitter Esta acción destruye el emisor indicado. Nota que las partículas existentes que se han creado con estos emisores no son eliminadas.

Burst a number of particles from an emitter Incluso si definiste un tipo de partículas y en un emisor todavía no hay partículas, tienes todavía que decirle al emisor que genere partículas. Con esta acción llamas a un emisor en particular para generar un número de partículas de un tipo determinado. Todas esas partículas se generan una sola vez. Para el número puedes usar también un valor negativo. Un valor negativo x significa que una partícula es creada con la proporción -1/x. Por ejemplo, si quieres general una partícula con la proporción del 25 por cierto, usa un valor de -4.

Stream particles from an emitter Con esta acción llamas a un emisor en particular para que haga fluir un número dado de partículas de un tipo dado. En cada step este número de partículas es generado, conduciendo a una corriente continua de partículas. El emisor continuará fluyendo partículas hasta que lo destruyas o que lo llames a fluir 0 partículas. Para el número puedes usar un valor negativo. Un valor negativo x significa que en cada step una partícula es creada con la probabilidad -1/x. Así por ejemplo, si quieres generar una partícula cada 4 steps, usa el valor de -4.

Acciones extra En la pestaña Extra hay también un número de acciones relacionadas con tocar CDs. Estas acciones sólo están disponibles en la versión registrada de Game Maker

Play a CD Con esta acción puedes tocar diferentes pistas de un CD colocado en el lector de CDs. Especificas la pista del comienzo y la pista del final.

Stop the CD Detiene la ejecución del CD.

Pause the CD Pausa la ejecución actual del CD.

Resume the CD Vuelve a tocar el CD pausado.

If a CD exists in the drive Si hay un CD en la lectora de CDs la acción siguiente será ejecutada.

If the CD is playing Si un CD está tocándose en la lectora de CDs la siguiente acción será ejecutada.

Finalmente, hay 2 acciones adicionales que pueden ser útiles en ciertos juegos.

Set the mouse cursor Puedes usar esta acción para remplazar el cursor del ratón por un sprite. Especificas el sprite y si el cursor debe ser todavía mostrado. El sprite puede ser animado. Nota que el sprite será sólo mostrado en el room, no en el área fuera de él.

Open a webpage in a browser Puedes indicar una dirección Web en esta acción. Esta Web será abierta en el navegador predeterminado del PC (esta acción puede actualmente también ser usada para abrir otros documentos). Esta acción no funciona en modo seguro.

Más sobre las rooms Los niveles en Game Maker tienen muchas opciones. Antes solo tratamos las más importantes. En este capítulo hablaremos sobre las opciones restantes. Cuando abres el formulario en modo avanzado se muestra de la siguiente manera:

Como verás, aparecen algunos botones nuevos en la barra de tareas. Estos son botones para ordenar las instancias vertical y horizontalmente. Esto es muy útil cuando las instancias se solapan. (Cuando estamos trabajando sobre “tiles” estos botones se comportan de la misma manera, sobre los tiles.) También hay botones para bloquear o desbloquear todas las instancias. Las instancias bloqueadas no pueden ni borrarse ni moverse. Esto te libra de borrados accidentales de instancias. Utilizando el menú emergente que aparece al pulsar con el botón derecho del rato y pulsando la tecla sobre una instancia, también puedes bloquear o desbloquear instancias individuales. Finalmente, puedes indicar si quieres una cuadrícula isométrica. Esto es muy útil cuando creas juegos en perspectiva isométrica. Lo primero, es que las líneas de la cuadrícula se dibujaran diagonalmente. Además el encaje de las instancias será diferente. (El encaje trabajara mejor cuando el origen de las instancias este situado en la esquina superior izquierda que es como se sitúa por defecto.) También tenemos dos nuevas etiquetas de las que hablaremos en los temas siguientes. Puedes encontrar más opciones avanzadas de las rooms en los temas: Configuración avanzada Añadiendo tiles Vistas

Configuración avanzada Existen aún dos aspectos en la etiqueta settings que aún no hemos discutido. Primero existe un recuadro etiquetado como Persistent. Normalmente, cuando abandonas un nivel (room) y vuelves después el nivel vuelve a su configuración inicial. Esto es adecuado cuando tienes un cierto numero de niveles en tu juego, pero no lo es tanto cuando haces juegos de otro estilo como RPGs o similares. En estos casos el nivel debería permanecer de la misma forma que cuando se abandono. Activando la opción Persistent conseguirás que esto suceda. El estado del nivel será recordado y cuando vuelvas después, estará justo como cuando lo dejaste. Solo cuando reinicias el juego, el nivel volverá a su configuración inicial. Actualmente existe una excepción a esto: Si marcas algunos objetos como persistentes, las instancias de estos objetos no permanecerán en el nivel, pero se moverán al siguiente. En Segundo lugar, tenemos el botón etiquetado como Creation code. Aquí puedes introducir un trozo de código GML que se ejecutará cuando se crea el nivel. Esto es útil cuando quieres inicializar variables para el nivel , crear determinadas instancias, etc. Esto es importante que suceda justo cuando te mueves hacia un nivel en particular. •

Primero, en el nivel actual (si lo hay) todas las instancias tienen un evento “fin de nivel”. En el siguiente nivel, todas las

instancias no persistentes son borradas. (No se genera un evento destrucción!!) •

Después, para el siguiente nivel, las instancias persistentes del nivel anterior son añadidas.



Todas las nuevas instancias son creadas y sus eventos de creación son ejecutados (si el nivel no es persistente o no ha sido visitado anteriormente).



Cuando estamos en el primer nivel, el evento “game-start” es generado para todas las instancias.



Ahora, es cuando se ejecuta el evento “creation code” del nivel.



Por último, todas las instancias generan el evento “room-start”.

Así, por ejemplo, el evento “room-start” puede utilizar variables inicializadas en el código de creación (“creation code”)para el nivel, y en dicho código puedes hacer referencia a las instancias (tanto las nuevas como las persistentes) en el nivel. Aún hay una opción que va más allá. En el menú emergente que aparece cuando pulsas con el botón derecho del ratón con la tecla pulsada, puedes indicar un código de creación para una instancia en particular. Este código es ejecutado cuando comienza el nivel, justo antes del evento de creación de la instancia sea ejecutado. Esto es muy útil para, por ejemplo, iniciar ciertos parámetros que son específicos de una instancia en cuestión.

Añadiendo tiles También puedes crear fondos “tileados” . La razón por la que se hace esto es la siguiente: En muchos juegos, querrás tener fondos bonitos. Por ejemplo en un juego de laberintos deberían verse bien las paredes y en un juego de plataformas , los árboles, plataformas, et, deberán tener un aspecto agradable. Puedes hacer esto en Game Maker definiendo muchos objetos diferentes y montando tu nivel con esos objetos. El problema esta en que esto requiere mucho trabajo, utiliza una gran cantidad de recursos y hace que el juego se ejecute más lentamente debido a que tiene que trabajar con muchos objetos diferentes al mismo tiempo. Por ejemplo, para crear bonitas paredes en un juego de laberintos, necesitas para empezar por lo menos 15 objetos “pared”.

La manera estándar, utilizada en muchos juegos, es que las paredes y los demás objetos estáticos sean dibujados sobre el fondo. Pero como probablemente te estés preguntando, ¿como hace el juego para saber que un objeto golpea una pared si esta solo dibujada sobre el fondo?. El truco es el siguiente: tú creas un único objeto “pared” en tu juego y colocas instancias de este objeto donde tiene que haber una pared. Este objeto debe tener el tamaño correcto, pero no tiene porque verse bonito. Y, aquí es donde viene el truco: lo hacemos invisible. De esta manera, cuando estés jugando el juego, no verás los objetos “pared”. Verás los bonitos fondos que coloques encima. Sin embargo los objetos “pared” continuarán allí y los objetos reaccionarán a las colisiones con ellos. Puedes utilizar esta técnica con todos aquellos objetos que no cambien su posición. (No puedes utilizarla cuando el objeto tenga que ser animado). Para juegos de plataformas, probablemente necesites un objeto suelo y un objeto pared, pero puedes hacer bonitos fondos para que parezca que caminas sobre hierba, ramas de árboles, etc. Para añadir “tiles” al nivel, necesitas primero añadir un recurso de fondo a tu juego que contenga los “tiles”. Si quieres que tus tiles sean parcialmente transparentes, asegúrate de que haces la imagen de fondo transparente. Cuando añadimos los recursos de fondo indicamos que este tiene que ser utilizado como un set de tiles. Después indicamos el tamaño de cada tile y cuando existe un espacio entre los tiles (como lo indicamos en el capítulo de recursos de fondos). Ahora, cuando definimos el nivel, pulsa sobre la etiqueta tiles. Aparecerá el siguiente formulario (aquí, ya hemos colocado varios tiles en el nivel).

En la esquina superior izquierda se muestra el set de tiles que estamos utilizando. Para seleccionar el set, pulsa sobre el botón menú debajo de el y selecciona la imagen de fondo correcta. Ahora puedes añadir tiles seleccionando el tile que quieres arriba a la izquierda y pinchando con el ratón en la parte del nivel donde quieras colocarlo. Funciona de la misma manera que añadir instancias. Los Tiles superpuestos por otros son borrados, a no ser que deselecciones la opción Delete underlying. Puedes utilizar el botón derecho para borrar tiles. Presiona la tecla para añadir varios tiles y presiona para moverlos. La tecla evitara que se encajen a la cuadrícula. También tienes aquí un menú emergente cuando pulsas la tecla

y pulsas sobre un tile con el botón derecho del ratón. Los botones de la barra de herramientas ahora borraran todos los tiles, los moverán, shift all tiles, ordenarán los tiles o los bloquearán o desbloquearán. (Actualmente están trabajando sobre la misma capa, ya lo verás más adelante.) En determinadas situaciones, querrás añadir una parte del fondo que no tenga exactamente el mismo tamaño o que consista en varios tiles. Esto puede hacerse de la siguiente manera. En la imagen de arriba a la izquierda presiona el botón izquierdo del ratón mientras mantienes pulsada la tecla . Ahora podrás arrastrar un área que podrás colocar después en el nivel como cualquier otro tile. Para seleccionar varios tiles mantén pulsada la tecla . Observa que esto solo funciona correctamente cuando no existe separación entre los tiles. Si quieres seleccionar un área con tiles de tamaño variado, presiona la tecla en lugar de la tecla Shift>. (Date cuenta de que puedes cambiar la tecla pulsada mientras estas arrastrando los tiles. A veces puede ser útil.) Los tiles pueden colocarse en capas a diferentes profundidades. Abajo del todo, ves la profundidad actual de la capa. La profundidad por defecto es 1000000 con lo que esta normalmente debajo de todas las demás capas. De esta forma las instancias se mostrarán sobre los tiles. Puedes utilizar el botón Add para añadir nuevas capas, cada una a diferente profundidad. Valores de profundidad negativos pueden utilizarse para colocar los tiles encima de las instancias como imágenes frontales. Si das diferentes profundidades a los objetos podrás hacer que se sitúen entre las diferentes capas de tiles. Si presionas el botón Delete borrarás una capa con todos sus tiles. (Siempre debe de haber al menos una capa) Si presionasChange puedes cambiar la profundidad de una capa de tiles. Si le das la misma profundidad que a otra capa, las capas se combinan. Utilizar tiles es un rasgo que debe ser utilizado tanto como sea posible. Es mucho más rápido que utilizar objetos y las imágenes de Tiles son almacenadas una sola vez. Así puedes utilizar grandes niveles creados a base de tiles con poco consume de memoria.

Vistas Finalmente, tenemos una etiqueta llamada views. Esta contiene un mecanismo para dibujar diferentes partes de tu nivel en distintas partes de la pantalla. Aquí tenemos varios usos de las vistas. Antes de cualquier otra cosa, en determinados juegos querrás mostrar solo una parte del nivel en cada momento. Por ejemplo, en la mayoría de los juegos de plataformas, la vista sigue al personaje principal. En juegos de dos jugadores, a menudo necesitaras dividir la pantalla en dos partes, una para cada jugador Un tercer uso es en los juegos en los que una parte de la pantalla utilice un scroll (la que sigue al personaje principal, por ejemplo) mientras que la otra continua estática (como podría ser la parte en la que se contiene el marcador). Esto se puede conseguir fácilmente con Game Maker. Cuando pulsas sobre la etiqueta views aparece la siguiente información:

A la derecha tenemos un opción “Enable the use of Views”. Debes seleccionarla si quieres utilizar las vistas. Debajo versa una lista de un total de ocho vistas que puedes definir. Debajo del listado tienes la información de las vistas. Lo primero es indicar cuando la vista debe ser visible al inicio del nivel. Asegúrate de que al menos una vista es visible. Las vistas visibles se muestran en negrita dentro del listado. Una vista esta definida por un área rectangular del nivel. Esta es el área que debe verse en la vista. Tú especificas la posición de la esquina superior izquierda y el ancho y alto del área. Después debes especificar que parte de la pantalla se destinará para mostrar la vista. Esta opción aparece nombrada como “Port on screen” (lo traduciremos como “lienzo” para la vista, dado que la traducción literal “puerto para la vista”, no resulta lo suficientemente descriptiva) . De Nuevo especificas la posición de la esquina superior izquierda y el tamaño. Si tienes una vista simple en la posición típica (0,0). Date cuenta de que el tamaño del lienzo para la vista puede ser diferente al tamaño de la vista. En ese caso, la vista se escalará para adecuarse al tamaño del lienzo. (En código también es posible rotar una vista.) Los lienzos pueden solaparse. En este caso son dibujados en el orden indicado uno encima de otro. Como se indica arriba, a menudo querrás que la vista siga a un objeto determinado. Este objeto puede ser indicado algo más abajo. Si hay múltiples instancias de ese objeto, solo el primero en crearse será seguido por la vista. (En GML puedes indicar a que instancia en particular debe seguir la vista.) Normalmente, el personaje será capaz de andar algo antes de que la vista comience a moverse con el.. Solo cuando el personaje se encuentra cerca del borde de la vista, esta comenzará a moverse. Puedes especificar también el tamaño del contorno que debe permanecer visible alrededor del objeto a seguir. Finalmente puedes restringir la velocidad con que se mueve la vista. Esto significa que el carácter puede caminar por la pantalla, pero esto le da más suavidad al movimiento del juego. Utiliza un valor de -1 si quieres que cambie esta velocidad automáticamente.

Fuentes Cuando quieres dibujar texto en tu juego, este se muestra con la fuente Arial y un tamaño de 12 puntos. Para poner textos más trabajados, probablemente quieras utilizar diferentes Fuentes. Para crear Fuentes diferentes, debes crear recursos de Fuente. En cada recurso de fuente especificas un tipo de fuente en particular con el que puede ser utilizado en el juego utilizando la acción “set a font”. Para añadir un recurso de fuente utilice el ítem Add Font en el menú Add o utilice el botón correspondiente en la barra de herramientas. Aparecerá la siguiente ventana emergente:

Como siempre deberás de ponerle un nombre a tu recurso de fuente. Después, puedes tomar el nombre de la fuente de la lista. También puedes indicar el tamaño y el estilo de la fuente. Date cuenta de que las Fuentes grandes necesitan mucha memoria. Te recomendamos encarecidamente que no utilices Fuentes de un tamaño mayor a 32. (Es posible escalar las Fuentes durante el juego). Un ejemplo de la fuente indicada aparece en la parte inferior de la ventana. Una fuente normalmente consta de 256 caracteres,enumerados de 0 a 255. Pero en general tu solo utilizaras una pequeña porción. Así que por defecto solo se guardan los caracteres del 32 al 127. Cuantos más caracteres guardes, más memoria necesitaras. Puedes cambiar el mapa de caracteres que se utilizará. Para ver el índice de cada carácter, puedes utilizar el mapa de caracteres que se encuentra en la ventana de inicio de WINDOWS bajo Accesorios/Herramientas del sistema. Algunos rangos estándar pueden ser indicados utilizando los botones: El rango”Normal” del 32 al 127, el rango completo “All” del 0 al 255,el rango numérico “Digits”conteniendo solo los diez dígitos, y el rango de letras “Letters”que contiene las letras mayúsculas y minúsculas. Otros rangos pueden ser utilizados indicando los índices del primer y ultimo carácter. Si se escribe un carácter que no esta incluido, este aparece como un espacio en blanco.

Normalmente tienes gran cantidad de Fuentes instaladas en tu ordenador, y hay webs donde puedes descargar cientos de Ellas. El problema es que cuando las utilices en tu juego puede que alguien que lo juegue no la tenga instaladas en su ordenador. Para evitar esto Game Maker guarda todas las Fuentes que quieras en los archivos de juego, Pero solo en los ejecutables. De tal forma que si das un juego ejecutable a alguien más, no necesitas darle los archivos de fuente. Pero si le das la versión editable, esa persona podrá instalárselas.

Paths En la mayoría de los juegos avanzados a menudo se suelen asignar ciertas trayectorias a las instancias. Aunque puedes conseguirlo utilizando alarmas o código, es bastante complicado. Los recursos de trayectoria (path) son un mecanismo mucho más simple. La idea es bastante sencilla: Defines una trayectoria, dibujándola. Una vez hecho esto puedes situar una acción en el evento Create del objeto para que este siga esa trayectoria en particular. En este capítulo explicaremos este procedimiento al detalle.

Definiendo paths Para añadir una trayectoria a tu juego, escoge Add Path en el menú Add. Aparecerá la siguiente ventana (en este ejemplo ya añadimos una pequeña trayectoria):

En la parte superior izquierda puedes especificar el nombre del path. Debajo encontrarás los puntos que definen el path. Cada punto tiene una posición y velocidad asignadas (indicado con sp). Dependiendo de cómo utilices la trayectoria, la posición puede ser absoluta o no. La instancia para la que después utilizaras la trayectoria la seguirá a ese punto especificado, o si es relativa, la instancia siempre empezará en la primera posición del path, y lo seguirá a partir de ahí. La velocidad es interpretada de la siguiente manera. Un valor de 100 significa la velocidad original de la instancia. Un valor menor reduce la velocidad, un valor más alto la incrementa (esto indica el porcentaje de la velocidad real). La velocidad debe ser interpretada de la siguiente manera: Un valor de 100 indica un 100% de la velocidad original definida para la trayectoria cuando se la asignamos a la instancia. Un valor menor, reduce esta velocidad, y un valor mayor la aumenta (siempre porcentualmente). La velocidad se interpolará entre los diferentes puntos, por lo que la velocidad cambiará de forma gradual.

Para añadir un punto presiona el botón Add. Se realizará una copia del punto seleccionado. Ahora puedes modificar la posición y la velocidad cambiando los valores en las ventanas de edición. Cuando seleccionas un punto en la lista, también puedes cambiar sus valores. Presiona Insert para insertar un nuevo punto antes del seleccionado, y Delete

para borrar el punto seleccionado. Finalmente, puedes usar Clear para borrar completamente el path.

A la derecha del formulario verás la trayectoria actual. El punto rojo indica el punto de control seleccionado. Los puntos azules, son todos los demás. El cuadrado verde indica la posición donde comienza la trayectoria. También puedes cambiar el path usando el ratón. Pulsa con el ratón sobre la imagen para agregar un punto. Pulsa sobre un punto existente y arrástralo para cambiar su posición. Cuando mantienes mientras pulsas el botón izquierdo del ratón, insertas un punto. Por ultimo, puedes usar el botón derecho para borrar puntos. (Date cuenta de que de esta manera no puedes cambiar la velocidad.)

Normalmente los puntos se alinean con una cuadricula. Puedes cambiar sus características en la parte superior de la barra de herramientas. también puedes indicar aquí si se muestra la cuadrícula o no. Si quieres posicionar un punto de forma precisa, presiona la tecla mientras lo añades o lo arrastras.

Puedes influir la forma de la trayectoria de dos formas. Primero puedes definir el tipo de unión entre los puntos. Puedes escoger líneas rectas o curvas. En segundo lugar, puedes indicar que pasa cuando se llega al último punto. Existen varias opciones. La más común es continuar moviéndose hacia el primer punto, cerrando el path (move to start). También puede dejar de moverse (stop moving), saltar al primer punto (jump to start), o invertir la trayectoria (reverse). La opción final (continue) reinicia el path desde la posición actual. De esta manera el path va a “avanzar”. Sólo se muestran las primeras cinco repeticiones, pero el path continúa más allá.

Sobre la barra de herramientas tenemos varios controles importantes. De izquierda a derecha estas son sus funciones: El primer botón indica que estas preparado y quieres cerrar el formulario, guardando los cambios (si quieres descartar los cambios, pulsa sobre la cruz para cerrar la ventana e indica que no quieres guardarlos). El siguiente es el botón de deshacer, para corregir el último cambio. Los siguientes botones te permiten borrar la trayectoria, invertir su sentido, deslizarla de un lado a otro, voltearla horizontal o verticalmente, rotarla y cambiar su tamaño. Los siguientes botones son para mover la vista (no la trayectoria en si, el área de la vista esta indicado en la barra de estado abajo del todo) y para centrarla.

Como ya hemos indicado antes, puedes definir después los valores de la cuadrícula y cuando se muestra o no. Por ultimo, existe un botón que indica si quieres ver un fondo en particular como fondo de la trayectoria. De esta forma es fácil colocar la trayectoria en un lugar

determinado del room, como por ejemplo en una pista de carreras, de forma que las instancias puedan seguir después la ruta correcta (esto solo se aprecia cuando utilizas trayectorias absolutas).

Asignando paths a los objetos Para asignar una trayectoria a una instancia de un objeto, puedes asignar la acción “path” en algunos eventos, por ejemplo en el evento “create”. En esta acción debes especificar la trayectoria que quieres de una lista desplegable. También hay otros dos valores que debes proporcionar.

Primero la velocidad a la que el path será recorrido (speed) en píxeles por paso. Cuando la velocidad es positiva, la instancia comienza al principio de la trayectoria. Si es negativa, comienza al final. Recuerda que cuando defines la trayectoria tu mismo especificas la velocidad real, relativa a la velocidad indicada aquí (de forma porcentual). también hay una acción para cambiar la velocidad con que la trayectoria es recorrida. Puedes utilizarla para, por ejemplo, hacer que una instancia acelere o frene a lo largo de la trayectoria. Observa que la velocidad normal de la instancia es ignorada cuando se realiza la trayectoria. Tampoco la gravedad o la fricción tienen efecto sobre ella.

Más adelante debes especificar que sucede cuando se alcanza el final de la trayectoria. Puedes elegir parar el movimiento y terminar la trayectoria, comenzar de nuevo desde el inicio (saltando de nuevo a la posición inicial donde se inicio la trayectoria) o volver a comenzar desde la última posición. Por ultimo, puedes optar por invertir la trayectoria.

Finalmente, puedes indicar si la trayectoria es absoluta o relativa. Una trayectoria absoluta es ejecutada en el lugar del nivel donde fue definida. La instancia se coloca en la posición inicial y comienza su movimiento desde allí (en la posición final si la velocidad es negativa). Esto es útil cuando, por ejemplo, tienes una pista de carreras sobre la que has definido la trayectoria. Cuando eliges una trayectoria relativa, las instancias comienzan a recorrer la trayectoria desde donde se encuentren. Esto es útil cuando una instancia debe hacer una trayectoria local, por ejemplo, las naves de “Space Invader” pueden hacer unos giros en particular desde su posición.

Cuando deseas colocar la instancia en un punto diferente a lo largo de la trayectoria, puedes utilizar la acción para definir la posición dentro de la trayectoria. Una posición dentro de la trayectoria siempre se encuentra entre 0 y 1. Un valor de 0 indica el inicio (que es lo más común). Un valor de 1 indica el final del path. Observa que en cada paso la variable

direction es

definida automáticamente en la

dirección correcta a lo largo de la trayectoria. Puedes utilizar esta variable para orientar correctamente el sprite.

Cuando usas scripts o piezas de código tienes más control sobre la forma en que el path es ejecutado. Existe una función para iniciar una trayectoria para una instancia. La variable anteriormente). La variable

variable

path_position indica

path_speed indica

la

velocidad

la

path_scale puede ser usada para escalar el path. Un valor

más grande, mientras que uno menor lo reducirá. La variable

la posición actual del path. (Entre 0 y 1 como se indicó

velocidad

con

que

se

recorre

la

trayectoria

del

path. La

de 1 indica la escala real. Un valor mayor indica que el path será

path_orientation indica

la orientación en que el path es recorrido

(derecha o izquierda). Esto permite que puedas realizar trayectorias en diferentes orientaciones (Ej. Moviéndose arriba y abajo en vez de izquierda y derecha.)

Finalmente, existen muchas funciones para conocer las propiedades de las trayectorias (coordenadas X e Y por ejemplo) y existen funciones para crear nuevas trayectorias.

También existen funciones que crean trayectorias libres de colisiones para que la instancia alcance una meta determinada. Lee las secciones posteriores sobre GML para más detalles.

Tal vez te preguntes que pasa cuando la instancia colisiona con otra instancia mientras este sigue una trayectoria. Básicamente sucede lo mismo que cuando la instancia se mueve con una velocidad determinada. Si la otra instancia es sólida la instancia se detendrá en la última posición antes del choque. (Asumiendo que existe un evento de colisión definido.) La variable

path_position se

detendrá aquí.

Cuando la instancia que se encuentra en su camino deja de interceptar la trayectoria, continuara recorriéndose la trayectoria. Para manipular las trayectorias tu mismo, la variable

path_positionprevious puede

ser útil. Esta variable guarda la última posición

de la trayectoria y puedes definir la posición de la trayectoria a este punto para parar el avance de la misma.

El evento path Como se describió antes, puedes indicar que sucede cuando la instancia llega al fin de la trayectoria. En este momento se ejecuta el evento End of path. Puedes encontrarlo dentro del evento Other. Aquí puedes añadir más acciones. Por ejemplo, podrías destruir la instancia, o asignarle un path diferente.

Time Lines En muchos juegos ciertas cosas deben pasar en ciertos lapsos de tiempo. Puedes intentar hacer esto usando el evento alarm pero cuando las cosas se vuelven muy complicadas esto podría no funcionar. Mediante el recurso “time line” lo puedes hacer. En una time line tú especificas qué acciones deben suceder en ciertos lapsos de tiempo. Puedes utilizar todas las acciones que están disponibles para los diferentes eventos. Cuando hayas creado una time line puedes asignarla a una instancia de un objeto. Esta instancia ejecutará las acciones en los lapsos de tiempo indicados. Permíteme explicarlo con un ejemplo. Supongamos que quieres crear un guardia. Este guardia debe moverse 20 pasos a la izquierda, después 10 arriba, 20 a la derecha, 10 hacia abajo y después detenerse. Para lograr esto creas una time line donde empiezas con un movimiento a la izquierda. En 20 pasos pones un movimiento hacia arriba. En el paso 30 un movimiento a la derecha, en el paso 50 un movimiento hacia abajo y en el 60 detienes el movimiento. Ahora puedes asignar esta línea de tiempo al guardia y el guardia hará exactamente lo que planeaste. También puedes usar una línea de tiempo para controlar tu juego de manera global. Crea un objeto invisible, crea una time line que en ciertos momentos cree enemigos, y asígnala al objeto. Si empiezas a trabajar con esto encontrarás que es un concepto muy poderoso.

Para crear una time line, selecciona Add time line del menú Add. Aparecerá la siguiente ventana:

Se parece un poco a la ventana de propiedades del objeto. A la izquierda puedes poner el nombre y además hay botones para añadir y modificar “moments” en la time line. Enseguida está la lista de los “moments” (momentos). Esta lista especifica los lapsos de tiempo en steps en que las acciones asignadas van a pasar. Y enseguida está la lista de acciones para el momento seleccionado y finalmente a la derecha está la lista total de acciones disponibles. Para añadir un momento presiona el botón Add, indicando un lapso de tiempo (esto es el número de pasos desde que la time line comienza). Ahora puedes arrastrar acciones a la lista de manera semejante como los eventos de los objetos. También hay botones para borrar el momento seleccionado, para borrar toda la time line, cambiar el momento y duplicarlo.

Finalmente existen dos botones especiales. Con el botón Merge puedes unir varios momentos en un rango deseado en uno solo. Con el botón Shift puedes cambiar todos los momentos cierta cantidad de tiempo avanzándolos o retrocediéndolos la cantidad deseada. Asegúrate de que no creaste momentos con un step negativo, porque nunca se ejecutarán.

Existen dos acciones relacionadas con las time lines:

Set

a

time

line

Con esta acción asignas una time line en particular a una instancia de un objeto. Aquí indicas la time line y la posición de inicio de la time line (0 es al principio). También puedes usar esta acción para finalizar una time line escogiendo No Time Line como valor

.

Set the time line position

Con esta acción puedes cambiar la posición de la time line actual (puede ser absoluta o relativa). Esto puede ser usado para saltar ciertas partes de la time line o para repetir ciertas partes. Por ejemplo, si quieres crear una time line que se repita una y otra vez, añade esta acción en el último momento para que la posición regrese a 0. También puedes usarlo para esperar a que pase algo. Sólo añade la acción de prueba (usa un if) y, si no es cierta, asignas la posición de la time line un valor relativa de -1.

Scripts Game Maker posee un lenguaje de programación interno. Una vez que te familiarices con Game Maker y quieras usarlo a sus máximos alcances, es prudente aprender a usar este lenguaje. Existen dos maneras para usar el lenguaje. Primero puedes crear scripts. Estos son piezas de código a los que les darás un nombre. Son mostrados en el árbol de recursos y pueden ser salvados a un archivo y cargarlos desde un archivo. Pueden ser usados para formar una librería que extienda las posibilidades de Game Maker. Alternativamente, puedes añadir una acción de código a algún evento y escribir una pieza de código ahí. Añadir el código funciona exactamente de la misma manera que añadir scripts excepto por dos cosas. Las piezas de código no tienen un nombre y no usan argumentos. Además ya tienen indicados a que objeto deben aplicar el código. Por lo demás escribes el código de la misma manera como en los scripts. En este capítulo nos vamos a concentrar a fondo en los scripts.

Como se señaló antes, un script es una pieza de código en el lenguaje de programación interno que realiza una tarea específica. Un script puede usar un número de argumentos. Para ejecutar un código desde algún evento, puedes usar la acción script. En esta opción especificas el script que desees ejecutar, junto con un máximo de cinco argumentos. (También puedes ejecutar scripts desde una pieza de código de la misma manera en que llamas una función. En este caso puedes usar 16 argumentos como máximo.) Cuando un script retorna un valor, puedes usarlo también como una función cuando provee valores en otras acciones.

Para añadir un script a tu juego, selecciona Add script de el menú Add. Aparecerá la siguiente ventana (en este ejemplo ya añadimos un pequeño script):

(Realmente, este es el editor de scripts interno. En las preferencias puedes indicar si deseas usar un editor externo.) Arriba a la derecha puedes indicar el nombre del script. Tienes un pequeño editor donde puedes escribir el script. El editor tiene varias propiedades útiles la mayoría mediante botones (presiona el botón derecho del ratón para algunos comandos adicionales):



Múltiple deshacer y rehacer ya sea por tecla presionada o en grupos (puede ser cambiado en las preferencias)



Sangría automática inteligente que se alinea con la línea previa (puede ser habilitado en las preferencias)



Tabulador inteligente que hasta el primer carácter (no espacio) en la línea previa (puede ser habilitado en las preferencias)



Usa para aumentar la sangría en las líneas seleccionadas y +I para reducirla en las líneas seleccionadas.



Cortar y pegar



Buscar y reemplazar



Usa + arriba, abajo, re-pag o av-pag para desplazarte sin cambiar la posición del cursor.



Usa F4 para abrir el script o el recurso cuyo nombre esté en la posición del cursor (no funciona en la acción de código; sólo en los scripts)



Guardar y Cargar el script como un archivo de texto.

También hay un botón con el cual puedes probar si el script está correcto. No todos los aspectos son probados, solo la sintaxis de tu script, junto con la existencia de alguna función usada.

Como habrás notado, partes del texto del script tienen diferentes colores. El editor reconoce la existencia de objetos, variables internas y funciones, etc. El color del código ayuda bastante a evitar errores. En particular, notas inmediatamente si escribiste mal algún nombre o si usaste una keyword (una palabra con una función definida como var, global, other, self, etc.) como variable. Sin embargo colorear el código es algo lento. En las preferencias del menú file puedes activarlo o desactivarlo. Además puedes cambiar el color para los diferentes componentes de los programas. (Si algo sale mal con el coloreado del código, presiona F12 dos veces, para desactivarlo y volver a activarlo.)

También puedes cambiar la fuente usada en los scripts y en las piezas de código. Los scripts son extremadamente útiles para extender las posibilidades del Game Maker. Aunque esto requiere que diseñes tus scripts con cuidado. Los scripts pueden ser guardados en librerías que pueden ser añadidos a tu juego. Para importar una librería, usa el item Import scripts de el menú file. Para guardar tu scripts como una librería usa Export scripts. Las librerías de scripts son simples archivos de texto (Aunque tienen la extensión .gml). Preferentemente no los edites directamente porque poseen una estructura especial. Algunas librerías con scripts útiles son incluidas. (Para evitar trabajo innecesario cuando cargas el juego, después de importar una librería, es mejor borrar las librerías que no utilices.)

Cuando se crean scripts es muy fácil cometer errores. Siempre prueba los scripts usando el botón apropiado. Cuando ocurre un error durante la ejecución del script este es reportado, junto con una indicación del tipo de error y el lugar. Ocasionalmente verás un error con el texto "Unexpected error occurred during the game" (Ocurrió un error inesperado al ejecutar el juego). Este mensaje de error indica que ha ocurrido un error en Windows o en el hardware del ordenador. Normalmente este error se debe a recursión infinita, falta de memoria o hardware, drivers o firmware insuficientes. Generalmente hablando, estos errores tienen que ver con el entorno externo a Game Maker. Si necesitas verificar las

cosas más cuidadosamente, puedes correr el juego en debug mode (F6). En este caso aparece una ventana en la cual puedes monitorear mucha de la información de tu juego:

En el menú Run puedes pausar el juego, correrlo paso a paso e incluso reiniciarlo. En el menú Watch puedes ver el valor de ciertas expresiones. Usa Add para escribir algunas expresiones cuyos valores se mostrarán en cada paso del juego. De esta manera puedes ver si el juego está haciendo las cosas de la manera adecuada. Puedes ver varias expresiones. Puedes salvarlas para usarlos después. (Ej. Para hacer correcciones al juego). En el menú Tools se encuentran comandos para ver más información. Puedes ver una lista de todas las instancias en el juego, puedes ver todas las variables globales y locales (usa el nombre del objeto o el id de la instancia.) Además puedes ver mensajes que envías desde tu código usando la funciónshow_debug_message(str). Finalmente puedes dar al juego comandos y cambiar la velocidad del juego. Si haces juegos complicados deberías aprender a usar las opciones del debug mode.

Terminando tu juego En esta sección veremos cómo convertir tu proyecto en un juego terminado. Aquí se describe cómo añadir archivos de ayuda al juego, configurar ciertas opciones y crear un ejecutable que pueda ser distribuido para que el juego funcione sin necesitarGame Maker. Esta sección se divide en los siguientes temas: Información del juego Opciones globales del juego Consideraciones sobre la velocidad

Información del juego Un buen juego provee al jugador con cierta información sobre como jugar el juego. Esta información es mostrada cuando el jugador presiona la tecla durante el juego. Para crear la información del juego, da doble clic en Game Information(información del juego) en el árbol de recursos a la izquierda de la pantalla. Se abre un pequeño editor de texto en donde puedes editar la información del juego. Puedes usar diferentes fuentes, diferentes colores, y estilos. También puedes poner un color de fondo.

En el menú File puedes fijar un numero de Options (opciones). Aquí puedes indicar el título de la ventana de la información del juego durante el juego. También puedes indicar la posición (usa -1 para centrar la ventana) y el tamaño de la ventana del game information. Puedes forzar a la ventana de la información para estar arriba y también indicar si el juego puede continuarse jugando mientras la información se muestra.

Una opción interesante es mimic the main window. Cuando habilitas esta opción la ventana de la ayuda se muestra exactamente en la misma posición y tamaño que la ventana del juego. Esto da como resultado que se vea como si el texto apareciera en la ventana del juego. Escogiendo el color de fondo apropiado provee un efecto visual agradable (podrías indicar en el fondo de la ayuda que el jugador debe presionar Escape para continuar jugando.)

Un buen consejo es hacer la información corta pero precisa. Por supuesto puedes agregar tu nombre porque tú creaste el juego. Todos los juegos de ejemplo proveen un archivo de información acerca del juego y de cómo fue creado.

Si quieres hacer una ayuda más imaginativa, usa por ejemplo Microsoft Word. Y entonces seleccionas la parte que desees y usa copiar y pegar para moverlo desde Microsoft Word hacia el editor del Game Information. Para juegos más avanzados probablemente no uses este mecanismo en todo, pero usa algunos rooms dedicados a mostrar la ayuda acerca del juego.

Opciones Globales del Juego Existen un número de opciones que puedes cambiar para tu juego. Estos cambian la forma de la ventana principal, fijan algunas opciones de gráficos, cambiar la imagen de cuando carga el juego, constantes e información sobre el creador del juego. También puedes indicar aquí cuales archivos serán incluidos en el juego convertido a .exe y como los errores deben ser manipulados.

Estas opciones pueden ser encontradas haciendo doble click en Game Options en el árbol de recursos a la izquierda de la pantalla. Estas están subdivididas en varias pestañas (Algunas funciones solo están disponibles en el modo avanzado).

La información detallada se encuentran en los temas siguientes: Opciones gráficas Resolución Otras opciones Opciones de carga Constantes Incluyendo archivos en los ejecutables Opciones de error Información sobre el juego

Opciones gráficas En esta pestaña puedes poner un número de opciones que están relacionadas con la apariencia gráfica del juego. Normalmente es útil comprobar los efectos de esas opciones porque pueden tener un efecto significativo en la forma en que el juego luce. Recuerda que diferentes usuarios tienen máquinas diferentes. Entonces asegúrate que las opciones funcionen en las máquinas de otra gente.

Start in fullscreen mode Cuando lo habilitas el juego se ejecuta a pantalla completa; de lo contrario corre en una ventana. Scaling Aquí puedes indicar lo que sucederá cuando la ventana sea más larga que el cuarto o el juego corra en modo de pantalla completa. Hay 3 opciones. Puedes indicar un escalado fijo. El cuarto es dibujado escalado la cantidad dada en el centro de la ventana de la pantalla. 100 indica que no hay escalado. La imagen en el modo ventana debe ser escalada. Típicamente usas el escalado cuando tus sprites y cuartos son muy pequeños. La segunda opción es escalar el cuarto tal que llena la ventana o la pantalla pero guarda la proporción de aspecto entre anchura y altura. La tercera opción es escalar tal que la ventana o la pantalla está completamente llena. Esto puede conducir a la deformación en una imagen (en particular en el modo ventana cuando el usuario puede volver a cambiar el tamaño de la ventana)

Interpolate colors between pixels Cuando lo seleccionas, los colores de píxeles en sprites, fondos y tiles que no están alineados con píxeles en la pantalla serán interpolados. Este es el caso cuando son escalados, rotados o colocados en posiciones con coordenadas no enteras (con decimales). La interpolación hace el movimiento más suave pero puede también crear un efecto borroso (también para tiles puede hacer que aparezcan grietas entre ellas si no diseñas el cuarto cuidadosamente) Color outside the room region Cuando el cuarto no llena totalmente la ventana o la pantalla hay algunas áreas que no se usan. Aquí puedes especificar el color de ese área. Allow the player to resize the game window Cuando lo seleccionas, en el modo ventana el usuario podrá cambiar el tamaño de la ventana arrastrando el ratón en las esquinas de la ventana. Let the game window always stay on top Cuando lo seleccionas, en modo ventana el juego estará siempre por encima de otras ventanas. Don't draw a border in windowed mode Si lo seleccionas, el modo ventana no tendrá bordes ni la barra de título. Don't show the buttons in the window caption Cuando lo seleccionas en el modo ventana la barra de título no mostrara los botones para minimizar, maximizar o cerrar. Display the cursor Aquí indicas si quieres que el puntero del ratón sea visible. Desactivarlo es más rápido y agradable. (Puedes hacer fácilmente tu propio cursor con Game Maker) Freeze the game when the form looses focus Cuando lo habilitas, si el jugador pone alguna otra ventana sobre el juego (por ejemplo otro programa) el juego se congela hasta que la ventana del juego es enfocada otra vez.

Resolución En esta pestaña puedes fijar la resolución de la pantalla a la cual el juego deberá correr. Por defecto, la resolución no cambia. Pero algunas veces quieres que tu juego corra en resoluciones más bajas o quieres fijar la frecuencia del monitor para hacer que la sincronización trabaje correctamente. Si quieres cambiar la resolución debes primero habilitar opción denominado Set the resolution of the screen.

Hay tres cosas que puedes cambiar. Primero está la profundidad del color. Esto indica el número de bits usados para representar el color de un píxel. La mayoría de las máquinas de ahora permiten 16-bit (alto color) o 32-bit (color completo) pero maquinas antiguas solo aceptan 8-bit y a veces 24-bit. Game Maker solo funciona correctamente in modo 16-bit y 32-bit dando una apariencia agradable a las imágenes pero toma mucha memoria y tiempo de procesamiento. Si quieres que tu juego corra en máquinas antiguas pon la profundidad del color a 16-bit. Si no utiliza 32-bit o directamente no la cambies.

Segundo, está la resolución de la pantalla, el número de píxeles (horizontal y vertical) en la pantalla. Cambiar la resolución es muy útil cuando, por ejemplo tienes rooms muy pequeñas. En este caso puede que ayude reducir la resolución de la pantalla. Realízalo, pero sin embargo esto afectará las otras aplicaciones funcionando. Esto puede en particular dar problemas con resoluciones bajas. Así, en general es mejor hacer esto sólo cuando el juego corra en pantalla completa. Game Makerautomáticamente cambiará la resolución en la que estaba la máquina antes de poner el juego, cuando este termine.

Finalmente puedes cambiar la frecuencia. Esto indica cuantas veces por segundo la imagen en la pantalla se refresca. Si tu room speed es mayor que la frecuencia no todos los steps se verán. Funciona bien si la frecuencia es un múltiplo de la velocidad del room (Si especificas una frecuencia que sea demasiada alta o no disponible la frecuencia no se cambia).

También hay una opción aquí llamada Use synchronization to avoid tearing. Esto requiere cierta explicación. La pantalla es re-dibujada un número de veces por segundo, dependiendo en la frecuencia de refresco. Si un room es dibujado en medio de un refresco de la pantalla, la parte superior aún mostrara la imagen antigua mientras la parte de abajo muestra una nueva imagen. Esto se llama tearing. Para evitar esto puedes chequear esta opción. En este caso la nueva imagen del room será solamente copiada a la pantalla cuando no esté ocurriendo un refresco, evitando así el tearing la mayoría de veces. La desventaja es que normalmente tendremos que esperar hasta el siguiente refresco. Esto significa que el número máximo de frames está limitado por la frecuencia del monitor y, cuando el proceso no es lo suficientemente rápido, el framerate (velocidad de refresco del juego) inmediatamente disminuye a la mitad. También puede ocurrir un conflicto entre la sincronización interna del juego y la sincronización del monitor. Si quieres hacer esto mejor pon la frecuencia del monitor a 60 y la room speed igual a 30 ó 60.

Otras opciones Aquí puedes fijar un número de opciones adicionales. Primero que todo puedes fijar un número de teclas predeterminadas:

Let end the game Cuando lo habilitas, al presionar la tecla Escape termina el juego. Los juegos más avanzados normalmente no quieren que esto pase porque talvez quieran hacer algunos procesos (como salvar) antes de terminar el juego. En este caso, deshabilita esta opción y provee tu propia acción para la tecla escape. (Dar un clic sobre la cruz de la ventana también genera un evento de la tecla escape.)

Let show the game information Cuando está habilitado, presionando la tecla F1 muestra la información del juego.

Let switch between screen modes Si lo habilitas, la tecla F4 cambiará entre pantalla completa y el modo ventana

Let and load and save the game

Cuando está habilitado, el jugador puede usar para guardar la situación actual del juego, y para cargar el último juego guardado (Nota que solamente los datos básicos de juegos se guardan. Una vez que utilices características avanzadas como partículas o estructuras de datos, esas opciones no se guardan y deberás crear un sistema de guardado y cargado tu mismo)

También puedes fijar la prioridad del proceso del juego. Esta prioridad indica cuanto tiempo de proceso se asigna al juego. En modo normal el sistema operativo trata de dar tiempo de proceso para cada proceso que lo necesite de una manera razonable. Cuando más alta puso la prioridad es cuando mas tiempo de proceso se le asigna al juego, haciendo que corra mas suave y rápidamente. Pero otros procesos consiguen menos tiempo (también Windows procesa así incluso que el ratón no se puede mover más. Úsalo con cuidado.

Opciones de carga Aquí puedes indicar lo que debe suceder cuando cargas el juego. Primero puedes especificar una imagen propia de cargado. Después puedes indicar si se mostrará una barra del proceso de cargado en la parte baja de la imagen. Tienes tres opciones aquí. Que no se muestre una barra de progreso, que se muestre la barra que está por defecto o puedes especificar dos imágenes: el background (fondo) de la barra de carga y el foreground (primer plano). Puedes indicar si la barra de cargado del frente deberá escalarse (predeterminado) o acortado mientras se vuelve mas largo. En el segundo caso, cerciórate que la imagen es suficientemente grande como para llenar la barra. (Nota que ambas imágenes pueden ser especificadas en ese caso, no solo una)

Es posible indicar que la imagen de cargado sea transparente. En este caso el ultimo píxel abajo a la izquierda de la imagen de fondo es usado como el color transparente. También la translucidez alpha puede ser indicada. Un valor de 0 significa translucidez completa. Un valor de 255 significa completamente opaco (Ambos solo funcionan bajo Windows 2000, XP o siguientes)

Segundo, puedes indicar el icono que será usado para los juegos ya transformados a .exe. Puedes usar solo iconos de 32x32. Si intentas seleccionar otro tipo de iconos obtendrás una advertencia.

Finalmente, puedes cambiar el id único del juego. Este id se va a usar para registrar los puntajes más altos y los juegos salvados. Si tú liberas una nueva versión de tu juego y no quieres usar los puntajes anteriores, debes cambiar este número.

Constantes Bajo esta pestaña puedes definir las constantes globales que puedes ser usadas en scripts y en piezas de código, o como valores para acciones. Cada constante tiene un nombre y un valor. Los nombres deben seguir las mismas reglas que las variables, es decir, deben empezar con una letra o un guión bajo y seguido de letras, dígitos o guiones bajos. Te recomiendo que hagas tus constantes fácilmente distinguibles. Una convención generalmente es utilizar solo mayúsculas y guiones bajos.

El valor de una constante deberá ser una expresión constante. Esto es, debe ser un número constante, una cadena de texto (con comillas alrededor) o una expresión. La expresión es evaluada antes de que cualquier cosa suceda en el juego. Por ejemplo no puedes referirte al room actual, instancias, o scripts. Pero puede contener constantes internas y los nombres de los recursos.

Puedes añadir una constante usando el botón Add y borrarlo usando Delete Puedes cambiar un nombre de una constante o el valor haciendo un clic en él. Hay también botones para borrar todas las constantes o clasificarlas por nombre.

Incluyendo archivos en los ejecutables Como se ha indicado antes puedes crear la versión .exe de tu juego. A veces tu juego utilizará archivos adicionales. Por ejemplo, puede que desees incluir archivos de video o archivos de texto que se usarán en el juego. En muchos casos querrás agregar DLLs o imágenes y sonidos que se agreguen durante el funcionamiento del juego. Puedes proveer estos junto al ejecutable pero a veces es mas fácil incluirlos dentro del juego. De esta manera, sólo necesitas distribuir 1 solo archivo.

Aquí puedes indicar los archivos que quieres incluir en el ejecutable. Arriba del formulario hay una lista de archivos a incluir. Usa Add para seleccionar los archivos y agregarlos a la lista (puedes seleccionar múltiples archivos simultáneamente). UsaDelete o Clear para quitar archivos de la lista. (Observa que en el archivo .gm6 no se encuentran los archivos, solo los nombres. Si envías a alguien el archivo .gm6 deberán enviar también los archivos incluidos)

Los archivos en la lista se empaquetan en el ejecutable que es creado. Cuando el juego corre ellos se desempaquetan y pueden accederse a ellos dentro del juego. Es importante darse cuenta de dónde sucede esto. Hay 2 posibilidades que puedes elegir. En la situación predeterminada los archivos son desempaquetados en la carpeta donde esta el .exe. Así el juego puede utilizar el nombre del archivo para acceder a ellos directamente (no se necesita decir la ruta). Esto funciona bien si el .exe se guarda en el disco duro pero fallará si se almacena en un dispositivo de sólo lectura como un CD.

La segunda posibilidad es indicar que el archivo debe ser desempaquetado dentro de un una carpeta temporal que es creada durante el funcionamiento del juego. Si seleccionas esta opción necesitarás proveer la ruta a la carpeta temporal cuando uses el nombre del archivo durante el juego. Esta ruta puede obtenerse usando la variable interna

temp_directory. No olvides añadir el signo “\” en este caso.

Por ejemplo, para ver un archivo de video debes hacer esto:

{ show_video(temp_directory+'\pelicula.avi',true,true); } Asegúrate de que la carpeta temporal sea eliminada cuando el juego termine. Así, no puedes almacenar juegos guardados o información especial en este caso. Elige esta opción cuando el juego tenga que correr desde un CD o cuando no deseas crear ni alterar ningún archivo durante el juego.

Si un archivo que se desempaqueta ya existe, el archivo no se sobreescribe. Puedes cambiar este comportamiento seleccionando Overwrite existing files (sobreescribir archivos existentes) También, cuando el juego termina los archivos no son eliminados (a menos que estén en la carpeta temporal que se eliminaa totalmente). Puedes cambiar esto seleccionando Remove at game end.

Aviso: Si estás testeando tu juego, el directorio de trabajo será aquél en el que se encuentra el archivo .gm6 del juego. Si los archivos que incluyes en el juego están guardados en este mismo directorio y seleccionas la opción Remove at game endpuede que se eliminen completamente! Así que es mejor que no guardes los archivos que vayas a incluir en el mismo directorio que el .gm6.

Opciones de error Aquí especificas algunas opciones relativas a la manera en que los errores son reportados:

Display error messages Si lo habilitas, los mensajes de error se muestran al jugador. En la versión final de tu juego deberías deshabilitar esta opción.

Write error messages to file

game_errors.log

Si lo seleccionas, todos los mensajes de errores son escritos en un archivo llamado

game_errors.log en la carpeta del juego.

Abort on all error messages Normalmente ciertos errores son fatales, mientras otros pueden ser ignorados. Cuando habilitas esta opción todos los errores son considerados fatales y el juego es terminado. En la versión final del juego deberías habilitar esta opción.

Treat uninitialized variables as 0 Un error común es utilizar una variable antes de que tenga un valor asignado. Algunas veces esto es difícil de evitar. Cuando habilitas esta opción, las variables sin inicializar no reportarán un error pero se les asignará el valor de 0. Aunque debes tener cuidado. Esto significará que ya no serás informado de errores de escritura.

Información sobre el juego Aquí indicas el nombre del autor del juego. La versión del juego, y alguna información acerca del juego. Además se mantiene la fecha de la última modificación. Esto es útil si estás trabajando con varias personas en un juego o haciendo una nueva versión. Esta información no es accesible mientras se ejecuta el juego.

Consideraciones sobre la velocidad Si estás haciendo juegos complicados probablemente quieras hacer que corran lo más rápido posible. Aparte de que Game Maker hace que el juego corra lo más rápido posible, mucho depende en cómo diseñes el juego. Además es muy fácil crear juegos que utilicen mucha memoria. En este capítulo te daré algunas sugerencias sobre cómo hacer tus juegos más rápidos y de tamaño pequeño.

Antes de nada, mira cuidadosamente los sprites y fondos que utilices. Sprites animados usan mucha memoria y dibujar muchos sprites toma mucho tiempo. Haz tus sprites lo mas pequeño posible. Saca cualquier área invisible alrededor de el (el comando crop en el editor de sprites lo hace automáticamente). Lo mismo aplica para los los fondos. Si tienes un fondo que cubre toda la pantalla, asegúrate de desactivar la opción de color de fondo.

Si utilizas el modo pantalla completa, asegúrate de que el tamaño del room (o ventana) no sea mayor que el tamaño de la pantalla. La mayoría de las tarjetas de video pueden eficientemente aumentar a escala las imágenes, pero reducir a escala es lento. Finalmente, si es posible, desactiva el cursor. Esto hace lentos los gráficos.

También ten cuidado con el uso de muchas views. Por cada view el room se vuelve a dibujar.

Aparte de los gráficos, otros aspectos influyen en la velocidad. Asegúrate de tener la menor cantidad de instancias como sea posible. En particular, destruye los objetos que ya no sean requeridos (Ej. cuando abandonan el cuarto). Evita mucho código en el evento step o en el evento draw de los objetos. Frecuentemente las cosas no necesitan ser verificadas en cada paso. La interpretación del código es razonablemente rápida, pero esto es interpretado. Además, algunas funciones y acciones toman mucho tiempo; en particular cuando tiene que verificar todos los objetos (como por ejemplo, la acción de rebote).

Piensa acerca de donde utilizar los eventos de colisión. Normalmente tienes dos opciones. Los objetos que no tienen eventos de colisión son tratados mucho más rápidos, entonces utilízalos en los objetos que tengan pocas instancias.

Ten cuidado con el uso de archivos de sonido muy grandes. Necesitan mucha memoria y además se comprimen muy mal. Deberías verificar tus sonidos y ver si puedes detenerlos.

Finalmente, si quieres hacer un juego que mucha gente pueda jugar, asegúrate de poder probarlo en máquinas viejas.

El Lenguaje Game Maker (GML) Game Maker posee un lenguaje propio de programación. Este lenguaje te da mucha más flexibilidad y control que las acciones normales. Este lenguaje se llama Lenguaje Game Maker (GML). En esta sección describiremos el GML y daremos un vistazo a las cerca de 1000 funciones y variables disponibles para controlar todos los aspectos de tu juego. Esta sección se divide en los siguientes temas: Estructura general del GML Haciendo cálculos Game Play Interacción con el usuario Gráficos del juego Música y sonido Ventanas, highscores y otros pop-ups Recursos Modificando los recursos Archivos, registro y ejecución de programas Estructuras de datos Creando partículas Juegos multijugador Usando DLLs Gráficos 3D

Estructura general del GML Como habrás leído antes, el Game Maker contiene un lenguaje de programación interno. Este lenguaje te da mucha más flexibilidad y control que las acciones estándar. Nos referiremos a este lenguaje como el GML (de Game Maker Language). Hay diferentes lugares en los que puedes escribir programas con este lenguaje. El primero, cuando defines scripts. Un script es un programa en GML. Segundo, cuando agregas una acción de código a un evento. En una acción de código debes escribir un programa en GML. Tercero, en el room creation code. Y finalmente, en cualquier momento que necesites especificar algún valor en una acción, puedes también emplear una expresión en GML. Una expresión, como veremos más adelante no es un programa completo, sino una pieza de código que devuelve un resultado.

En este capítulo describiremos la estructura básica de los programas en GML. Cuando desees usar programas en GML, se debe tener cuidado con ciertos aspectos. Primero que nada, para todos tus recursos (sprites, objetos, sonidos, etc.) debes emplear nombres que inicien con una letra y que sólo consistan de letras, números y el guión bajo "‘_". De otra forma no podrás referirte a ellas desde el programa. Mantente seguro que todos los recursos tengan nombres diferentes, también ten cuidado de no nombrar a tus recursos self, other, global o all porque estas son palabras que tienen un significado especial dentro del lenguaje. Tampoco debes usar ninguna de las palabras reservadas indicadas a continuación. La estructura básica del GML se trata con detalle en los siguientes capítulos: Un programa Variables Asignaciones Expresiones Variables extra Accediendo a variables en otras instancias Arrays Sentencia If Sentencia Repeat Sentencia While Sentencia Do Sentencia For Sentencia Switch Sentencia Break Sentencia Continue Sentencia Exit Funciones Scripts Construcciones With Comentarios Funciones y variables en GML

Un programa Un programa consiste de un sistema de instrucciones, llamados sentencias. Un programa debe comenzar con el símbolo ‘{‘ y terminar con el símbolo ‘}’ . Las sentencias deben separarse con el símbolo ';'. La estructura global de todo programa es:

{ ; ; ... } Hay un número de diferentes tipos de sentencias, de las cuales vamos a ver más abajo.

Variables Como en cualquier lenguaje de programación, el GML contiene variables. Las variables son las posiciones de memoria que guardan la información. Las variables pueden almacenar valores reales o cadenas de texto. Las variables no necesitan ser declaradas como en otros lenguajes. Hay un gran número de variables internas. Algunas son generales, como mouse_x y mouse_y, las cuales indican la posición actual del cursor, mientras otras son locales para la instancia del objeto para el cual se ejecuta el programa, como “x” e “y” que indican la posición actual de la instancia. Una variable tiene un nombre que debe iniciar con una letra, y puede contener sólo letras, números, y el símbolo ‘_’ (La longitud máxima es de 64 caracteres). Cuando haces uso de una nueva variable, ésta es local para la instancia actual y no es conocida en los programas de otras instancias (aún del mismo objeto), aunque existe la posibilidad de hacer referencia a variables de otras instancias; mira más abajo para mayor información.

Asignaciones Una asignación pasa el valor de una expresión a una variable. Una asignación tiene la siguiente forma:

= ;

Una expresión puede ser un simple valor pero también puede ser más complicada. Además de asignar un valor a una variable, también se le puede sumar usando +=, restar usando -=, multiplicarla usando *=, dividirla usando /=, o usando |=, &\ o ^=.

Expresiones Las expresiones pueden ser números reales (p. Ej. 3.4), números hexadecimales, comenzando con el signo ‘$’ (p. Ej. $00FFAA), cadenas entre comillas simples o dobles (p. Ej. ‘hola’ o “hola”) u otras más complicadas. Para las expresiones, existen los siguientes operadores binarios (en orden de prioridad):



&&, ||: funciones Booleanas (&& para la función and, || para la función)



=: comparaciones, el resultado es true (1) o false (0)



| & ^: operadores de bit (| = bitwise or, & = bitwise and, ^ = bitwise xor)



>: operadores de bit ( > = shift right)



+, -: adición, sustracción



*, /, div, mod: multiplicación, división, división entera y módulo.

Nota que el valor operador

x div y

es el valor de

x/y redondeado en la dirección de cero al número entero más cercano. El

mod devuelve el resto obtenido dividiendo sus operandos. En otras palabras, x mod y =

x – (x div y) * y.

También, los operadores de bit existen:



!: not, convierte un valor verdadero en falso y uno falso en verdadero



-: cambio de signo



~: cambio de signo de bit

Como valores se pueden emplear números, variables o funciones que devuelvan algún valor. Las sub-expresiones se pueden colocar entre paréntesis. Todos los operadores funcionan para valores reales. Las comparaciones también funcionan para las cadenas y el + concatena cadenas.

Ejemplo Aquí hay un ejemplo con algunas asignaciones

{ x = 23; color = $FFAA00; str = 'hola mundo'; y += 5; x *= y; x = y