manual GM5-26b.p65
Transcripción
manual GM5-26b.p65
ulo t í p a C 11 ¡El Breakout! 11.1 Introducción Seguramente todos conocemos el Brekout, ese maravilloso juego creado en la década del 70 consistente en destruir ladrillos de una pared mediante el rebote de una pelota. Queremos recrear el Breakout primero en una forma básica y luego agrgándole distintas mejoras que lo hagan ¡aún más divertido! Como ya estamos creca de finalizar el curso, asumimos que tenemos un cierto nivel y, por lo tanto, las instrucciones serán más breves y el resultado mejor. En muchos casos nos limitaremos a decir qué es lo que debe hacer un determinado objeto y sólo ampliaremos la explicación si la acción o el evento son nuevos. 11.2 Juego Básico Lo primero que debe hacer nuestro juego es cumplir con las siguientes reglas: El jugador controla una paleta que se desplaza de izquierda a derecha mediante las teclas del cursor. Una pelota rebota en forma automática en las paredes, la paleta y los ladrillos que se encuentran en la parte superior de la pantalla. Si la pelota pega en un ladrillo, éste desaparece y el jugador gana puntos. En caso de que la pelota caiga por la parte inferior de la pantalla, el jugador pierde una de las tres vidas iniciales y se le restan puntos. Si rompe todos los ladrillos el programa muestra la tabla de puntajes más altos y el juego termina. Por supuesto que este es sólo el comienzo, en la sección Juego Avanzado le iremos incorporando las mejoras de las que hablábamos en la introducción. 11.3 Fondo, Sonidos y Sprites Como hemos dicho, asumimos un conocimiento real del manejo del GM, así que la elección del fondo queda librada al gusto de cada uno. Utilizaremos un sonido para el choque de la pelota contra la paleta, otro para cuando golpea contra las paredes; otro sonido para el choque de la pelota contra los ladrillos; uno para el caso en que la pelota sale del nivel y otro para cuando rompemos todos los ladrillos. Los archivos a usar pueden verse en la tabla 11-1: Tabla 11-1 Sonidos del Breakout Archivo Ubicación Nombre sonRebote \gameMaker\Juegos\Breakout Rebote sonPaleta \gameMaker\Juegos\Breakout Paleta sonMuro \gameMaker\Juegos\Breakout FueraLadrillo sonAplauso \gameMaker\Juegos\Breakout Aplauso sonMal \gameMaker\Juegos\Breakout Perder Los gráficos de nuestro breakout van a ser muy sencillos en un principio; el ladrillo (del que pondremos luego múltiples instancias), la paleta, la pelota y la pared. Los archivos aparecen en la tabla 11-2: Tabla 11-2 Sprites del Breakout básico Archivo Ubicación Nombre Bola \gameMaker\Juegos\Breakout spBola Paleta \gameMaker\Juegos\Breakout spPaleta ParedH \gameMaker\Juegos\Breakout spParedH LadrilloAzul \gameMaker\Juegos\Breakout spLadrilloA 11.4 Los objetos, sus eventos y las acciones Definiremos los siguientes objetos: • • • • • Bola o pelota Ladrillo Paleta Pared Control (Sin Sprite) No es necesario, a esta altura del manual, aclarar que sprite corresponde a cada objeto, ¿verdad? En cuanto a los eventos, el fuerte estará concentrado en el objeto Bola; el objeto Pared no tiene -en una primera instancia- eventos definidos aunque sí hay que activar su propiedad Sólido. El objeto Paleta tiene solamente definidos el evento Keyboard para la tecla cursor izquierdo y cursor derecho. Queremos que, cuando el usuario presiona la tecla flecha izquierda el objeto salte a una posición relativa de -4 en la coordenada x (Jump to a given position). Algo similar ocurrirá cuando presione la tecla flecha derecha, con la diferencia de que el salto relativo derá de 4 (positivo) en la coordenada x. ¿Qué queremos que haga la bola? Nos conviene separar el análisis de acuerdo a los diferentes eventos. Al ser creada queremos que se mueva hacia abajo, en diagonal, con velocidad 4 no relativa. Cuando choca con el objeto ladrillo queremos que haga lo siguiente: • tocar el sonido FueraLadrillo • Si era el último ladrillo, entonces termino el juego mostrando la lista de mejores puntajes • Invertir la dirección vertical del movimiento • Cambiar la dirección del movimiento de la bola y su velocidad para que se mueva un poco al azar -sino se hace muy monótono- y cada vez un poquito más rápida. Esta es la única acción que explicaremos con más detalle. • Sumarle 10 puntos al puntaje • Destruir la instancia del ladrillo (ojo que cuando elijamos la acción Destroy the instance, en vez de activar la opción Self -que destruiría al objeto Bola- tenemos que elegir la opción Other -otro- para que lo que desaparezca sea esa instancia del objeto ladrillo) Al finalizar de agregar las acciones, este evento, algo recargado debido a que es el núcleo del juego, tiene que quedar como se ve en la figura 11-1 Figura 11-1 Acciones del evento Colisión con Ladrillo En cuanto a la acción de cambiar la dirección y la velocidad de movimiento de la bola, se hace con el ícono de moviemiento que es azul y no rojo, ubicado en la solapa”Move”. Allí ponemos que la dirección cambie a random(180) y la velocidad a 0.2 con la casilla Relative marcada para que cada vez que la bola pegue en un ladrillo haya un cambio de dirección y de velocidad (ver figura 11-2) Figura 11-2 Propiedades de la dirección de la Bola Es muy importante que te asegures que la casilla Relative está activada, pues sino verás que la bola tiene un movimiento errático y que al pegar en el primer ladrillo se frena. La colisión de la bola con la pared es muy sencilla: bastará con que la pelota rebote contra un objeto sólido y toque el sonido Rebote, tal como se ve en la figura 11-3: Figura 11-3 Colisión BolaPared Puedes ahorrar bastante trabajo si, como en los eventos Colisión Bola -Pared y Colisión Bola- Paleta, las acciones son similares. Bastará con que presiones el botón derecho del ratón sobre la lista de acciones y allí elijas la opción Copy All (copiar todo). Luego seleccionas el evento donde quieres pegar estas acciones y, haciendo click nuevamente con el botón derecho, eliges Paste (Pegar). Una vez pegadas las acciones, borras las que no necesitas, agregas las que hacen falta y modificas alguna (como en el caso de arriba en donde puedes cambiar el sonido Rebote por el sonido Paleta. En el caso de la colisión de la bola con la paleta, tenemos que hacer prácticamente lo mismo, pero también vamos a agregar la acción de cambiar la dirección y la velocidad de movimiento, como hicimos en el evento choque con el ladrillo (figura 11-4). Figura 11-4 Colisión Bola Paleta Nos queda definir las acciones para el caso que la bola se escape del nivel. Si esto sucede tenemos que restar una vida y preguntar si queda todavía alguna vida ya que si no nos queda ninguna hemos perdido y el juego debe terminar (Figura 11-5) Figura 11-5 Evento Outside Room de la bola Acciones a ejecutar si las vidas llegan a 0 Acciones a ejecutar si quedan vidas Las acciones relacionadas con el puntaje o las vidas se ubican en la carpeta Score (puntaje); podemos encontrar allí tanto la opción para restarle o sumarle una cantidad a las vidas como el condicional para saber si las vidas llegaron a un cierto valor. El GM nos brinda una acción directa para agregar o restar vidas, que es la que usaremos en este caso. Lo que tenemos que hacer en el caso de que la cantidad de vidas llegue a 0 es tocar el sonido Perder, luego mostrar la lista de mejores jugadores y por último finalizar el juego. Como son tres acciones que se deben ejecutar si se cumple el condicional de las vidas tenemos que usar un bloque y luego un Else para, con otro bloque, definir las acciones que se deben efectuar si todavía tenemos alguna vida. Si perdemos una vida, pero nos queda por lo menos otra tenemos que mostrar - en forma de dibujo- la cantidad de vidas restantes, esperar 1 segundo y luego volver la paleta y la bola a sus posiciones iniciales. El objeto Control fue puesto solamente para darle el valor inicial a la cantidad de vidas. En este caso no ponemos la opción Relative ya que queremos que, al ser creado este objeto, la cantidad total de vidas sea de 3. 11.5 Definiendo el room Como fondo del nivel usamos el background que creamos al principio del capítulo. Cambiamos el Snap X a 32 y dejamos el de Y en 16 (para poder diseñar más fácilmente el nivel). Rodeamos el nivel con el objeto Pared y ponemos alguno más por el medio para que quede más divertido (ver figura 11-6) Figura 11-6 Diseño del room Hemos terminado el juego básico; es momento de probarlo y hacer las correciones necesarias (Esto SIEMPRE ocurre; nunca un programa funciona bien de primera). ¡A divertirse! 11.6 Variaciones Una vez finalizado el juego básico podemos empezar a agregarle cambios que lo hagan más complejo, largo, divertido o ¡todo a la vez! Este apartado no pretende ser una descripción paso a paso de estos cambios, sino solamente un listado de posibilidades que tendremos que trabajar directamente con el programa. La forma ideal de realizar estos cambios es nunca tocar el programa que ya funciona; lo cargamos, le hacemos algún cambio - no conviene hacer muchos juntos pues si algo falla no sabremos qué fue- lo grabamos con otro nombre y lo probamos. Es muy importante mecanizar este aspecto del refinado del juego ya que sino podremos perder lo que nos había quedado bien. Mejoras posibles: Agregar otro nivel, de forma que cuando se rompa el último ladrillo en vez de terminarse el juego nos lleve al siguiente nivel. Para realizar este nivel nos convendría definir un nuevo tipo de ladrillo (rojo, por ejemplo) y así simplificar el trabajo; basta con agregar una colisión bola- ladrillo rojo. Mostrar mediante el objeto Control, la cantidad de vidas restantes y puntos obtenidos en la zona a la derecha de la pantalla. Deberemos usar el evento Draw de dicho objeto y las acciones correspondientes (ver solapa Score) Definir dos tipos de objetos nuevos: ladrillo amarillo y Premio. La idea es poner unos pocos ladrillos amarillos mezclados con los azules y, cuando la bola les pegue, se destruyan. Al mismo tiempo se crea el objeto premio que comienza a caer. Si la paleta colisiona con el premio se crea una nueva bola, lo que nos facilitará la tarea de romper los ladrillos. Agregar un nuevo tipo de objeto, con un sprite animado que gire, de forma que la bola, al pegar en él, tome un rumbo difícil de predecir. Este sprite está disponible en el archivo Voltage; ¡no olvidarse de incluirlo en el room! Se podría poner otro tipo de ladrillo, como en el punto 3, para que al pegar la bola en él se origine otro premio. Si la paleta recoge este nuevo premio se hablita que pueda disparar por un cierto tiempo (usando una alarma). Podemos seguir agregando variantes, ya que este es un juego que permite usar la imaginación en una forma muy libre. Recuerden grabar con nombres diferentes para no perder lo que ya funciona. ¡A pensar y a experimentar! ulo t í p a C 12 Proyecto Final 12.1 Introducción Vamos a encarar un proyecto final del que solo daremos unas directivas generales; corresponderá a cada uno el realizarlo, adornarlo y terminarlo. El juego que desarrollaremos será del tipo de laberintos, es decir que intentaremos hacer que nuestro personaje encuentre el camino correcto entre varios que no llevan a ningún lado, esquivando enemigos peligrosos y recogiendo tesoros maravillosos. La idea es que existan varios niveles, cada uno con su diseño especial y, eventualmente, con nuevos premios y monstruos. Haremos nuestro proyecto final de una resolución de 800 x 600, para que el laberinto a recorrer sea un poco más extenso. Comenzaremos con un nivel sólo para que sea más sencillo y, si trabajamos con ganas, le iremos agregando más a medida que vayamos completando el juego. La totalidad de los gráficos, los sonidos y los fondos quedan a elección de los creadores; en esta guía sólo marcaremos las acciones más complejas y su lógica. Al igual que en el capítulo 11 deberemos grabar con un nombre distinto a cada cambio importante que hayamos hecho con el fin de no perder lo que ya funciona. 12.2 Descripción Nuestro personaje se moverá controlado por el jugador mediante las cuatro teclas del cursor; su objetivo será conseguir las frutas del bosque (o cualquier otro tipo de objetivo que nos guste: diamantes, monedas, corazones, etc.) y lograr que se abra la salida hacia otro nivel. Si chocamos con alguno de los enemigos (arañas, piratas, etc.) nuestro personaje perderá una vida y si esta es la última, el juego termina y se muestra la tabla de puntajes más altos. Al completar el último nivel se tocará una música de triunfo, se preguntará si se desea volver a jugar y, si es así, se recomenzará el juego. 12.3 Objetos básicos Como hemos dicho en la página anterior, la elección del fondo, los sonidos y los sprites queda librada a nuestro propio gusto; sin embargo tienen que existir un conjunto de objetos básicos para que podamos armar el juego. Estos objetos son: • el personaje • la “pared” del laberinto (entre comillas porque puede ser un arbusto, un haz de luz u otro tipo de gráfico dependiendo de las características del juego) • la salida Por supuesto que luego tendremos que agregar diferentes objetos para que el juego resulte entretenido y variado. Siempre conviene comenzar de una forma sencilla, atacando los problemas fundamentales y, cuando estos están resueltos, ampliar el juego agregando capa sobre capa de funcionalidad. De los tres objetos del juego básico el único que tiene eventos y acciones definidas es el personaje; el movimiento se realizará mientras se mantenga apretada la tecla correspondiente (evento KeyPress). Para que se detenga al soltar cualquiera de las teclas del cursor elegimos el evento Keyboard en su opción <No key>. La única acción que programamos en este caso es Mover con velocidad 0 con la dirección central marcada. Figura 12-1 Evento no apretar tecla Exactamente esta misma acción tenemos que programar en el evento colisión Personaje - Pared del laberinto, con el fin de que se detenga al llegar a ella. Para finalizar tenemos que programar la colisión del personaje con la salida, a la que dispondremos en un lugar estratégico. Al producirse el choque tocamos un sonido (una puerta que se abre, campanitas) y, si existe otro nivel, que pase a él; si es el último nivel se muestra la tabla de puntajes y se termina el juego. Figura 12-2 Colisión Personaje Salida 12.4 Mejorando el juego Cuando funcione correctamente el juego básico podemos comenzar a incorporar elementos para embellecerlo; un primer paso es definir un “enemigo” que se mueva de una forma lineal, ya sea horizontal o vertical. Esto es muy fácil; alcanza con incluirlo en el room y, en su evento Create, ponerle como acción que se mueva horizontalmente con una cierta velocidad. Por supuesto que si queremos que uno(s) se mueva(n) en forma horizontal y otro(s) en forma vertical, tendremos que definir dos objetos diferentes. En la colisión perdemos una vida y se reinicia el nivel; si no tenemos más vidas el juego termina. Figura 12-3 Probando un nivel del laberinto Otra variación: hacer que la puerta no aparezca hasta que se hayan juntado todos los premios (frutas, monedas) que aparecenen el room. En la colisión personaje - premio destruiremos al premio, sumaremos puntos y, si la cantidad de instancias es 0, creamos el objeto salida en el lugar previsto. Una solución aún mejor es incorporar otro objeto para que forme parte de la pared de forma que cuando hayamos recogido todos los premios, cambiamos este objeto “pared especial” por una instancia de la salida. Esto nos da más flexibilidad a la hora de diseñar el laberinto, pues podemos poner este nuevo bloque de pared en cualquier lugar de la pantalla. El puntaje quedaría mucho mejor mostrarlo en la parte inferior de la pantalla, lo mismo que la cantidad de vidas que nos restan (en la forma de imágenes de nuestro personaje). Tendremos que considerar el rediseño de los niveles para dejar un espacio libre. Sería muy interesante poder recoger otro tipo de objeto que nos dé algún poder especial, ya sea disparar o atravesar las paredes o, quizás, poner una bomba que destruya a nuestros enemigos. Hay miles de variaciones posibles más, y de ajustes que harán nuestro juego más jugable. Esa es la gracia de programar, ¡ el límite es nuestra imaginación ! (y nuestros conocimientos, por supuesto). Pueden crear el texto de instrucción y ayuda y, si es posible, una pantalla de introducción. No, no nos hemos olvidado de enseñárselos; simplemente creeemos que una gran parte del aprendizaje de un lenguaje de programación es tocar y experimentar. Así que, ¡felices juegos! dice n é p A A Acciones del Game Maker Solapa “Move” (Rojo) Comenzar a mov erse en una dirección (Azul) Poner la dirección y v elocidad del mov imient o Marcar la v elocidad horizont al Marcar la v elocidad v ert ical Mov erse hacia un punt o Adjudicar una t ray ect oria a la inst ancia Darle un v alor a la grav edad Darle un v alor a la fricción Salt ar a una posición dada Salt ar a la posición inicial Salt ar a una posición al azar Solapa “Move” (continuación) Forzar a la grilla: la inst ancia quede perfect ament e alineada con la grilla. I nv ert ir la dirección horizont al I nv ert ir la dirección v ert ical Mov er a la posición de cont act o Rebot ar cont ra los objet os (sólidos o no) Solapa “Main1” Crear una inst ancia de un objet o Cambiar una inst ancia por ot ra Dest ruir una inst ancia Dest ruir las inst ancias en una posición Cambiar el sprit e T ocar un sonido Det ener un sonido Si un sonido est á ejecut ándose (Condicional) I r al siguient e niv el I r al niv el ant erior Recomenzar el niv el I r a un niv el diferent e Si el niv el siguient e ex ist e (Condicional) Si el niv el ant erior ex ist e (Condicional) Solapa “Main2” Prender una alarma Pausa Most rar un mensaje Most rar la información del juego Recomenzar el juego Finalizar el juego Grabar el juego Cargar o abrir un juego Solapa “Control” Si una posición est á libre de colisiones (Condicional) Si hay una colisión en la posición (Condicional) Si hay un objet o en una posición (Condicional) Si el número de inst ancias es un ciert o v alor (Condicional) Si el dado cae en uno (Condicional) Si el usuario cont est a SI a una pregunt a (Condicional) Si una ex presión es v erdadera (Condicional) Si un bot ón del rat ón est á apret ado (Condicional) Si la inst ancia est á alineada con la grilla (Condicional) Sino (Aquí v ienen las acciones sino se cumple la condición) Comienzo de un bloque de acciones Fin de un bloque de acciones Repet ir la siguient e acción o bloque de acciones Salir del ev ent o act ual Solapa “Draw” Dibujar la imagen de un sprit e Dibujar una imagen de fondo Dibujar un rect ángulo Dibujar una elipse Dibujar una línea Dibujar un t ex t o en la pant alla Fijar los colores Seleccionar un t ipo, t amaño y color de let ra Cambiar de modo de pant alla (v ent ana/ pant alla complet a) Solapa “Score” Darle un v alor al punt aje Si el punt aje t iene un v alor (Condicional) Dibujar el v alor del punt aje Limpiar la t abla de récords Most rar la t abla de récords Solapa “Score” (Continuación) Darle un v alor al número de v idas Si la cant idad de v idas t iene un v alor (Condicional) Dibujar la cant idad de v idas Dibujar la cant idad de v idas como imágenes Darle un v alor a la salud Si la salud t iene un v alor (Condicional) Dibujar la barra de salud Darle un v alor al t ít ulo de la v ent ana del juego Solapa “Code” Ejecut ar un t rozo de código Darle un v alor a una v ariable Si una v ariable t iene un v alor (Condicional) Dibujar el v alor de una v ariable Coment ario dic n é p A eB Variables del sistema x la coordenada x de una inst ancia y la coordenada y de una inst ancia hspeed la v elocidad horizont al (en pix els por paso) v speed la v elocidad v ert ical (en pix els por paso) direct ion la dirección act ual del mov imient o en grados speed la v elocidad en esa dirección score el v alor act ual del punt aje liv es la cant idad act ual de v idas healt h el v alor act ual de salud mouse_x la posición x del rat ón mouse_y la posición y del rat ón INDICE Capítulo 1 : Introducción ......................................... 3 1.1 ¿Para qué sirve crear un videojuego? ................................................................ 3 1.2 ¿Porqué usar el Game Maker? .......................................................................... 3 1.3 ¿Qué es un videojuego? ..................................................................................... 4 1.4 ¿Qué tipo de juegos podremos crear? ............................................................... 4 1.5 El modelo de Programación ............................................................................... 4 1.6 Caso de estudio: el Tetris ................................................................................... 6 1.7 Ejercicio .............................................................................................................. 7 Capítulo 2 :Elementos de un Juego ..........................9 2.1 Descripción ......................................................................................................... 9 2.2 Sprites .............................................................................................................. 10 2.3 Objetos ............................................................................................................. 1 1 2.4 Fondos ............................................................................................................. 12 2.5 Sonidos ............................................................................................................. 12 2.6 Niveles (Rooms) .............................................................................................. 13 2.7 Ejercicio ............................................................................................................ 14 Capítulo 3 : El Game Maker ................................... 17 3.1 La Interfaz del Game Maker ........................................................................... 17 3.2 El menú de opciones (primer acercamiento) ................................................... 18 3.3 El menú File ..................................................................................................... 18 3.4 Íconos de acceso rápido ................................................................................... 20 3.5 El explorador de recursos ................................................................................ 21 3.6 Agregar un recurso .......................................................................................... 21 3.7 Modificar un recurso ........................................................................................ 22 3.8 Eliminación de un recurso ............................................................................... 23 3.9 Ejercicio ............................................................................................................ 24 Capítulo 4 : Pasos para crear un juego ................... 25 4.1 Introducción ..................................................................................................... 25 4.2 El orden de creación ........................................................................................ 25 4.3 El fondo ............................................................................................................ 26 4.4 Los sonidos ...................................................................................................... 29 4.5 Sprites .............................................................................................................. 30 4.6 Objetos ............................................................................................................. 31 4.7 Niveles ............................................................................................................. 34 4.8 Ejercicio ............................................................................................................ 37 Capítulo 5 : El primer juego completo ..................... 39 5.1 Descripción ....................................................................................................... 39 5.2 Definición de los elementos básicos ................................................................. 39 5.3 Eventos y acciones .......................................................................................... 42 5.4 Definiendo el Nivel (Room) .............................................................................. 49 5.5 Finalizando el juego .......................................................................................... 5 1 5.6 Variaciones ...................................................................................................... 5 1 Capítulo 6 : El tiempo y su manejo ......................... 53 6.1 La necesidad de medir el tiempo ..................................................................... 53 6.2 Las acciones relacionadas con el tiempo .......................................................... 54 6.3 Otro Juego: Missile Command ........................................................................ 54 6.3 Eventos y acciones del Missile Command ....................................................... 56 6.4 Creando el nivel (room) ................................................................................... 62 6.5 Variaciones ...................................................................................................... 62 Capítulo 7 : Variables ............................................ 63 7.1 Definición .......................................................................................................... 63 7.2 Particularidades de las variables en el GM ..................................................... 64 7.3 Juego ejemplo: una carrera ............................................................................. 65 7.4 Variaciones ....................................................................................................... 74 Capítulo 8 : Aplicando lo aprendido ....................... 75 8.1 Objetivo del juego: ........................................................................................... 75 8.2 Elementos ........................................................................................................ 75 8.3 Variaciones ...................................................................................................... 85 Capítulo 9 : Repitiendo órdenes ............................. 87 9.1 La orden Repetir .............................................................................................. 87 9.2 Variaciones ...................................................................................................... 91 Capítulo 10 : Condicionales .................................... 93 10.1 Mejorando la programación ........................................................................... 93 10.2 Else ................................................................................................................ 97 10.3 Variaciones .................................................................................................... 98 Capítulo 11 : ¡El Breakout! ......................................99 11.1 Introducción ................................................................................................... 99 11.2 Juego Básico ................................................................................................... 99 11.3 Fondo, Sonidos y Sprites .............................................................................. 100 11.4 Los objetos, sus eventos y las acciones ........................................................ 101 11.5 Definiendo el room ....................................................................................... 106 11.6 Variaciones ................................................................................................... 107 Capítulo 12 : Proyecto Final ................................. 109 12.1 Introducción ................................................................................................. 109 12.2 Descripción ................................................................................................... 110 12.3 Objetos básicos ............................................................................................ 110 12.4 Mejorando el juego ....................................................................................... 112 Apéndice A : Acciones del GM ............................... 115 Solapa “Move” ..................................................................................................... 115 Solapa “Main1” .................................................................................................... 116 Solapa “Main2” ..................................................................................................... 117 Solapa “Control” .................................................................................................. 118 Solapa “Draw” ...................................................................................................... 119 Solapa “Score” ..................................................................................................... 119 Solapa “Score” (Continuación) ............................................................................. 120 Solapa “Code” ...................................................................................................... 120 Apéndice B : Variables del sistema ....................... 121