0

Leer y escribir en ficheros .csv con Godot Engine

Los ficheros .csv (en inglés Comma-Separated Values) son una clase de documentos simples que permiten representar datos en forma de tabla. Las columnas quedan separadas por comas (o punto-y-coma) y las filas por saltos de línea.

Este formato nos es de gran utilidad a la hora de programar nuestros juegos. Por ejemplo, podemos almacenar toda la información del personaje jugador en un fichero .csv al guardar la partida, o también puede utilizarse para crear una base de datos de ítems, enemigos, etc. En el tutorial de hoy veremos cómo leer y procesar este tipo de ficheros con GDScript.


Leer un fichero

Los ficheros .csv se leen de forma parecida a cualquier otro fichero de texto. La función que hay debajo buscará un fichero con el nombre ‘datos.csv’, lo abrirá y escribirá todo su contenido en la consola de Godot:


func leer_fichero_csv():

   #Crear un objeto de tipo 'File':
   var fichero = File.new()

   #Abrir el fichero 'datos.csv':
   fichero.open("res://datos.csv", File.READ)

   #Leemos el fichero de datos hasta el final:
   while not fichero.eof_reached():

      #Leemos una línea y separamos cada campo:
      var linea = fichero.get_csv_line(';')
      #(Al pasar ';' como parametro, estamos indicando que el separador de la linea es el caracter punto-y-coma)
      
      #Escribimos la linea:
      print(linea)

   #Cerramos el fichero antes de salir:
   fichero.close()

La función importante aquí es get_csv_line(). Esta función facilita la tarea de separar la información de un fichero .csv: leerá una línea del fichero y devolverá una lista de Strings donde cada elemento es un ítem de la línea.

get_csv_line() leerá una línea un fichero y devolverá una lista de Strings.

Según las necesidades de tu proyecto puede que tengas que convertir algunos de estos Strings a otro tipo de datos (como enteros o decimales).

Los ficheros .csv normalmente utilizan el carácter ‘;’ como separador, pero también pueden emplearse otros símbolos. Al llamar a la función get_csv_line() tendremos que pasarle como parámetro el carácter que queramos utilizar como separador.


Escribir en un fichero

GDScript también nos permite escribir datos en ficheros .csv. Como ya he dicho al principio esto podría ser útil, por ejemplo, para almacenar el estado del personaje jugador cuando se guarda la partida.


func escribir_fichero_csv():

   #Crear un objeto de tipo 'File':
   var fichero = File.new()

   #Abrir/generar un fichero con el nombre 'output.csv':
   fichero.open("res://output.csv", File.WRITE)

   #Definimos tres arrays con datos que queremos guardar:
   var linea1 = ["Ítem", "Precio", "Rareza"]
   var linea2 = ["Arco corto", 8, "Común"]
   var linea3 = ["Armadura de acero", 25, "Infrecuente"]

   #Escribimos estos datos en el fichero:
   fichero.store_csv_line(linea1, ';')
   fichero.store_csv_line(linea2, ';')
   fichero.store_csv_line(linea3, ';')

   #Cerramos el fichero:
   fichero.close()

Aquí hemos utilizado la función store_csv_line() para escribir información en el fichero. Esta función recibe dos argumentos: un array y un carácter separador, y crea una nueva línea con el contenido del array, cuyas columnas estarán separadas por el carácter especificado (en este caso, un punto-y-coma).


Un ejemplo práctico

Para que veáis un caso práctico de cómo leer y escribir en ficheros .csv con Godot, os hemos preparado un pequeño proyecto que podéis descargar desde [aquí].

El proyecto consiste en una escena principal con dos paneles:

 

El panel izquierdo tiene 3 Sprites, cada uno con una etiqueta. Al iniciar el juego, si el usuario pulsa el botón “Leer Datos”, el programa abrirá el fichero llamado “input.csv” que hay en la carpeta del proyecto y modificará el color y las etiquetas en función de los datos que hay escritos:

El usuario puede pulsar el botón “Leer Datos” para abrir el fichero “input.csv” y leerlo.

El fichero “input.csv” contiene datos que indican cómo hay que modificar el color de los Sprites y sus etiquetas.

Una vez pulsado el botón, el color y la etiqueta de los sprites cambiará según los datos leídos.

 

En cambio, el panel de la derecha permite al usuario modificar el color y la etiqueta de tres ítems. Al pulsar el botón “Guardar Datos”, el programa generará un fichero llamado “output.csv” que contendrá la información de estos tres items (su color y etiqueta).

El usuario puede cambiar los colores y los nombres del panel de la derecha y guardar esta información en el fichero “output.csv”.

 

Podéis abrir el script Main.gd para ver cómo el programa lee y escribe estos datos:


Ficheros .csv y traducciones

Otra utilidad que tienen los ficheros .csv es la posibilidad de utilizarlos para añadir localización para nuestro juego y traducirlo fácilmente a varios idiomas. Godot Engine ofrece una herramienta para traducir automáticamente todos los textos de nuestros juegos (botones, etiquetas, diálogos…) a partir de un único fichero .csv con traducciones.

En este otro tutorial se puede ver un ejemplo de cómo traducir un menú a varios idiomas utilizando ficheros .csv.

N4n0

Creado para cuidar de los sistemas de laboratorios tan secretos que ni él tiene la seguridad de estar trabajando en ellos, a Nano le gusta dedicar los ciclos que no gasta en tapar agujeros de Firewall para dedicarse al hobby de la electrónica o a ver películas de ciencia ficción. Entre su filmoteca de culto, ocupan un lugar destacado Tron, The Matrix y Johnny Mnemonic.

guest
0 Comments
Inline Feedbacks
Ver todos los comentarios