Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkKRuleR en Noviembre 29, 2012, 11:50:51 PM

Título: Máxima capacidad de un string y su gestión
Publicado por: DarkKRuleR en Noviembre 29, 2012, 11:50:51 PM
Buenas! Pues en mi programa, tengo una variable string donde voy guardando todo lo que pasa. Es un juego de cartas y cada vez que el usuario hace algo se añade una nueva línea a la variable (log += "#Nueva línea!"). Cosas del tipo "Jugador A roba una carta", "Jugador A suma 10 Vidas a Jugador A", etc. Fácilmente puedo ir añadiendo nuevas líneas al string sumando un string nuevo a la variable string, y ello lo añade automáticamente, y haciendo un draw_text con una y que pueda modificar con las flechas me muevo por el texto.

El  problema es que esta variable podría hacerse muy larga y contener MUCHO texto. Así que... un string tendría número máximo de carácteres? si lo tiene, qué sería recomendable hacerme? un array de... 100 posiciones de strings, y cuando uno se vaya a llenar paso al siguiente? si no tiene tamaño máximo igualmente debería hacer lo anterior, u otra cosa, para que sea más eficiente y no se bloquee, o da igual?
Título: Re:Máxima capacidad de un string y su gestión
Publicado por: Johann en Noviembre 30, 2012, 01:48:18 AM
Buscando tu pregunta en ingles llegué a un post en GMC aqui (http://gmc.yoyogames.com/index.php?showtopic=508821) donde dicen que una variable local puede contener hasta 2048 caracteres en  :GM8: y que lo mas recomendable para su gestion es usar estructuras de datos como listas (ds_list) u otros similares, y que el problema con los arrays es que siempre tendrías que recorrerlos con un for para poder asignarles valores.
Título: Re:Máxima capacidad de un string y su gestión
Publicado por: somnus en Noviembre 30, 2012, 06:15:25 PM
pues creo yo que depende, obvio que cuando mas grande el string mas tiempo se tardara en procesar, pero si usas un archivo de texto al cual le vas agregandolas lineas y lees desde el seria mas facil, aunque tambien tendrias que abrir el archivo a cada rato, cosa que no me parece optimo,

pero si el juego en cuestion corre rapido con tu string y en otra batalla supongamos eliminas rastro de este o lo limpias de memoria lo podrias utilizar.

si te es mejor usar string y eso no afecta al rendimiento del juego usalo asi.

pero si es demasiado largo ideate una forma de cargar/guardar  los datos necesarios de archivos de texto externos, eso es en resumen lo que te quise decir, espero haberme explicado bien
Título: Re:Máxima capacidad de un string y su gestión
Publicado por: DarkKRuleR en Diciembre 02, 2012, 12:44:01 AM
El problema es que se llene el string y se colapse xD

entonces supongo que haré eso, un vector de 100 posiciones donde cada una sea un string gordo, al llenarse uno pasamos a escribir el siguiente, y los mostramos todos en pantalla dejando una distancia fija entre cada uno.

Así entrando no tengo ni idea de cómo programarlo, pero todo es ponerme a ello. Dejo esto así, si no logro programarlo o si me pasa algo aviso, y si alguien tiene otra idea pues también la comenta. Así que el tema sigue abierto, ya os contaré o me contaréis ^^
Título: Re:Máxima capacidad de un string y su gestión
Publicado por: elviskelley en Diciembre 02, 2012, 02:44:07 PM
Yo nunca uso list  siempre uso arrays y los cambios no los manejo con un for si no con una Alarm o a veces variables que se ecargan de ello.
Título: Re:Máxima capacidad de un string y su gestión
Publicado por: Johann en Diciembre 06, 2012, 02:36:26 AM
En el post que cité dice
Cita de: BleedAbout 2048 characters (local variable) for game maker 8, not sure about 8.1 though.
Hice la prueba en :GM8:.1 y parece que no tuviera limite, o que el limite fuera la memoria disponible.
dejo el ejemplo adjunto.
PD: no traten de hacer iteraciones mayores a 50000 a la vez.
Título: Re:Máxima capacidad de un string y su gestión
Publicado por: DarkKRuleR en Diciembre 07, 2012, 11:16:20 AM
Cita de: Maitreya en Diciembre 06, 2012, 02:36:26 AM
En el post que cité dice
Cita de: BleedAbout 2048 characters (local variable) for game maker 8, not sure about 8.1 though.
Hice la prueba en :GM8:.1 y parece que no tuviera limite, o que el limite fuera la memoria disponible.
dejo el ejemplo adjunto.
PD: no traten de hacer iteraciones mayores a 50000 a la vez.

Efectivamente yo he superado ese límite muchas veces. La cuestión es si realmente un string usa memoria dinámica y va cogiendo memoria y memoria a medida que se hace largo, en cuyo caso podría ser IGUAL DE EFICIENTE un solo string que meter muchos string por partes, pues ocuparían lo mismo. En ese caso sería genial!