Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Portalengine - De Vaporware A Alphaware

Iniciado por rrc2soft, 06 de Agosto de 2004, 11:41:21 AM

« anterior - próximo »

rrc2soft

 Hola a todos!

Despues de estar estos meses dandole a la tecla durante casi todo mi tiempo libre, al final he conseguido que mi engine de juegos de rol (con el que llevo en varias versiones... 8 anyos?) sea minimamente jugable. Para celebrarlo (y tambien celebrar que en unas horas vuelvo a Espanya de vacaciones  (uoh) ), he sacado una version alpha que incluye una pequenya demo jugable (alpha, por supuesto  ;)  ). Sus caracteristicas son:

  • Graficos!!!!!
  • Capacidad de manejar varias camaras
  • "Scriptado" de la mayoria de las entidades
  • Conversaciones en plan rol "europeo"
  • menus con drag & drop
  • combates en tiempo real con pausa
  • y muchos, muchos bugs....
Que la disfruteis!

EDIT: Se me olvidaba, el link a la pagina  :rolleyes:
www.rrc2soft.com

manko

 Asi por encima me parece muy interesante y me estoy leyendo los dos archivos sobre compiladores e interpretes, buen trabajo, me interesa ese tema.

¿ Habeis usado un Lex y Yacc para crear un compilador de vuestro lenguaje script ?


manko

 otra preguntilla:

Teneis un interprete para el guión del juego, verdad. Ese interprete construye las instrucciones adecuadas para que el motor el juego las entienda: entra dialogo(@pascual,'tal') y sale ( hablar(0,'tal...') ) , ¿entonces teneis otro interprete para el motor? que dado un guión de texto adecuadamente escrito realice ya ( printf() , u lo q sea en C ) .

¿es asi o lo he entendido mal?

rrc2soft

 Precisamente el compilador no lo hemos desarrollado nosotros, sino que hemos cogido el Innerfuse Pascal Script  ;) . De todas formas: el compilador primero se encarga de pasar el lenguaje pascal a "codigo maquina" (usando la libreria ifps3comp) que incorpora una seccion de datos (como las cadenas) y una seccion de codigo - pero no se si el autor ha empleado (o se ha apoyado en) lex y yacc para conseguirlo. Luego, usando el interprete (una maquina virtual, localizada en la libreria ifps) se ejecuta el codigo - el cual incluye llamadas a procedimientos externos al script usando assembler puro y duro.

El sistema de ejecucion del innerfuse funciona mas o menos de la siguiente forma:


 (* Recoge los "handles" de nombres y crea un semaforo *)
 RuiDat := Pnj_Dev_Nombre('Rui');
 WolvDat := Pnj_Dev_Nombre('Wolv'); // OJO no recoge el avatar (lo que nos interesa :-P)
 BugDat := Pnj_Dev_Nombre('Bug');
 Sem_Crear(Sem);
 (* ... *)
 Comp_Mirar_A(RuiDat,DIR_ARRIBA);
 Pnj_Dialogo_A(RuiDat,'Bueno, ya estoy aqui. Una hora para encontrar este lugar...');


Por ejemplo, para RuiDat := Pnj_Dev_Nombre('Rui');, el engine primero pone en la pila el parametro ('Rui'), y luego llama a una instruccion que se encarga de ejecutar un procedimiento externo al engine (Pnj_Dev_Nombre, que devuelve el "handle" asociado al nombre 'Rui'). Luego el engine coge el resultado de la funcion y lo guarda, para que en la siguiente instruccion se asigne a la variable RuiDat...

...es decir: El compilador se encarga de ejecutar los procedimientos necesarios (y todo lo demas) en una sola pasada. Ademas, al no ser interpretado (ya que se compila antes de la ejecucion, como si se creara un .EXE), no tiene que analizar cadenas, por lo que va mas rapido.

PD: No se si he contestado a tu pregunta, si no es asi, me lo dices  ;)  






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.