Cómo hacer, y nombrar, ranuras de guardado del juego

2

Tagged

Stats

4,016 visits, 4,572 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 24 Mar, 2014. Last updated 25 Feb, 2019

En este tutorial veremos un método para crear la opción "Cargar Juego" y una pantalla dentro del juego desde la que guardar/cargar la partida en más de una ranura, usando WebStorage (almacenamiento web) y un array.

Seguramente haya mejores formas de hacerlo, pero esta funciona perfectamente.

Comencemos:

Primero, los objetos que necesitaremos:

1. Al menos un botón para guardar.

2. Al menos un botón para cargar.

3. Al menos un botón para salir de la pantalla "Guardar juego".

4. Al menos una caja de texto en la que el jugador pueda escribir el nombre de la partida guardada.

5. Un array, declarado como objeto global, para almacenar los nombres de las ranuras y las variables locales.

6. Una imagen para "ocultar" el escenario (Yo uso una imagen completamente negra de 1024x768, pero cualquiera servirá).

7. Dos capas parallax 0,0.

Yo uso una hoja de eventos "global" (event sheet) donde colocar el código que uso en cada escenario, pero puedes hacerlo como quieras.

Necesitaremos que cuando se pulse una tecla, la pantalla cambie a otra, con todos los objetos que hemos listado previamente. Como ejemplo, usaré una imagen:

"P" se refiere al jugador y "E" a los enemigos.

Lo que hemos hecho es detener el movimiento de los objetos para evitar que el jugador muera mientras guarda el juego.

A continuación, crearemos una imagen en la capa (layer) "HUD2" (Una capa "parallax 0,0" que usaremos para "ocultar" la pantalla). El comando "set opacity to 80" está ahí para verificar que todo funciona correctamente; no es necesario.

Ahora crearemos los objetos en la capa (layer) HUD y las posiciones que queramos, y pondremos "exit button" como enabled. Creo que la imagen se explica por sí sola.

Ahora otra:

Lo que estamos haciendo aquí es usar una variable local como un interruptor para "apagar" la pantalla de guardado y destruir todos los objetos.

La pantalla, como se establece más arriba, aparece como se muestra en la imagen:

No olvides escribir un texto por defecto en la caja de texto (textbox), en el caso de que la posición en el array esté vacía (por defecto al inicio)

Usa variables globales como "interruptores", exactamente como el tutorial para crear marcadores nos enseña, Y NO OLVIDES GUARDARLOS, al menos los botones para cargar:

Además de establecer las condiciones por las que se activarán los botones y qué texto mostrarán:

Los comandos en la foto de arriba son para prevenir que se cargue una ranura de guardado vacía (por defecto y texto en blanco).

A continuación, definiremos las acciones para guardar el juego:

Como vemos en esta imagen, usamos para "button 1" y "Textbox 1" la posición (0,1) en ArraySave (etcétera); allí es donde guardamos el nombre de la partida guardada. Es necesario usar un array exclusivamente para este propósito. Cuando creemos la pantalla de "Cargar juego" para el menú principal, veremos por qué.

Ten en cuenta que al guardar, a continuación del nombre del fichero en el disco, está la cadena "& ArraySave.At(0,1)", esto es para identificar qué "ranura de guardado" es, añadiendo el nombre del juego guardado a cada archivo de guardado.

Una vez que el "nombre de guardado" se ha añadido al array, procederemos a copiar todas las variables locales que estemos usando, dentro del array (Yo uso otro para hacer esto, mi "array general" pero tú puedes usar diferentes posiciones para cada ranura de guardado en el mismo array).

Lo siguiente que haremos a continuación, bastante importante, es colocar en el array las coordenadas de tu jugador, guardar los arrays y activar el "interruptor". Aquí puedes mostrar texto informando al jugador de que el juego se ha guardado, por ejemplo. Solo necesitarás un objeto texto (text objetc) y el comando "set text" para hacerlo, en lugar de activar el interruptor.

Date cuenta de que si no pulsas "guardar", cualquier texto que hayas escrito en la caja de texto (textbox) desaparecerá, así que salir y volver a entrar a la pantalla de guardado es más o menos como un "deshacer cambios".

Ahora, para cargar:

Primero cargaremos el array y recuperaremos las variables locales que colocamos anteriormente. A continuación, cargaremos las variables globales desde webstorage.

No olvides guardar en qué escenario está el jugador. Yo uso una variable global y, al comenzar, le asigno el número del escenario. En la imagen de arriba falta el comando que necesitaremos para esto: System--->Go to layout...

Cuando el juego carga la capa "guardada", establecemos la posición del jugador, extraida del array, y activamos el interruptor para volver a jugar.

SECCIÓN 2

Crear una capa para cargar al empezar:

De nuevo, una imagen como ejemplo:

Lo importante aquí es establecer el tamaño de los arrays y cargar SOLO el array de guardado, donde guardamos los nombres de las ranuras de guardado.

En esta pantalla he puesto un botón para despejar, que funciona como se ve aquí:

Componiendo esta capa (layout) como hicimos antes como la pantalla dentro del juego de "guardar/cargar", pero sin el botón de guardado, podemos cargar el juego como hicimos antes. La pantalla, en mi caso, quedaría como sigue:

Al comienzo de esta capa declaro la caja de texto (textbox) como solo lectura (readonly) At start of this layout I set textbox to readonly, pues lo que haremos será cargar unicamente, y en mi hoja de eventos global (global event sheet) los volveré a poner como de lectura-escritura (read-write).

  • 0 Comments

Want to leave a comment? Login or Register an account!