Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Cómo se hace...? (Eventos, scripts, parsers, etc.)

Iniciado por [Vil], 16 de Mayo de 2012, 02:54:19 PM

« anterior - próximo »

[Vil]

Saludos foreros.
Mi única gran experiencia haciendo juegos es la aventura gráfica de Fregocles. En ella, los eventos del juego (ir a un sitio, mover algo, decir...) los leía de archivos que parseaba yo mismo. Hacer ese parser fue un coñazo padre y me gustaría saber cómo se suele hacer de forma mas profesional. Os cuento.

Estoy haciendo un plataformillas, y edito los niveles con Tiled. Bien, como cada objeto de tiled puede tener unos atributos, lo ideal es que un objeto "Botón" tenga en sus atributos algo del estilo

if( inventario(objeto)==true ){
   abrePuerta(nPuerta);
   creaBoss(x, y);
   personajeHabla(prota, "Oh my fucking God!!!!");
}


Luego eso lo leo desde mi juego en Java y lanzo los métodos o lo que sea oportuno...

¿Esto se suele hacer a mano? ¿Se implementan lenguajes scripts ya "hechos"?
Quizá son preguntas obvias, pero no he encontrado nada por ahí para saber cómo hacerlo...

Mil gracias!

Sante

Puedes implementar un lenguaje propio, pero como dices, es un coñazo y es tiempo que inviertes en reinventar la rueda, y no en tu propio juego. Lo más habitual es usar uno de los lenguajes de script ya existentes diseñados precisamente para este tipo de situaciones.

Si no me equivoco, creo que LUA es el más usado en videojuegos, porque es bastante ligero y fácil de integrar con tu aplicación. Personalmente, como lenguaje prefiero Python, pero tras haber probado a integrar los dos en proyectos C/C++, LUA me pareció menos problemático.

El proceso de integración consiste, básicamente, en montar un intérprete en tu programa, y exponer una serie de funciones e interfaces de tu código C/C++ para ser llamadas desde el script. Estoy seguro que buscando "LUA C++ integration tutorial" en Google te salen miles de artículos de introducción al tema.

Existen sistemas automáticos para construir un wrapper de tu motor para LUA, de forma mucho más rápida, pero la verdad es que no los he probado, así que no sé qué inconvenientes tienen.

[Vil]

Mil gracias Sante. Más o menos imaginaba que iban por ahí las cosas. Lo que no sabia mucho era como integrar el script... trabajo en Java, y he encontrado algo para integrar Lua en Java... pero en todos lados dicen que está más preparao y más fácil con C++
A ver si me entero de qué script se implementa mejor en java.
Aun así, para meter Lua en Java, he encontrado este paper:
http://w3.impa.br/~rbs/pdf/GAMEON-NA07.pdf
Que tiene muy buena pinta :)

Sigo investigando...

[Vil]

Bueno, siguiendo el pdf y alguna cosa más ya he usao lua con Java... pero me da que no es multipataforma el JavaLua este... a ver si encuentro el script ideal

josepzin


[EX3]

Java no tenia reflexion de codigo como .NET? En .NET puedes reutilizar el propio lenguaje, C# por ejemplo, como interprete de scripts, o en otras palabras, cargar un archivo con codigo y ejecutarlo al vuelo contra funciones del programa y del framework.

Imagino que quizas sera algo mas coñazo de implementar que lo que podria ser Lua pero al menos sabes que lo tendras siempre sin importar la plataforma y supongo que si no estamos hablando de scripts muy grandes no deberia afectar seguramente de forma notable al rendimiento, no lo se. De todos modos, que te ilustre con mas detalle alguien del foro que entienda mas sobre esto de la reflexion de codigo, que yo solo conozco la parte teorica, no he llegado nunca a la practica ;)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

[Vil]

Jejeje, si al 2D pero no Fregocles. Un jueguecillo terminable y no utópico ;)

Y muchas gracias EX3, investigaré si lo tiene Java y si no es muy problemático de usar.

Igualmente, en la misma ayuda de las librerías que estamos utilizando (libgdx) te dice como usar Lua en Java bajo win, mac, linux y android... así que puede que termine tirando por ahí (implementar Lua ha sido mucho más fácil de lo que esperaba)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.