Como crear un juego con Game Maker

[size=12]Hola T! hoy les enseñare a crear un juego con Game maker 8

aca link de descarga del programa que utilizaremos:

http://www.yoyogames.com/gamemaker/try

Conceptos

Antes de empezar a utilizar el programa vamos a aprender cómo se estructuran los juegos. Primero tenemos los sprites, que son las imágenes que vamos a poner a los objetos del juego. Luego tenemos los objetos, que son los que están en el juego, ya sea con movimiento o parado. Ejemplos de objetos son el suelo o el personaje. A los objetos también se les llama instancias, por lo que no os extrañeis si lo veis por ahí escrito. También están los backgrounds (que son los fondos de nuestro juego) y los sonidos. Además están los rooms (habitaciones en inglés), que son por ejemplo las fases. Para ser más exactos las rooms es donde colocamos objetos y backgrounds.

Si no teneis claro alguno de estos conceptos no os preocupeis, ya los acabareis diferenciando. El principal problema está en confundir un sprite con un objeto, que no son lo mismo, ya en el siguiente capítulo aprenderemos a poner sprites en nuestro juego y aprenderemos lo principal de ellos.

Agregar sprites

Primero abrimos el Game Maker. Para agregar un sprite hay dos formas, las dos señaladas en la imagen siguiente. Una es dar botón derecho sobre la carpeta que se llama sprites y darle a Create Sprite, o también se le puede dar a la cara roja del menú de arriba.

Una vez agregado el sprite se nos abre la ventana siguiente:

Primero le ponemos un nombre al sprite donde pone Name (usa sólo letras, números y barras bajas, y procura que no haya dos sprites con el mismo nombre) y después cargamos uno dándole a "Load sprite". Nos aparecerá la carpeta de sprites por defecto del Game Maker, para nuestro primer sprite vamos a poner un bloque que puede servir de pared o suelo, se encuentra en la carpeta various y se llama Square.

Características de los sprites

Para continuar asegúrate de que esté marcada la casilla Advanced mode en file (en el menú de arriba del todo), porque sino no te aparecerán algunos botones.

Ahora vamos a aprender a modificar las características de los sprites siguiendo en la ventana que teníamos antes. Si la cerraste sólo tienes que darle dos clics al sprite que creaste. Por encima del botón OK puedes ver una casilla que se llama transparent, ésta vale para que el color que tenga en el pixel de abajo a la izquierda (en ese punto) no se vea, de forma que si ese punto es negro, todo lo que sea negro no se verá porque se hace transparente.

El botón de "precise collision checking" tiene que ver con la colisión entre objetos, es decir, cuando un objeto entra en contacto con otro. Si la casilla no está marcada la colisión se tendrá en cuenta con la zona transparente incluida, y si está marcada sólo se tendrá en cuenta la zona visible. Si está marcada el juego va a consumir más memoria, por lo que sólo lo marcaremos en objetos que necesiten colisiones perfectas, como el personaje del juego.

La casilla "smooth edges" sirve para que en el caso de que se nos vea el muñeco muy cuadriculado nos lo redondee. La casilla "Preload texture" sirve para que este sprite se cargue a la vez que el juego. Contra más sprites tengas con esta casilla marcada más tardará en cargar el juego, pero tampoco conviene quitarlas todas porque sino cuando aparezcan estas texturas en el juego se tendrán que cargar haciendo que durante el tiempo de carga vaya lento. Por lo tanto conviene marcarla en los sprites que más utilicemos, y los que apenas aparezcan no se marca.

Debajo de esos tres botones podemos ver una ventanita llamada origin. Cuando agreguemos un objeto en una room se pondrá en un sitio u otro dependiendo donde esté el origen, donde lo pongamos ahí se pondrá el origen del objeto. La mayoría de las veces utilizaremos el origen en el 0,0, pero si te conviene cambiarlo lo puedes cambiar ahí. La ventana llamada "bounding box" no la vamos a tocar, porque no tiene apenas utilidad.

Modificando los sprites

Nosotros podemos modificar un sprite dando en "Edit sprite". Ahí podemos ver el sprite, y en el caso de que sea un gif animado aparecerán las distintas imágenes que lo componen. En el menú de arriba a la derecha hay un lápiz, y si seleccionamos una imagen del sprite y le damos se nos abrirá una ventana en la que podemos cambiar el sprite como si fuera el paint. Si lo modificamos después lo podemos guardar dando clic en el disket del menú donde estaba el lápiz.

En la ventana de edit sprite además de modificarla como en el paint podemos hacer lo siguiente:

