Mi problema es el siguiente. Tengo un archivo ini que guardo en la carpeta included files. Cuando lo modifico desde el juego la primera vez, pasa de estar en el file bundle a la save area (o local storage). Todas las operaciones sobre el archivo ini, tanto lectura como escritura, desde ese momento se realizan sobre la versión guardada en la save area. El problema es que si saco una versión nueva del juego con el ini modificado en included files, el juego seguirá ocupando la versión de la save area en vez de actualizarla. En otras palabras, GMS no hace una instalación "fresca" de la actualización de un juego ya que usa la misma carpeta save area que ya existía, sin borrar su contenido. Por una parte eso es conveniente para poder, por ejemplo, guardar el progreso del jugador y que no se pierda al actualizar el juego, pero por otra no me permite hacer modificaciones de esos archivos ini que tengo modificados en la carpeta included files. Tengo entendido que para Android se puede activar la opción Always do full install of APK en las preferencias, que borra todo registro del juego previo antes de instalar una actualización pero en Windows parece que no existe esa opción. Lo único que se me ocurre por ahora es agregar otro archivo ini que guarde una variable que indique si es la primera vez que se corre el juego; si es así, desde el juego borrar los archivos en la save area para obligar a leerlos desde el file bundle ¿Habrá otra manera mejor?


Cita de: Guacusio en Agosto 15, 2015, 01:59:55 AM
¿Habrá otra manera mejor?
Creo que no. Mientras exista un archivo en el área de escritura, GMS le dará prioridad a ese archivo y no le hará caso a la copia del game bundle.

Puedes revisar si todas las variables del ini existen con ini_key_exists; si una no existe se escribe con el valor por defecto.
Otra opción es leer todas las variables del ini, borrar el archivo y exportar el que se encuentra en Included Files, después escribir las variables guardadas en el nuevo archivo. Este método serviría principalmente para mantener el diseño del archivo (sangrías, espacios, saltos de linea).

El jugador tendrá acceso a un archivo ini para borrar o agregar cosas; yo debo tener también acceso a éste para agregarle cosas nuevas a medida que genere actualizaciones del juego (este archivo representa puzzles disponibles, donde yo entrego por defecto una cantidad, el jugador puede borrar o agregar nuevos puzzles con un editor incorporado en el juego y además quiero poder agregar nuevos puzzles al archivo con una actualización del juego sin afectar los puzzles ya guardados en el ini). Por lo tanto, necesito que el archivo no sea borrado con una actualización.


Pienso guardar el progreso en un archivo ini (que no requiere cambiarse por una actualización del juego) y los otros archivos ini que requieran actualización por cambios en la mecánica de juego (como los de puzzles) los voy a leer desde un servidor para actualizar los del área de storage en base a éstos, haciendo una operación tipo "append" para agregar los nuevos datos sin borrar los existentes.