Buenas.
Mi pregunta consiste en saber si se pueden guardar archivos en la sdcard(archivos .ini, .png, o cualquier otro) usando alguna función de game maker studio para guardar el archivo fuera de la sandbox(normalmente la sandbox solo permite guardar archivos en la carpeta del sistema, la cual es invisible), no sé si me expliqué bien pero la idea es por ejemplo:
guardar una imagen resultado de la funcion screen_save_part("image.png",0,0,720,480) en la carpeta "sdcard\gameScreenshots" o cualquier otra.
He intentado cambiar el nombre del archivo por el directorio de guardado (screen_save_part("sdcard\Images\image.png",0,0,720,480)) pero igualmente no se guarda nada...
Agradecería si me explicaran cómo arreglar este problema. :-[
Cita de: NiuWeb en Agosto 25, 2015, 11:06:05 PM
Buenas.
Mi pregunta consiste en saber si se pueden guardar archivos en la sdcard(archivos .ini, .png, o cualquier otro) usando alguna función de game maker studio para guardar el archivo fuera de la sandbox
No existe una función propia de GMS que permita guardar fuera del sandbox en Android. Quizás haya una extensión que lo permita, o se puede crear una mediante Java, pero dentro de las funciones nativas, no hay una así.
Cita de: penumbra en Agosto 26, 2015, 12:32:10 AM
Cita de: NiuWeb en Agosto 25, 2015, 11:06:05 PM
Buenas.
Mi pregunta consiste en saber si se pueden guardar archivos en la sdcard(archivos .ini, .png, o cualquier otro) usando alguna función de game maker studio para guardar el archivo fuera de la sandbox
No existe una función propia de GMS que permita guardar fuera del sandbox en Android. Quizás haya una extensión que lo permita, o se puede crear una mediante Java, pero dentro de las funciones nativas, no hay una así.
Me imagino que ese es el objetivo de activar la casilla WRITE_EXTERNAL_STORAGE en la pestaña Permissions de Global Game Settings de Android en GMS pero me parece extraño que no hayan incluido alguna función para sacarle provecho.
Muchos usuarios se han quejado y han criticado el sistema basado en sandbox, mientras que el staff de YoYo lo ha defendido a capa y espada. Según YoYo, la implementación del snadbox fue una decisión planeada y tomada a conciencia por programadores expertos. Yo sé y entiendo que tener un sandbox es limitante para el desarrollador, pero desde el punto de vista del usuario, esto es más seguro.
Sin sandbox, los datos del usuario estarían potencialmente expuestos: el desarrollador podría "husmear" entre los archivos del usuario y escribir en donde le diera la gana. Robar datos o información personal sería muy fácil. Una cosa es que la mayoría de desarrolladores tengan buenas intenciones o que digan "yo nunca haría algo así", y otra cosa es que la posibilidad de que alguien lo usara con malas intenciones fuera 0, lo cual no se podría garantizar.
Entiendo perfectamente que el objetivo del Sandbox sea la seguridad del usuario y me parece bien que así sea. Sin embargo, debería entregársele la posibilidad al usuario de escoger si autorizar a la aplicación a leer, escribir o ambas cosas en el dispositivo fuera del local storage. A mí me habría gustado, por ejemplo, poner la opción de que el jugador seleccione una imagen de su galería de imágenes para utilizarla en mi juego pero no se podía por este asunto. Una extensión podría hacer estas cosas perfectamente aunque no me queda claro si GMS la bloquearía de todas formas. El hecho es que la mayoría de las aplicaciones comerciales de Android aprovecha estas posibilidades, desde leer los archivos del dispositivo del usuario hasta hurgar en la información de su cuenta de Facebook (no con malas intenciones, claro) para sacarle provecho a la interconectividad que actualmente domina las aplicaciones.
Yo que tenga entendido también esa casilla (WRITE_EXTERNAL_STORAGE) esta puesta ya que en ocasiones el usuario tiene la opción de instalar la aplicación en la microSD es por eso que hay que marcar que también necesita de ese tipo de permisos...
eh incluso las misma configuraciones globales muestra un cuadro de selección donde te da la opción de instalar en memoria interna o preferente en la Externa...
SALUDOS :)
Cita de: Guacusio en Agosto 26, 2015, 06:35:01 AM
Una extensión podría hacer estas cosas perfectamente aunque no me queda claro si GMS la bloquearía de todas formas.
Creo que no lo bloquea, porque de hecho, la extensión existe.
Cita de: Guacusio en Agosto 26, 2015, 06:35:01 AM
El hecho es que la mayoría de las aplicaciones comerciales de Android aprovecha estas posibilidades, desde leer los archivos del dispositivo del usuario hasta hurgar en la información de su cuenta de Facebook
El caso de facebook y redes sociales yo lo veo como algo aparte, ya que ahí es el usuario el que por voluntad entrega la información y acepta los términos del acuerdo para que la compañía use su información personal (sabiendo desde un principio que parte o el total de esa información será accesible para otra gente). En el caso de una aplicación X creada por Juanito Pérez,
sé que suena a mucha paranoia, pero yo no meto las manos al fuego por alguien desconocido :-[
Bueno, leyendo las respuestas a este post me di cuenta de que no se puede realizar esto fácilmente (buscaré por otras fuentes a ver qué encuentro), así que tengo otra pregunta: ¿Al menos es posible, en ves de escribir archivos en la SDcard, leerlos o importarlos? Me explico:
tengo una imagen en "sdcard\images\foto.png", y quiero usarla para reemplazar el background de mi juego por ella, usando la función "background_replace(...)". ¿Cómo podría hacer esto?
Cita de: NiuWeb en Septiembre 18, 2015, 04:55:33 PM
¿Al menos es posible, en ves de escribir archivos en la SDcard, leerlos o importarlos?
No y la razón es la misma: el sistema basado en sandbox aplica tanto a lectura como escritura. Este sistema furza a GMS a "buscar" archivos (lectura) sólo en lugares específicos que desde GMS no se pueden modificar. A esto se refiere el manual con el término "límites del sistema de archivos"
http://docs.yoyogames.com/source/dadiospice/002_reference/file%20handling/file%20system%20limits.html
La única manera, que no es precisamente lo que quieres, es agregar una imagen a la lista de Included files, desde el árbol de recursos de GMS. Si el archivo no está agregado previamente a esa lista, no es posible "incorporarlo" al juego en tiempo de ejecución