En el menú transform:
Mirror horizontal gira el sprite horizontalmente.
Flip vertical lo gira verticalmente
Shift nos permite mover la imagen dentro del recuadro que la contiene.
Rotate nos permite girar el sprite 90º, 180º o la cantidad que queramos. En el último podemos especificar la calidad, siendo 9 la máxima.
Resize canvas redimensiona el recuadro que contiene la imagen, y nos permite elegir donde aparecerá la imagen en este recuadro. Si marcamos "Keep aspect ratio" el porcentaje será el mismo en los dos ejes.
Stretch nos permite redimensionar tanto el recuadro que contiene la imagen como la imagen.
Scale nos permite redimensionar la imagen pero no el recuadro que la contiene.
En el menú images:
Cycle left hace que en los gifs animados la animación empiece en la imagen anterior, y cycle right en la siguiente.
Black and white pone el sprite en blanco y negro, colorize cambia el color del sprite, colorize partial cambia de color sólo una parte, shift hue es otra forma de cambiar el color, intensity es la intensidad del color e invert invierte los colores.
En fade elegimos un color y la imagen se aproximará a ese color, transparency nos permite hacer medio transaparente el objeto (cuanro más grande sea el nº que pongamos más transparente será) y blur difumina la imagen.
Crop nos permite reducir la imagen tanto como sea posible dándonos a elegir la distancia entre ésta y el borde.

Agregar sonidos

Bueno, primero de todo recordar que teneis que tener marcada la opción "advanced mode" en el menú file, porque si no no te saldrán algunas opciones. Para agregar un sonido se puede hacer de dos formas también, una dando un clic en el icono de al lado de la carita de agregar los sprites, y otra dando botón derecho en la carpeta Sounds y dándole a "Create sound". Una vez creado el sonido nos aparecerá la siguiente ventana:

Primero, como hicimos con los sprites, le ponemos un nombre al sonido, y después le damos a "Load Sound" para cargar uno.
Características de los sonidos

Ahora vamos a seleccionar el tipo de sonido en la ventana "Kind":

Normal Sound: los sonidos normales suelen ser sonidos en formato wav (puedes poner otro formato, pero Game Maker no los reconoce todos). Estos sonidos tienen la característica de que pueden sonar varios a la vez, incluso del mismo sonido.
Background music: es la música de fondo, y sólo puede sonar una a la vez, por lo que si empiezas otra se parará la anterior. Los archivos midi son siempre música de fondo.
3D Sounds: los sonidos 3d son, como su propia palabra indica, los que tienen opciones de 3d.
Use Multimedia Player: Game Maker utiliza Direct X para reproducir la música, lo que lo limita a archivos midi y wave. Esta opción sirve para que el sonido sea reproducido por el media player, permitiendo reproducir además sonidos mp3. El problema de esto es que no puedes darle efectos de sonido, y además los sonidos mp3 al ocupar tan poco necesitan ser descomprimidos por lo que tu juego tardará más en cargar. Por esta razón no es aconsejable utilizar sonidos mp3 en tus juegos.
Una vez elegido el tipo de sonido podemos ponerle efectos en la ventana "Effects". Los efectos son coro (chorus), eco (echo), distorsión (flanger), reverberación (reverb) y un efecto como si fueran gárgaras (gargle). Puedes ver como te va quedando el sonido pulsando en el play.

Por último tenemos el volumen del sonido y en qué lado (de los altavoces) debe sonar más. Además, como con los sprites, tenemos el botón Preload, para que se cargue el sonido a la vez que el juego. También puedes ver un botón que se llama Edit sound, que sirve para que se te abra un programa de edición de sonido, pero primero debes indicarle al Game Maker cual es ese programa. Para ello le das a File/Preferences, le das a la pestaña de Sound Editor y lo pones en cada tipo de archivo. Un ejemplo de estos programas es el Nero Wave Editor, que te viene en el nero.

Agregar backgrounds

Como ya os dije, los backgrounds son los fondos de nuestro juego. La diferencia con los sprites es que los fondos no interaccionan con nada. Para agregar uno podemos darle al icono con una imagen que hay al lado del icono del sonido, o darle botón derecho en la carpeta backgrounds y darle a "Create Background". Una vez creado nos aparecerá la siguiente ventana:

Le damos a load background y cargamos uno que tengais. En la carpeta de game maker hay una carpeta llamada backgrounds donde encontrareis algunos. Como siempre lo primero debe ser ponerle un nombre.

Características de los backgrounds

Primero tenemos la casilla transparent, que hace lo mismo que en los sprites, vuelve todo lo que tenga el color del píxel de abajo a la izquierda transparente. El botón "Edit background" abre un programa parecido al paint para modificar o crear el background, al igual que con los sprites también.

Después hay otra casilla llamada "Smooth edges", que sirve para que cuando se vean los bordes un poco marcados por la transparencia se suavicen. Este efecto sólo es visible en el juego, y no en el editor. Preload texture, como siempre, sirve para que se cargue la imagen a la vez que el juego.

Por último tenemos "Use a tile set", que lo que hace es dividir la imagen en muchos cuadraditos y despues en el room elegimos qué parte (en cuadraditos) poner y dónde. Esto es útil para imágenes como las de los sprites que os enseñé que venían muchos en una sóla. Si marcamos el tile set nos aparecen seis casillas más:

Tile width es el ancho de los cuadraditos, y tile height el alto.
Horizontal offset y vertical offset indican desde dónde empiezan los cuadrados desde la izquierda y desde arriba.
Horizontal sep y vertical sep indican la separación horizontal y vertical entre los cuadrados.

Agregar objetos

