Como se definen paths en un juego
Imaginemos que nos interese que algún objeto, un enemigo por ejemplo, sigue un camino predefinido: puede ser que rodee un edificio, que haga un camino arriba o abajo o simplemente que su camino sea un círculo. Programar esa serie de movimientos mediante acciones puede llegar a ser difícil. Al ser una cosa bastante común en los videojuegos, Game Maker tiene un recurso propio para tratar con este tema. Tiene un editor propio de rutas y trayectoria.
Qué son las rutas o paths
¿Qué es un path en Game Maker? Las rutas o paths las podemos ver como un recurso más del árbol, que vemos a la izquierda. La idea es muy simple: dibujamos el camino en el editor que nos proporcionan y colocamos la acción o el código GML al objeto que queremos asociar a ese path, para que siga ese camino en particular. También podemos ajustar algunos parámetros, en el momento de asignar la ruta o más adelante, como puede ser la velocidad, incluso pararse en algún momento, cambiar de sentido del camino y algunas más que ya vimos en su momento con las acciones. También tiene su equivalencia con el lenguaje GML. Pero ahora vamos a ver como funciona el editor.
El editor de paths
Para crear una nueva ruta, podemos ir a la opción de menú Resources – Create Path, o desde el botón derecho en el árbol de recursos. Nos abrirá el editor de paths, que es la ventana que mostramos a continuación:
Vemos que la mayor parte del editor es para ver representar visualmente el path que vamos a dibujar, pero también tenemos una serie de información y botones que vamos a explicar a continuación.
Información del path
Al igual que hacemos con un sprite, objeto o sonido, hay que dar un nombre único a las rutas que creamos, así que lo habitual es llamarlo con el prefijo path_ + nombre. Cuando ya tenemos el nombre, podemos ir dibujando el path en el área derecha del editor. Haciendo click con el botón derecho del ratón, iremos dibujando puntos, viendo que tendremos una línea que los irá recorriendo.
El punto del cuadrado de color verde será el de comienzo de la ruta, los puntos azules son los puntos que continúan la ruta y el punto rojo es el punto seleccionado. La línea amarilla será la ruta que hará el objeto asignado. Conforme añadamos puntos, veremos que crece la lista de puntos, con sus coordenadas, a la izquierda.
Para poder seleccionar el que queramos y modificar su posición, solo hay que hacer click en la lista y luego moverlo arrastrando en la ventana dónde más nos interesa.
Barra de herramientas
En la parte superior tenemos una barra de herramientas con una serie de botones que vamos a detallar:
- Confirmar: Cierra la ventana del editor y guarda los cambios hechos. Como no pregunta si queremos guardar, sino que lo hace automáticamente, tenemos que tener cuidado con los cambios hechos.
- Deshacer: deshace solamente el último cambio.
- Acciones de puntos: Estos botones cambian todos los puntos del path, con acciones específicas. Estas acciones son:
- Borrar todo el path. Para empezar a crearlo de nuevo.
- Invertir camino. Vemos que el punto de origen va cambiando de todos los que hemos añadido.
- Desplazamiento. Mueve el path entero a una distancia horizontal o vertical de píxeles.
- Efecto espejo horizontal.
- Efecto espejo vertical.
- Rotar. Definimos un ángulo y cambia todos los puntos respecto el centro del path.
- Escalar. Mediante un valor de porcentaje podemos ampliar o reducir la ruta definida.
- Acciones de visibilidad: permite encuadrar la vista que tenemos con el path que estamos haciendo, moviéndola en algún lado o centrándola.
- Acciones del editor: aquí podemos cambiar el tamaño de la grid, para dibujar mejor nuestra ruta, o seleccionar una room concreta como plantilla para dibujar nuestro path. Si ya tenemos una room definida, poder dibujar la ruta con la room de fondo es super útil para ver como queda.
Control de los puntos de la ruta
Tenemos también una serie de botones para añadir y eliminar puntos, debajo de la lista de puntos que vamos añadiendo. Estas acciones siempre tienen referencia al punto que tenemos actualmente marcado. Por ejemplo, si le damos al botón Add, copiará el punto actual y lo añadirá al final. Si le damos al botón Insert, copiará el punto y lo añadirá a continuación (útil para hacer correcciones al path. El botón Delete eliminará el punto marcado.
En cada punto seleccionado, vemos que carga los valores de X/Y, por si queremos modificar sus valores a mano y así afinar más. Pero también tenemos el valor sp, que es la velocidad del path. Con un valor por defecto de 100, significa que la velocidad funcionará tal y como lo hayamos definido en la acción (100 es un porcentaje), es decir, si tenemos un valor de 4 píxeles por paso, siempre lo hará a esa velocidad. Si un punto le hemos puesto un sp de 50, el objeto irá a 4, pero conforme se acerque a ese punto irá reduciendo su velocidad hasta que llegue a la mitad, y luego lo aumentará hasta que llegue al próximo punto con sp 100. Lo haría igual si pusiéramos un valor más grande de 100, aumentando la velocidad. De esta manera podemos variar la velocidad sin que tengamos que programar nada.
Abajo a la izquierda de la ventana, tenemos otros parámetros para modificar la ruta que hemos trazado (la línea amarilla). Podemos elegir si la ruta será cerrada o no mediante el check Closed, uniendo el último punto con el primero. También podemos decidir si la ruta será una línea recta o una línea curva. Con una línea recta pasará por todos los puntos que hemos definido, pero con una línea curva creará un camino más suavizado que no tiene que pasar por algunos puntos. Podemos especificar si queremos que sea muy precisa la curva o más suave, en la casilla Precision, con valores que van entre el 1 y el 8. Aquí un ejemplo de como quedan diferentes opciones:
Barra de información
En la parte inferior de la ventana tenemos una barra de información, al igual que nos podemos encontrar en otros editores como el editor de rooms(enlace). Veremos las coordenadas X/Y del ratón, así como el área visible de la room. También vemos las coordenadas de la ruta comparadas con el área de la room. Así podemos ver que área ocupa comparado con el tamaño total de la habitación.
Asignar una ruta a un objeto
Hemos comentado al principio que existen acciones específicas para asignar una ruta a un objeto y definir qué hace con esa ruta, cuando empieza, si se para, si cambia de velocidad…
Aunque para la mayoría de casos es más que suficiente con estas acciones, con el lenguaje GML no solo podemos variar estos comportamientos, sino que también podemos variar los caminos definidos por código. Podremos crear un ruta desde cero, añadir puntos, cambiar puntos ya definidos, mover toda la ruta, etc… Todas las acciones del editor podemos hacerlas en mitad de nuestro juego, así que las opciones son infinitas.
Gracias por los manuales de GameMaker Studio. Me serán muy útiles en mi intento de hacer videojuegos. El problema actual es que no logro bajar el programa. Parece ser muy pesado y se cuelga antes de completarse. Existe alguna página que facilite el download? Si ne das la información mi agradecimiento será eterno..
Si te refieres a Game Maker 1.4, si es un poco rollo. Primero te instala normal, y luego empieza a descargar posibles actualizaciones y los módulos (en la versión gratuita el de Windows mínimo). Si no puedes, lo mejor es contactar con ellos, para que te puedan mirar que es exactamente lo que te da error.
Saludos david tengo una situación:
Cuando le agrego el path creado al objeto, el personaje le ejecuta bien. Sin embargo no me dispara la bala . A qué se deberá?
Depende de como tengas configurado tu objeto. Seguramente no ejecuta el evento que toca.
tengo un problemas conun objeto, creo el path pero necesito que al momento de llegar a los puntos de los psth, este objeto cambien de direccion o el sprite cambie para dar el efecto que sigue una guia ese objeto
Buenas Mario, te he respondido pr email 😉
me pasa lo mismo alguien me ayuda este es mi mail diego_2925593@hotmail.com
Buenas David,, quisiera poder hacer que al momento de generar un objeto, este pueda elegir entre varios path. Recién estoy empezando y solo puedo hacer que vaya por un solo path…
Por código podrías hacer un random de un número y luego depende del número que devuelva que inicie un Paty u otro. Por ejemplo:
num_path = irandom(3);
if (num_path == 0) {
path_start(path1, 4, path_action_reverse, 0);
}
else if (num_path == 1) {
path_start(path2, 4, path_action_reverse, 0);
}
else if (num_path == 2) {
path_start(path3, 4, path_action_reverse, 0);
}
Siendo path1, path2 y path3 los diferentes paths definidos.
Hola, sin programar(con los eventos de Gamemaker) como podría yo asignar una trayectoria a un objeto y que cuando vaya hacia una dirección el Sprite cambie en esa dirección?
Tienes que usar varibales del sistema, es lo más fácil. Con
direction
puedes saber a dónde se dirige (90 hacia arriba, 180 a la izquierda, etc) y luego puedes cambiar el sprite.