Spanish forum > Foro técnico

Optimizar variables

<< < (2/2)

Jose:
Buenas Maidnet,

si he entendido bien tu problemática con los diálogos creo que existe una solución muchísimo más óptima que el empleo de variables globales. Existen dos métodos en el objeto Game: AddResponceOnce y AddResponseOnceGame. El primero añade una respuesta que una vez ha sido seleccionada desaparece (y por tanto no se puede volver a seleccionar) hasta que salgas del diálogo. El segundo hace lo mismo pero la respuesta no volverá a aparecer nunca más en toda la partida.

Espero que esto te ayude.

Un saludo,

Jose

Maidnet:
Ummm... la verdad es que es mucho más práctico, y me ahorraría muchas variables...

Lo voy a probar y ya cuento cosas.

Muchas gracias por el empujón ;)

P.D. : Jyujinkai, OK.

HelLRaiseR:
Efectivamente esa es la solución si no quieres que te vuelva a aparecer la respuesta, te quitará bastante variables.

Yo hago cosas en los dialogos de tipo "Vuelveme a contar lo de" cuando ya se ha hecho la pregunta, la segunda vez lo pregunta de otra forma y se contesta de otra forma, eso lo hago con variables globales, algo parecido a lo que hace la plantilla con el StateScene.Visited, en principio creo que solo se puede hacer asi. Pero esto solo si queres que la pregunta aparezca siempre, pero de otra forma, para que se sepa que ya se ha hecho y por si el jugador no se acuerda de algo que ya habló con el personaje, en el caso de que no vuelva a aparecer AddResponseOnce o AddResponseOnceGame segun quieras en el juego o en el dialogo

Maidnet:
Buenas a todos,

Tras un tiempo dedicado a otros aspectos del juego, ahora estoy en el proceso de optimización de variables que comentaba hace un tiempo en este mismo hilo. He estado viendo la ayuda, pero no acabo de entender los comandos de los diálogos como el  Game.AddResponseOnce, Game.AddResponseOnceGame, Game.StartDlgBranch() , etc....

Por ejemplo, si yo tengo tres posibilidades de respuesta en una conversación, ¿como puedo hacer que una vez seleccionadas dos de ellas ejecute la tercera automáticamente sin utilizar marcadores "manuales" con variables globales?

Otro ejemplo: en una conversación hay varios niveles o "ramas". Conforme tengo yo programado ahora, tengo un marcador en cada respuesta "final", que se pone en "true" si seleccionas esa opción, y hace que desaparezca y no se pueda seleccionar de nuevo. Una vez todas las opciones han sido seleccionadas, la condición que había en el nivel anterior que decía que mientras hubiese alguno de los marcadores que no fuera "true" siguiese mostrando esa rama del diálogo, hace que ya no salga esa rama. ¿Como puedo hacer esto sin la utilización de variables globales con el fin de descargar lo máximo posible el juego?

Antes usaba variables globales independientes. Ahora he hecho una matriz con todos los valores dentro de una misma variable ¿Esto optimiza el funcionamiento del juego o es exactamente lo mismo usar 20 variables globales que una matriz global de 20 "casillas"?.

Perdón por la parrafada, pero es que tengo muchas dudas en este aspecto, pues una vez terminado el juego parece que el último gran escollo que me queda para darlo por finalizado es la puñetera optimización, pues como comentaba anteriormente el salvado y cargado de partidas se ralentiza mucho. También quisiera saber, si alguien tiene algo de idea, que otras cosas puedo hacer para optimizar y mejorar el script.

Muchísimas gracias por adelantado.

Jose:

--- Quote from: Maidnet on March 23, 2009, 03:22:26 PM ---
Por ejemplo, si yo tengo tres posibilidades de respuesta en una conversación, ¿como puedo hacer que una vez seleccionadas dos de ellas ejecute la tercera automáticamente sin utilizar marcadores "manuales" con variables globales?


--- End quote ---

Buenas Maidnet,
en teoría si le pasas el valor 'true' en la llamada al método Game.GetResponse() de la siguiente forma: Game.GetResponse(true), el motor de WME seleccionara de forma automática la única respuesta disponible cuando sólo haya una.



--- Quote from: Maidnet on March 23, 2009, 03:22:26 PM ---
Otro ejemplo: en una conversación hay varios niveles o "ramas". Conforme tengo yo programado ahora, tengo un marcador en cada respuesta "final", que se pone en "true" si seleccionas esa opción, y hace que desaparezca y no se pueda seleccionar de nuevo. Una vez todas las opciones han sido seleccionadas, la condición que había en el nivel anterior que decía que mientras hubiese alguno de los marcadores que no fuera "true" siguiese mostrando esa rama del diálogo, hace que ya no salga esa rama. ¿Como puedo hacer esto sin la utilización de variables globales con el fin de descargar lo máximo posible el juego?


--- End quote ---

Si quieres pásame código en concreto y le echo un vistazo.

Un saludo.

Navigation

[0] Message Index

[*] Previous page

Go to full version