Nos saltamos los paths, los scripts, las fuentes y los time lines que los veremos en la segunda lección y pasamos a algo más complejo como son los objetos. Dentro de los objetos se incluyen las acciones y los eventos, que veremos en capítulos aparte. Pues bien, agreguemos un objeto. Para agregar un objeto puedes dar botón derecho en la carpeta objects y darle a create object, o dar un clic a la bola azul del menú de arriba. Entonces nos aparecerá una ventana como ésta:

Como podeis ver, esta ventana es más compleja que las que hemos visto hasta ahora, y esto se debe a la infinidad de cosas que puedes ponerle a los objetos. Primero le ponemos el nombre. En este caso no podemos hacer como en el caso de las imágenes y los sonidos que cargábamos uno, porque un objeto es algo que no se ve, y que le pones un sprite para que sea visible. Un mismo sprite puede ser puesto en múltiples objetos. Pues vamos a asignarle un sprite que tengamos creado a este objeto, por ejemplo el del bloque que hicimos al principio. Para ello le damos al botón azul que hay al lado de donde pone <no sprite>, y seleccionamos el sprite, que ya debe de estar creado. Si no está creado le podemos dar a new y nos creará un sprite nuevo.

Características de los objetos

Pues más bien pocas. La primera que encontramos es la casilla visible, que si no está marcada el objeto no se verá, será invisible. Esto nos sirve por ejemplo para crear objetos que definan la música, para objetos que deben estar ahí pero que no se deben de ver. Luego tenemos la casilla solid. Esta casilla sirve para objetos que tengan eventos colisión con otros objetos, de forma que no puedan ser atravesados por esos objetos.

Ahora encontramos una ventana que se llama depth. Esto es la profundidad del objeto. Los objetos con mayor profundidad se dibujan primero quedando detrás de los que tienen menor profundidad. Esto es importante tenerlo en cuenta, para que no salgan cosas raras en el juego. Por lo tanto los objetos que se ven delante tienen un número mas chico de profundidad (puedes poner números negaivos). Si tienen la misma profundidad quedará delante el que haya sido creado después.

Ahora encontramos la casilla persistent, que hace que un objeto sea persistente, es decir, que cuando se cambie de room el objeto seguirá estando y además en el mismo sitio (en coordenadas). Por lo tanto en esa nueva habitación procura no poner ese objeto, porque sino habrá dos. Esto nos sirve para objetos que definan, por ejemplo, las armas que ha cogido nuestro personaje.

Por último tenemos dos cosas más. Parent, que hace que el objeto que pongamos aquí sea padre de éste, es decir, que los eventos y acciones del objeto padre (el que pongamos ahí) los tendrá también éste. Esto nos sirve para cuando queremos crear varios objetos con los mismos eventos y acciones pero que varien en algo. En ese caso crearemos un objeto con los eventos y acciones comunes y haremos que los otros sean hijos de éste. Luego sólo tenemos que ponerle a cada uno lo que tiene de particular. También tenemos la casilla Mask, que sirve para que en una colisión sólo se tenga en cuenta una parte del sprite y no entero, que nos sirve para dar una especie de realismo en 3d. Esta opción no la manejo todavía mucho, cuando aprenda a usarla lo pondré aquí.

Si pulsas en "Show information" puedes ver la información del objeto, dependiendo de cómo lo hayas configurado con lo visto hasta ahora. Luego ya las ventanas que hay a la derecha son los eventos y las acciones, que ya veremos más adelante.

Agregar rooms

Ahora vamos a crear las habitaciones donde ocurre el juego, el lugar donde se encuentran los objetos "vestidos" con los sprites. Primero vamos a abrir el game maker y vamos a agregar algunos objetos con sus sprites y al menos un fondo. Luego vamos a crear el room. Para agregar un room puedes dar botón derecho en la carpeta Rooms y darle a create room, o dar un clic al cuadrado blanco del menú de arriba. Entonces nos aparecerá una ventana como ésta:

Backgrounds (fondos)

Vámonos primero a la pestaña backgrounds, para ponerle fondo a nuestra habitación:

Lo primero que vemos es la casilla "Draw background color", que si no está marcada el fondo de la habitación será negro. Si está marcada el fondo será el color que pongamos dando clic en el recuadro gris de donde pone "color". Luego abajo podemos ver una lista de backgrounds que podemos definir, los backgrounds de más hacia abajo se superponen a los de arrriba, es decir, el background 2 quedaría encima del 1. Para activar un background seleccionadlo y marcad la casilla "Visible when room starts", entonces aparecerá en la lista en negrita. Vamos a activar el 1 y a ponerle una imagen. Una vez activo le damos al cuadradito azul y seleccionamos el background que queramos ponerle.

Luego abajo, si deseleccionamos la casilla "Tile Hor." el fondo no se repetirá horizontalmente, y podremos elegir donde pone X la posición en este eje. Al igual pasa con "Tile Vert." pero verticalmente. Stretch hace que el fondo se expanda y ocupe todo el room. "Hor. speed" le da una velocidad horizontal (cuanto mayor número pongamos mayor será la velocidad, y si ponemos un número negativo se moverá en sentido contrario), y "vert. speed" le da una velocidad vertical. Para ver los efectos conseguidos podemos darle arriba a la flecha verde para ver una previzualización del juego.

