Ir al contenido principal

Problemas con los scripts, otra vez

Ayer trabajé para implementar la sugerencia que me dejó spoke en el comentario para solucionar el raro problema de los scripts en Windows. No me había percatado que Ogre tiene sus propias funciones de manejo de archivos, que pueden ser muy útiles. Me tomó cierto tiempo cogerles la vuelta y desde ahora les doy  un consejo: es necesario cerrar adecuadamente el archivo. Aún cuando la clase era una variable local de una función, al volver a llamar dicha función la aplicación explotaba si no se cerraba el archivo. Cerrarlo destruye la instancia y elimina cualqueir problema.
Luego encontré otro fallo muy singular. Los scripts estaban dando errores sintácticos graves, al revisarlos me percaté que solo el primero se carga bien, los siguientes se "contaminan" de alguna forma con el valor anterior de la cadena. He intentado usando la función clear() de std::string, igualando la cadena a "", pero nada. En cambio, esto no sucede en Linux. ¿Alguien me puede dar una idea de qué está sucediendo? Porque la verdad que me he quedado perdido en un campo de lechugas.

Comentarios

  1. Creo recordar que me encontre con el mismo problema.

    ¿Estas usando streams para leer los scripts?

    ResponderEliminar
  2. Sí, estoy usando ifstream. Me he asegurado de hacer un clear() a todas las cadenas donde se almacena el script en algún momento, así que yo también pienso que el problema puede estar en la lectura de los archivos.

    ResponderEliminar
  3. Bueno, lo qu yo tengo implementado es tal que:

    class ScriptManager : public Ogre::ResourceManager y ademas Singleton

    De forma que solo puede haber uno.

    class Script : public Ogre::Resource que es la que contiene el stream del script.

    Ogre::DataStreamPtr mStream;

    A la hora de ejecutar el script lo leo del stream y ejecuto tal y como te indique en el otro post.

    Recuerdo el problema que comentas, y a fecha de hoy no he logrado encontrar en mi historico de cambios cuando lo solucione.

    ¿Que version de lua estas usando?

    ResponderEliminar
  4. Estoy usando la 5.1. Voy a comparar bien mi código con este, porque creo que no estoy usando DataStreamPtr, sino otra clase.

    ResponderEliminar
  5. Creo recordar que tenia algo que ver con la versión de lua, pero no estoy seguro al 100% ¿has probado a recompilar desde cero?

    Yo estoy usando lua 5.1.4 y luabind 0.8 (pendiente de actualizar a la 0.9)

    También es cierto que no reutilizo el DataStreamPtr sino que tengo uno por cada script.

    ResponderEliminar

Publicar un comentario en la entrada

Entradas populares de este blog

Un poco de nostalgia: juegos retro

El Laberinto del Saber es un juego desarrollaod en Cuba a finales de los 80 o algo así, para MS-DOS. Aquí pueden verlo en acción:

Desde hace un buen tiempo que quiero hacer un remake moderno orientado principalmente a plataformas móviles, al principio lo intenté con SDL 2, pero luego decidí usar un motor decente. Entre Godot y Unity3d me decanté por el último, para no invertir tiempo en aprender una herramienta que no me serviría para hacer más juegos.
Sin embargo, el proyecto ya acumula unos seis meses de atraso por diversas razones, y ni siquiera tengo una imagen para mostrar. Así queni hablar de fecha de lanzamiento.

Unity 5.4 está aquí

Y no trae la herramienta de edición de cinemáticas, como esperaba. Al menos, no se hace referencia a ella en las notas de lanzamiento.
Justamente acabo de lograr descargar la 5.3.5, la cual ha sido bastante decepcionante. El MonoDevelop que incluye ha dejado de sugerir el autocompletado para los miembros de algunas clases (me queda por definir cuándo lo hace y cuándo no) y además el precalculado de la iluminación global me suelta una docena de advertencias, aparte de que me ha obligado a recalcular las luces dos veces. Y eso toma bastante tiempo.
Aún no sé si podré echarle el guante a la 5.4, y tampoco es que tenga mucho interés. Aunque supongo que peor no va a ponerse, y quizás hasta se arreglen las cosas.
Por suerte, no estoy programando mucho. Las últimas páginas de la cuarta novela me tienen  bastante ocupado, y también le estoy echando un vistazo a la historia del juego. Sin embargo, eso no será para siempre, en algún momento de esta semana tengo que seguir puliendo el sistema …

Leyendo a Sapkowsky

Este es uno de mis escritores favoritos y es lamentable que haya tan poco de él en español. Aunque hay que reconocer que Andrzej Sapkowsky no ha sido tan prolífico.
A Sapkowsky le basta con su saga de Geralt de Rivia para ser una figura de renombre en la literatura fantástica. La fama de los juegos basados en el personaje del brujo Geralt, me parece, no le han acarreado una fama enorme, porque muchos olvidan (o simplemente no se interesan en averiguar) que el Wiedźmin no fue creado por CD Projekt RED.Por suerte, como les decía, entre los lectores ya Sapkowsky era un referente aún antes de que salieran los juegos.
Tenía entendido que estaba trabajando otra serie de libros, basados en las Guerras Husitas, así que hace poco decidí buscar si ya estaban disponibles en español. Y resulta, que además de los dos libros de dicha saga, me encontré Víbora, un tercero completamente distinto, ambientado en Afganistán durante la invasión soviética.
No obstante, no es de eso que quiero hablarles, sin…