Game Maker Studio

Tutorial: Crear archivo de guardado para el juego

Salvo que uno pretenda hacer un juego simple en el que no haya avances que se puedan guardar, o donde el jugador no pueda customizar ningún aspecto del juego (idioma, volumen del sonido, etc.), crear un archivo donde se guarde la configuración del juego debería de ser una tarea básica a realizar cuando desarrollamos un juego en Game Maker.

En este pequeño tutorial se pretende explicar cómo se puede hacer que un juego de ejemplo, guarde en un archivo de texto plano la máxima puntuación justo antes de finalizar el juego, y que la carge justo al arrancar. Vamos por partes:

  1. Primeramente, vamos a decidir cuál será el nombre del archivo donde se guardará la información. Normalmente, se usa la extensión .INI, pero nosotros podemos usar la que nos de la gana (.SAV, .XXX, .DAT…). Decidimos llamarlo, por ejemplo, datos.ini.
  2. A continuación, vamos a definir la estructura de nuestro archivo de guardado. Para ello, Game Maker permite clasificar los datos a guardar en secciones, de forma que sea más cómodo para leerlos, escribir en ellos y en general, entenderlo de un simple vistazo. Como solo vamos a guardar la máxima puntuación, vamos a llamar a la sección DatosJuego, por ejemplo.
  3. Dentro de la sección DatosJuego, Game Maker permite guardar tantas variables como queramos, dándoles un nombre para identificarlas previamente. En este caso, vamos a llamar la variable MaxPuntos.
  4. Perfecto, ya tenemos decididos los nombres. Ahora vamos a comenzar a escribir un script en Game Maker llamado graba_datos que abrirá el archivo y guardará la máxima puntuación:
ini_open("datos.ini"); 
ini_write_real("DatosJuego","MaxPuntos",global.maxscore);
ini_close();

Si observamos el código anterior, podemos ver como la función ini_open abre el archivo de guardado, la función ini_write_real escribirá la variable real global.maxscore (que es donde tenemos la máxima puntuación obtenida) dentro MaxPuntos, que a su vez está en la sección DatosJuego.
También existe la función ini_write_string si lo que queremos es guardar una cadena de caracteres (letras, vamos) y se usa exactamente igual.

  1. Ahora vamos a crear otro script carga_datos que abrirá el archivo, pero en esta ocasión, solo leerá las variables guardadas y las pasará a las variables globales del juego:
ini_open("datos.ini"); 
global.maxscore = ini_read_real("DatosJuego","MaxPuntos",0);
ini_close();

Volvemos a abrir el archivo, y a cerrarlo al final, eso es igual que antes. Ahora, sin embargo, la función de carga ini_read_real se utiliza de distinta forma. Para empezar, al comienzo de la línea se coloca la variable global que capturará el valor devuelto por la función, luego si observamos el tercer argumento, vemos como se ha colocado un número cero (0). Esto es así porque es necesario preparar a la función por si el archivo datos.ini no ha sido creado todavía (primer arranque del juego), o por alguna razón se ha perdido o borrado. Es decir, que si hay algún problema, la variable global.maxscore se inicializará a cero puntos.

  1. ¡Todo listo! Ahora solo tenemos que llamar al script carga_datos dentro de un evento Game Start, y al script guarda_datos dentro de un evento Game End. Sobra decir que el guardado también puede realizarse cada vez que finalicemos un nivel, nos maten, o cuando lo consideremos oportuno.

Y para finalizar, intentaré adelantarme a la típica pregunta… ¿Y dónde guarda Windows el archivo de configuración? Si necesitases modificar algo directamente en el archivo (supongo que por cuestiones de desarrollo, ya que no tiene sentido permitir a los jugadores poder “trucar” estos datos), lo puedes encontrar aquí:

C:\Users\xxxx\AppData\Local\yyyy

Siendo xxxx el nombre de tu usuario en el sistema, e yyyy el nombre de tu juego.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s