Objects (objetos)

Ahora vamos a ponerles los objetos a nuestro juego. Para ello le damos a la etiqueta objects. Entonces nos aparecerá en un recuadro el último objeto que creamos. Si le damos al cudradito azul podemos seleccionar otro objeto. Una vez seleccionado el objeto, si damos clic izquierdo en el room (en la parte cuadriculada) podemos agregarlo.

Para agregar objetos tambien podemos usar la tecla alt mientras dejamos pulsado el clic izquierdo para que no se alinee el objeto a la cuadrícula, shift para crear varios de una vez y control para mover uno que ya está puesto. Al igual, podemos dar clic derecho en un objeto para borrarlo, y pulsar shift mientras dejamos pulsado el clic derecho para borrar varios de una vez. Si damos clic derecho a un objeto mientras pulsamos ctrl nos aparecerán las siguientes opciones:

Delete para borrarlo, y delete all para borrar todos los que haya en el punto que diste el clic derecho.
Change position, para indicar su posición en píxeles.
Snap to grid, para alinear el objeto a la cuadrícula.
En el caso de que haya varios objetos de igual profundidad coincidiendo, "Send to back" nos lo pone al fondo, tapado por los demás, y "Bring to front" nos lo pone delante.
Locked bloquea el objeto, impidiendo ser borrado o ser movido. Para desbloquearlo se le da otra vez a locked.
Creation code es para utilizar el lenguaje de programación de este programa, que lo veremos en la lección 3.
Además, podeis ver una casilla llamada "Delete underlying", que si está marcada al poner un objeto encima de otro el de atrás se borra.

Settings

Si le damos a la etiqueta settings podremos ver lo siguiente:

Primero podremos elegir el nombre de la habitación (Name). "Caption for de room" es el título que aparece en el juego cuando estés en esa habitación si el juego no se está ejecutando en pantalla completa. Luego puedes definir el ancho (width) y alto (height) de la habitación. Speed es la velocidad de la habitación. Creation code, al igual que al agregar los objetos, lo veremos en la lección 3.

Tiles

Si le damos a la etiqueta tiles podremos seleccionar un fondo y ponerlo donde queramos como hicimos con los objetos, funcionando de igual forma:

Además, si el background cuando lo creamos lo definimos con la característica que os expliqué de "Use a tile set", podremos seleccionar sólo una parte del background y agregar esa parte.

Views

Si le damos a la etiqueta de views (vistas) podremos hacer que la pantalla quede dividida en varias partes, que cada parte esté en una parte de la habitación, y que una parte esté centrada en un objeto (por ejemplo el protagonista)

Para usar vistas primero marcamos "Enable the use of views" (habilitar el uso de vistas), y luego, al igual que con los backgrouns, marcamos "Visible when room starts" en las vistas que queramos activar, que se pondrán en negrita.

Ahora vamos a definir una vista. En la ventana "View in room" podemos seleccionar la posición X e Y de la vista (en el caso de que no vaya a seguir un personaje). También tenemos que definir el ancho (W) y el alto (H) de la vista dentro de la habitación. En la ventana "Port on screen" debes especificar como será la vista en la pantalla, en que posición de la pantalla estará (X e Y), y cuanto ocupará en ésta (H y W). Lógicamente si en "Port on screen" has puesto unas dimensiones menores que en "View in room" la vista se verá más chica que su tamaño real.

Para hacer que una vista siga a un personaje nos vamos a la ventana "Object following". Primero, dándole al cuadradito azul elegimos el objeto seguido. En el caso de que hayamos puestos varias entidades del mismo objeto en el room (se llaman instancias), sólo la instancia que se agregó primero será la seguida. Luego elijes la distancia que hay desde el objeto hasta los bordes, de forma que el objeto seguido nunca llegue a tocar los bordes (a no ser que llegue al final de la habitación). Esto lo elijes en Hbor (hasta el borde horizontalmente) y Vbor (hasta el borde vertivalmente). Hsp y Vsp son la velocidad con la que cambia la vista, y es aconsejable -1 para que cambie instantáneamente.

Para finalizar

Con todo esto ya podemos crear grandes interfaces para el juego, todo dependerá de las imágenes (las imágenes del ejemplo de esta página están sacadas de un juego de pokemon, imágenes que no se distribuyen en esta web por contener copyright). Podremos llegar a crear pantallas del juego como la siguiente.

Definición de eventos y acciones

Un juego no es sólo unos objetos con sprites puestos en un room con backgrounds, un juego se caracteriza por su interactividad con el usuario. Esta interactividad viene definida por dos características que se incluyen en los objetos: los eventos y las acciones. Los eventos es lo que ocurre, lo que pasa en el juego, que viene a ser lo que haga el jugador. Las acciones son lo que tiene que ocurrir cuando tenga lugar un evento.

Pues aunque no lo entendais muy bien, vamos a empezar con los eventos, y lo ireis viendo más claro:

Creación de eventos

Los eventos vienen definidos en los objetos. Para crear un evento primero tenemos que abrir el objeto en el que vaya a tener lugar ese evento, por lo que nos aparecerá una ventana como la siguiente:

Para crear un evento le damos al botón Add Event. También podemos borrar uno existente pulsando Delete o cambiarlo por otro pulsando Change. Una vez pulsemos Add Event nos aparecerá una ventana como la siguiente, en la que elegiremos el evento:

Evento Create

Aparece como una bombillita, y ocurre cuando el objeto es creado. Si el objeto aparece desde el principio en la partida el evento create ocurrirá al principio de la partida.

Evento destroy

Ocurre cuando el objeto es destruido o borrado del room.

Evento Alarm

Las alarmas son definidas en las acciones. En una acción podemos poner que salte una alarma en un tiempo dado, y cuando salta la alarma quiere decir que ocurre el evento alarm. Podemos definir hasta 11 alarmas.

Evento step

El evento step ocurre cada step del juego, es decir cada unidad de medida (que no es un segundo exactamente, sino menos). Este evento viene bien por ejemplo para que un objeto siga a otro, ya que puedes definir que cada step se mueva hacia el otro. "Begin step" se ejecutaría sólo al empezar el juego, en el primer paso de este objeto. El "Begin step" es el primer evento de todos, anterior incluso al create. El "End Step" se produce en el último step, justo al final de ese room.

Evento collision

Se produse cuando dos objetos (cuando sus sprites) entran en contacto. Debes decir con qué objeto vas a definir el evento colisión.

Evento keyboard

Este evento ocurre cuando tienes pulsada una tecla, pero no sólo el momento de pulsarla, sino todo el tiempo que la tengas pulsada. Aparte de una tecla concreta puedes definir "<No key>" para que el evento ocurra cuando no tengas pulsada ninguna tecla, o "<Any key>" para cuando tengas pulsada una tecla cualquiera.

Evento mouse

Son los eventos del ratón. Puedes definirlo de las siguientes formas:

"Left button" para cuando tengas pulsado el botón izquierdo, "Right button" para cuando tengas pulsado el botón derecho, y "Middle button" para cuando tengas pulsado el botón de la ruedecilla.
"No button" para cuando no tengas pulsado ningún botón.
"Left released", "Right released" y "Middle released" es para cuando pulses ese botón (pulsar, pero no mantener pulsado).
"Left pressed", "Right pressed" y "Middle pressed" es para cuando sueltes ese botón.
"Mouse enter" ocurre cuando el puntero del ratón toca el sprite, se pone encima, y "Mouse leave" cuando el ratón deja de tocar el sprite, se quita de encima.
"Mouse wheel up" es cuando mueves la rueda hacia arriba, "Mouse wheel down" cuando la mueves hacia abajo.
Todos los eventos anteriores de dar clic deben ser sobre el objeto. Si quieres que el evento sea en cualquier lugar de la pantalla debes definirlo en la parte de Global Mouse.
Además también puedes definir aquí para joystick.
Evento other

Aquí podemos encontrar unaserie de eventos especiales:

"Outside room" ocurre cuando el objeto se sale del room e "intersect boundary" para cuando el sprite del objeto toca el límite del room.
Puedes hacer lo mismo que lo anterior con las vistas en "Views".
"Game start" es para cuando el juego empieza, y "game end" para cuando termina. "Room start" es para cuando el room empieza, y "room end" para cuando acaba. Lo primero que ocurre en el juego es el evento "Begin step", luego el "creation", después el "Game start", y luego el "Room start".
Game maker te permite definir fácilmente con las acciones las vidas, la salud y los puntos. "No more lives" ocurre cuando se acaban las vidas y "No more health" cuando se le acaba la salud.
"Animation end" ocurre cuando, si las imágenes de un sprite son un gif animado, llega a la última imagen de la animación, justo antes de empezar de nuevo.
Como veremos en la lección 2, podemos definirle unos caminos o paths a los objetos para que los sigan constantemente o sólo una vez. El evento "End of path" ocurre cuando el objeto llega al final del path.
"Close button" es para cuando pulses el botón para cerrar el juego.
"User defined" son eventos generados por el usuario a través del lenguaje de programación GML, que lo veremos en la tercera lección. Puedes definir hasta 15.
Evento draw

Cuando en el juego aparece un objeto visible que tiene un sprite ese sprite es dibujado automáticamente. Pues bien, el evento draw es para realizar unas acciones en lugar de dibujar el sprite, lo que puede servir para realizar cambios en el sprite, aunque hay acciones específicas para este evento.

Evento key press

Es igual que el evento de keyboard pero sólo ocurre en el momento en que pulses la tecla.

Evento key release

Es igual que el evento keyboard pero sólo ocurre en el momento en que sueltes la tecla.

Creación de acciones

Las acciones aparecen justo al lado de los eventos. A cada evento le podemos agregar una o más acciones, pero siempre debe haber al menos una acción por evento. Por ejemplo, podemos ponerle al evento create de una bola una acción para que se mueva hacia la derecha, en este caso la bola empezará a moverse hacia la derecha al ser creada.

Las acciones, como ya he dicho, aparecen a la derecha de los eventos, ocupando toda la parte que se ve en la foto:

Como podeis ver hay varias pestañas de acciones, siendo muchas más que eventos. En este capítulo sólo vamos a ver las pestañas move, main1, main2 y score. Las demás las veremos más adelante.

Acciones de movimiento (move)

Tal y como nos aparece en la foto anterior podemos ver todas las acciones de movimiento. Vamos a ir viéndolas por orden, siguiendo el orden en el que aparecen:

"Move fixed": esta acción que aparece como muchas flechas rojas nos permite poner en movimiento un objeto en una dirección concreta y con una velocidad. Si la arrastramos hacia el recuadro de su izquierda para agregarla dentro del evento que tengamos seleccionado nos aparecerá el siguiente recuadro:

Lo primero que vemos son tres casillas arriba que nos aparecerán en muchas de las acciones. La primera, "Self", es para que la acción se aplique en el objeto al que le has puesto la acción, "Other" es para aplicarlo al otro objeto implicado en el evento, por ejemplo en una colisión, y "Object" es para especificar el objeto en el que se va a aplicar.
Luego vemos unas flechas, entre las que elegiremos la dirección en la que se va a mover (si elijes el punto de enmedio es para que no se mueva). Si marcamos varias direcciones se moverá en una de esas al azar. En "speed" ponemos la velocidad, que se mide en píxeles por step, ejemplo 7. Por último, marcamos relative si queremos que la velocidad se sume a la que ya llevaba (relative lo que hace es sumar el nuevo valor al que ya tenía).
"Move Free", que es igual que el anterior pero elijes la dirección exacta en grados (desde 0 a 360).
"Move towards", en el que elejimos el punto exacto con sus coordenadas x e y. En este caso, si marcamos relative no sólo se suma la velocidad, sino que también se suma las coordenadas x e y a las que se va a mover a la que tenía antes, así si ponemos 2 en la coordenada x y marcamos la casilla relative, en vez de moverse al punto 2 en el eje x se moverá 2 píxeles más a la derecha.
"Speed horizontal", que sirve para determinar la velocidad horizontal del objeto, negativa si quieres que vaya para la izquierda.
"Speed vertical", que es la velocidad vertical.
"Set gravity", para poner gravedad. Indicas la dirección y la velocidad.
"Reverse horizontal", para que horizontalmente vaya hacia el otro lado.
"Reverse vertical", para que verticalmente vaya hacia el otro lado.
"Set friction", para establecer una fuerza de rozamiento. Esta fuerza lo que hace es que cada step se le reste a la velocidad lo que indiques.
"Jump to position", que teletransporta el objeto a la posición que le indiques.
"Jump to start", que teletransporta el objeto al punto en el que fue creado.
"Jump to random", para mover el objeto a una posición al azar. En snap puedes elegir que se alinee a una cuadrícula, eligiendo ahí el tamaño horizontal y vertical de las celdas de esa cuadrícula.
"Alig to grid", para alinerlo a una cuadrícula.
"Wrap screen", que se utiliza en el evento de cuando se sale fuera del room, para que aparezca por el otro lado. Podemos elegir que lo haga sólo horizontalmente, sólo verticalmente, o en ambas direcciones.
"Move to contact", hace que se mueva el objeto en una dirección hasta que entre en contacto con otro objeto. Puedes definir la dirección, la máxima distancia hasta encontrar el objeto, y si sólo tendrá en cuenta los objetos sólidos (una característica que ya vimos) o todos.
"Bounce", que es para que rebote. Puedes elegir si debe ser un rebote preciso o no, y si debe ser sólo con objetos sólidos o con todos.
Las acciones de path las veremos más adelante, en la segunda lección, por lo que sigo por las siguientes:

"Step towards", que hace que el objeto de un paso hacia la posición que indiques. Cuando llegue a esa posición no se moverá más. Si lo pones en el evento step, cada step se moverá un paso.
"Step avoiding", que es lo mismo que el anterior pero el objeto se mueve evitando obstáculos, que pueden ser los objetos sólidos o todos.
Acciones de objetos (main1)

Si le damos click a main1 nos aparecerán las diguientes acciones, que veremos una a una por orden:

"Create instance", que crea el objeto que querramos en el punto que querramos.
"Create moving", igual que el anterior pero la crea en movimiento.
"Create random", que crea un objeto al azar entre un máximo de cuatro al azar.
"Change instance", que cambia el objeto en el que apliques la acción por otro que tú quieras. En perform events puedes elegir si quieres que se ejecuten los eventos destroy y create de los dos objetos.
"Destroy instance", para borrar el objeto.
"Destroy at position", para destruir todas las instancias que estén en la posición indicada.
"Change sprite", para cambiar el sprite por el que le indiques. Puedes elegir una suimagen si es una animación (0 para la primeram y -1 si no quieres elegir una en particular). También puedes elegir la velocidad de la animación, poniendo un número entre -1 y 1.
"Transform sprite", para cambiar las propiedades del sprite.
"Color sprite", para cambiar el sprite a un color determinado. En alpha elijes la transparencia con un valor entre 0 y 1, siendo el 0 totalmente transparente.
"Play sound", para hacer que suene un sonido o música. Puedes elegir para que se repita al acabar (loop true) o para que se pare al acabar (loop false).
"Stop sound", para parar un sonido
"Check sound" verifica si un sonido está reproduciéndose. Si está reproduciéndose la acción que venga después tendrá lugar, si no está reproduciéndose no ocurrirá la acción que pongas después. También puedes marcar la casilla "NOT" y verificará si el sonido NO está reproduciéndose.
"Previous room", para ir al room que creaste justo antes al que estés.
"Next room" para ir al siguiente.
"Restart room", para volver a empezar el room en el que estés.
"Different room" para ir al room que elijas.
"Check previous" verifica si existe una room anterior para realizar o no la acción siguiente.
"Check next" verifica si existe un room posterior.
Acciones de tiempo y juego (main2)

Si le damos click a main2 nos aparecerán las diguientes acciones, que veremos una a una también por orden:

"Set alarm", sirve para poner una alarma para que suene en un número de steps determinado, activando su correspondiente evento en ese tiempo.
"Sleep", para congelar la escena durante el tiempo que le digas en milisegundos.
Los dos siguientes, los de Time line, los veremos en el capítulo dos en su correspondiente capítulo.

"Display message", que muestra el mensaje que quieras al jugador.
"Show info", para mostrar la información del juego, que aprenderemos a editarla en la segunda lección.
"Show video", para mostrar un video. Pirmero debemos poner la dirección del video, por ejemplo nombre.avi, si se llama así, tiene ese formato y está junto al archivo del juego. Si el video está dentro de una carpeta llamada Video, y esta carpeta está junto al archivo del juego tendríemos que poner Video/nombre.avi. Esto es lo que se llama ruta del archivo, en este caso del video. También nos pregunta si queremos que se reproduzca en una ventana (Windowed) o en pantalla completa (Full screen), así como si quieres que empiece de nuevo al acabar (loop) o si no quieres (Don´t Loop).
"Restart Game", reinicia el juego (Ojo, el juego, no la room).
"End game", que cierra el juego.
"Save Game" guarda la partida con el nombre que quieras.
"Load Game" carga la partida que tenga el nombre que indiques.
"Replace sprite" cambia un sprite del juego por el archivo que le indiques, del que debes poner la ruta. Esto vale para no meter tantos archivos en el ejecutable del juego, permitiendo que cargue más rápido.
"Replace sound", cambia el archivo de un sonido por el que le indiques.
"Replace background" cambia un background por el archivo que le indiques.
Acciones de puntuación (score)

Si le damos click a main2 nos aparecerán las diguientes acciones, que veremos una a una también por orden:

"Set score", para establecer una puntuación. Si marcas relative lo que hace es sumar los puntos a los que había antes.
"Test score", para verificar si hay una puntuación y así realizar o no la siguiente acción.
"Draw score", que va en el evento Draw para dibujar en vez del spritela puntuación. En caption debemos escribir las palabras que aparecerán antes de los puntos.
"Show highscore" para mostrar la tabla de records de puntuación. Si al mostrarla la puntuación que tiene está en el ranking aparece para escribirla. Puedes elegir un backgrouns, si mostrar o no bordes, el color del nuevo record, el color de los que estaban antes y la fuente del texto.
"Clear highscore" para borrar la tabla de records.
"Set lives", para establecer las vidas.
"Tes lives", para verificar si hay unas vidas concretas.
"Draw lives" para dibujar las vidas en vez del sprite. Debe ir en el evento draw.
"Draw life images", como el anterior pero muestra las vidas con un sprite. Por ejemplo puede aparecer el personaje tantas veces como vidas haya.
"Set health", para establecer la salud (de 0 a 100).
"Test health" para verificar si hay una salud determinada.
"Draw health" para mostrar la salud en vez del sprite. Debes elegir las coordenadas del punto inferior izquierdo de la barra y la del superior derecho. También debes elegir el color del fondo de la barra, y el color de la barra de salud.
"Score caption", para que cuando no juegues en patalla completa te aparezca en la barra de arriba lo que elijas. Show sería mostrar, y don’t show no mostrar.

Explicación del juego

Lo primero siempre antes de empezar es tener las ideas del juego que queramos crear claras. En este caso vamos a hacer uno facilito para que veais en práctica los conocimientos adquiridos en los capítulos anteriores. el juego va a ser el típico de game maker, un juego en el que tengamos que dar clics a una bolita que se está moviendo, y por cada clic nos den puntos.

Creando los sprites y objetos

Pues bien, primero vamos a agregar los sprites. Vamos a agregar las bolitas, por ejemplo podemos agregar dos sprites de colores distintos, para tener dos bolas que vayan a velocidad distinta. En la carpeta del game maker (Game_Maker7/sprites/maze) podeis encontrar algunas. Luego también hay que añadir las paredes, tantos tipos como querais (tened en cuenta cuantas fases quereis crear y si vais a repetir o no). En la carpeta Game_Maker7/sprites/various podeis encontrar dos posibles imágenes que pueden funcionar como paredes: stone y square. En este caso a square no le ponemosla característica de "Transparent" porque ocupa toda la imagen, pero a stone sí.

Acto seguido creamos un objeto para cada sprite. Yo he creado cuatro sprites, dos para bolas y dos para paredes, por lo que tengo cuatro objetos:

Creando sonidos y backgrounds

Ahora agregamos los fondos de las fases, tantos como fases vayamos a crear, en mi caso he creado cinco. En la carpeta Game_Maker7/Backgrounds podreis encontrar algunos.

Luego agregamos una música de fondo para el juego, en la galería de sonidos encontrareis algunas. Luego también agregamos un sonido para cuando den click en una bola, que lo podeis encontrar en la carpeta Game_Maker7/Sounds, y otro sonido para cuando choquen dos bolas, como una explosión.

Creando los rooms

Ahora vamos a crear las fases. Vamos a por la primera (ten en cuenta que la fase que pongas arriba de las demás será con la que empieze el juego). La agregamos, le ponemos en settings por ejemplo un ancho de 400×400, le damos a backgrounds y ponemos el background que queramos, y por último agregamos los objetos. En esta primera fase sólo vamos a poner una bola de las lentas, y luego las paredes para que no escapen. Un ejemplo sería el siguiente:

Luego creamos el resto de fases, teniendo en cuenta que cuando dos bolas choquen se pierde, y que las paredes deben impedir a las bolas salirse. Unos ejemplos:

Además podemos ponerle a la última room un tamaño mayor.

Creando acciones y eventos

Para empezar vamos a ponerle a las paredes la característica solid, para que los objetos que tengan un evento colisión con ellas no las puedan atravesar. Luego nos vamos a la primera bola, a la lenta. Vamos añadirle un evento create, en el que le pondremos una acción "move fixed" para que se empieze a mover tan sólo empezar, y en la que marcaremos todas las flechas (menos el punto de enmedio) para que se mueva en una dirección al azar. Además le ponemos una velocidad de 5:

http://farm3.static.flickr.com/2143/2264775379_2fa2310d66_o.jpg

Luego le ponemos un evento "other/game start" en el que le pondremos de acción que suene la música de fondo con loop true para que se repita. Se lo ponemos a esta bola porque va a estar desde el principio. Luego añadimos un evento colisión con cada una de las paredes, y le ponemos un bounce en estos evento para que rebote:

Luego le añadimos acciones de colisión con la otra bola y consigo misma, en la que ponemos, primero que suene el sonido de explosión con loop false, luego que se muestre la tabla de records, y por último que se reinicie el juego:

Por último le ponemos un evento "mouse/left buttom" y le añadimos que suene el sonido de clic con loop false, que empieze a moverse en una dirección al azar con velocidad 5, y que aumente la puntuación en 1 punto (con relative marcado, acuérdate). Además, en este evento clic vamos a poner las condicionales de puntuación. Para empezar, vamos a hacer que si tiene una puntuación de 10 vaya a la habitación que digamos (la siguiente), y lo mismo con otras puntuaciones para otras fases:

Luego le ponemos los mismos eventos a la bola rápida, menos el de game start, y cambiando las velocidades de 5 a 7.

Así tendremos nuestro juego listo.veremos la creación del archivo exe que habrá que distribuir. Para probar vuestro juego podeis darle a la flecha verde que hay en el menú de arriba, pulsar F5, o darle a "Run/Run normally"

Crear el ejecutable del juego

Una vez tengamos hecho nuestro juego lo querremos distribuir a nuestros amigos y por internet, pero nosotros no podemos pasar el juego en formato gml, porque la persona necesitaría tener el game maker para abrirlo. Tendríamos que crear un archivo exe que al ejecutarlo se abra sólo el juego.

Para esto, una vez tengamos acabado el juego, le damos a "File/Create executable…" y elegimos donde guardarlo, entonces ya el programa nos creará sólo el ejecutable.

Inciso: acciones condicionales

Ante las dudas que surgen ante este tipo de acciones he decidido hacer este inciso al final de esta primera lección para aclararlas. Podemos distinguir tres tipos de acciones. Las acciones que "realizan una acción", que se distinguen porque su botón tienen de fondo un cuadrado gris; las acciones condicionales, que tienen de fondo un hexágono morado; y las acciones de dibujo, que tienen de fondo un cuadrado amarillo.

Las acciones condicionales verifican lo que les correspondan, si es verdadero realizan la acción que venga después, y si es falso no la realizan, pero hay que tener en cuenta que sólo realizan o no la siguiente acción. Por ejemplo, en el siguiente caso:

En esa imagen primero verifica si la puntuación es igual a 3, y si es igual da una vida. Luego independientemente de lo anterior da un punto de más. Pero, ¿y si queremos que si es verdad no realice sólo la acción que venga después?¿si queremos que realica varias? Para eso hay unos acciones que abren y cierran bloques, como los parentesis en una ecuación. Estas flechas las encontramos en las acciones de control. Así podemos formar lo siguiente:

En este caso realiza las dos acciones si al verificar sale verdadero, en vez de realizar sólo una. Además también quiero destacar que también podemos meter condicionales dentro de condicionales, por ejemplo así:

En este caso primero verifica que la puntuación sea de 3, si lo es verifica que las vidas sean 3, y si las son entonces realiza las acciones.

Bueno taringueros eso fue todo el tutorial de Game maker 8[/size]

Temas Relacionados