Foros - Stratos

Stratos => Proyectos => Mensaje iniciado por: Javi SJ Cervera en 29 de Mayo de 2004, 07:22:04 PM

Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Javi SJ Cervera en 29 de Mayo de 2004, 07:22:04 PM
 Smash es el lenguaje que estoy diseñando para programar Century y Sneak Behind. Se basa en el lenguaje Small, e implementa NeoEngine como engine 3D. Contiene un set de funciones muy sencillas de utilizar, y un sistema orientado a eventos óptimo para la programación de videojuegos. Aquí pongo dos capturas de dos mapas de Counter-Strike: Condition Zero cargadas en Smash:

(http://www.galeon.com/jedive/gallery/cz_smash1.jpg)

(http://www.galeon.com/jedive/gallery/cz_smash2.jpg)

Y aquí una captura de Sneak Behind:

(http://www.galeon.com/jedive/gallery/sb_smash1.jpg)

El engine soporta DirectX9 y OpenGL.

Smash será completamente gratuito, aunque probablemente pondré un sistema que permita donar dinero. Si consigo suficiente dinero, compraré un Mac y haré versión para MacOS X. De momento estoy con la versión Windows, y una vez terminada portaré a Linux.

Aquí tenéis un ejemplo de la sintaxis:

// Include default libraries
#include <core>
#include <float>
#include <engine>

// Main function
// This function is called every frame by the engine
main()
{
while(mainmsg_exist()) {  // While there are messages to process ...
 switch (mainmsg_id()) {
  case msg_init: { // Engine initialization
   // Add resource path
   resource_addpath "cs"

   // Set display mode
   set_display 800, 600, 32, df_directx

   // Hide mouse pointer
   mouse_show false

   // Load scene
   scene_load "aztec.nsce"

   // Create a default entity
   entity_create("MyEntity")
  }
 }
 mainmsg_next
}

// Standard frame
//display_text 0, 0, "Hello world!"
//display_text 0, 12, "Do you like this?"
//display_text 0, 24, "SMASH: Coded by Javi \"Jedive\" San Juan"
//display_text 0, 36, "Copyright (c) 2004 Niven Interactive"
mouse_move display_width() / 2, display_height() / 2
if (key_hit(0x1001) || !display_exist())
 end_main
}

// This is the handler of the 'MyEntity' type of entity
// Every frame, this function will be called by the engine
// to process the messages that the entity has received
public MyEntity(Entity: myentity)
{
while(msg_exist(myentity)) { // While there are messages to process ...
 switch (msg_id(myentity)) {
  case msg_init: { // If msg_init received
   entity_setcamera myentity
  }
 }
 msg_next myentity   // Go to next message
}

// Standard frame
entity_turn myentity, mouse_movy() * 0.005, 0, 0
entity_turn myentity, 0, -mouse_movx() * 0.005, 0, true
if(key_down(4352)) entity_move myentity, 0, 0, 12
if(key_down(4353)) entity_move myentity, 0, 0, -12
if(key_down(4354)) entity_move myentity, -12, 0, 0
if(key_down(4355)) entity_move myentity, 12, 0, 0
}


Está a medio camino entre C y Basic. Aquí véis dos funciones. La función main(), a diferencia de C, es llama a cada frame por el engine. De forma que cuando la funcion main() termina, no termina el programa, si no el frame actual. Para slair del programa debemos utilizar end_main(). La forma adecuada de programa es hacer un bucle que responda a los mensajes que main() va recibiendo, y después ejecutar aquello que se debe procesar todos los frames, y entonces salir de la funcion.

La funcion MyEntity() es la función que controlará todos los entities de tipo MyEntity. Todas las funciones que controlan entities son llamadas una vez por cada entity por el engine, y también procesan los mensajes que recibe el entity. La función debe ir precedida por al palabra "public", que hace esa función accesible desde fuera del script (esto es, permite acceder a la función desde el runtime).

La funcion key_down() utiliza números enteros por ahora, y es un poco engorrosa, pero enseguida haré constantes kc_up, kc_down, kc_espace, etc, más fáciles de recordar :)
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: donald en 29 de Mayo de 2004, 08:42:06 PM
 
entonces...pasas ya del irrlitch?

neoengine soporta importado de md5, o sea, bones y pesos.Y hay un exportador de Blender en md5.

Es decir, eso está ya, no hay que esperar.Lo cual es un punbto bueno.


Tb hay un exportador directo de Blender, pero creo que aún no hay animación...

Neoengine soporta max y maya , tb. Indirectamente tb, mediante el md5.



Decís por aquí que ese es mejor de rendimiento y eso...



pues ese código lo entiendo hasta yo...XD


Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: AlexHdez en 29 de Mayo de 2004, 08:49:28 PM
 Viendo lo de

//display_text 0, 0, "Hello world!"

tengo dudas de si el // son comentarios o no...

Un saludo!
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Javi SJ Cervera en 29 de Mayo de 2004, 09:00:28 PM
 si si son comentarios. es k puse lod el display_text pa ver si estaba bien implementado, ya k lo k esto hace es añadir un elemento nuevo a un vector de STL k tiene todo slos mensajes k se deben escribir el siguiente frame. Cuando llega la hora de renderizar la escena, tras renderizar las camaras k haya activas, va leyendo y borrando los eleentos del vector k contiene los mensajes de print, e imprimiendolos sobre la escena.

Para sacar las capturas comente esas lineas, y por eso estan asi
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Javi SJ Cervera en 29 de Mayo de 2004, 09:01:56 PM
 Por cierto, m pasa una cosa curiosa... no m sale el boton "Edit" en el primer mensaje de este thread.  :blink:
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: egf en 29 de Mayo de 2004, 09:14:33 PM
 

buena trabajo men  (ole)

y es todo a base de codigo o vas a crear algun ineface para cargar las cosas lo digo por los grafistas que quieran pobarlo?
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Lord Trancos 2 en 29 de Mayo de 2004, 09:21:07 PM
Cita de: donaldentonces...pasas ya del irrlitch?

neoengine soporta importado de md5, o sea, bones y pesos.Y hay un exportador de Blender en md5.

Es decir, eso está ya, no hay que esperar.Lo cual es un punbto bueno.


Tb hay un exportador directo de Blender, pero creo que aún no hay animación...

Neoengine soporta max y maya , tb. Indirectamente tb, mediante el md5.



Decís por aquí que ese es mejor de rendimiento y eso...



pues ese código lo entiendo hasta yo...XD
Dicen que el Doom3 sale el mes que viene.... esperemos que no hayan cambiado mucho el formato ^_^;

(yo tb lo uso en mi "engine")
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: donald en 29 de Mayo de 2004, 10:59:02 PM
 hmm...poniéndonos en plan estadísticos, el md5 podría imponerse como lo hizo el md2 y luego el md3...el mds ha pasado sin pena ni gloria, de todos modos, siendo infinitamente mejor que esos dos, teniendo ya bones y pesos, así que vete a saber...

Usas el md5? Interesante...

Blender se está poniendo realmente interesante...un tipo está haciendo constrains de suelo, y pinning de bone, juder como lo consigaa...

El plugin de exportado de x está casi casi, pero al hombre le salen contínuamente problemas en la última fase...

Así que, al menos, ya con el md5, y sin pinn...euh, fijado de articulaciones al espacio global, hablemos en algo que se entienda... pues la verdad es que se convierte en una herramienta de personajes open source de lo más interesante. (para el que tenga paciencia...y le apetezca ;) )

Que yo sepa, el único engine gratuito qu eusa md5 de momento es Neoengine...

No sabía que la salida de doom3 era tan inminente...

der_ton tiene tb el importador md5 de Max, pero ha querido esperar a la salida de doom 3 para darlo. El exportador de md5 para Max lo sacó hace tiempo y sí se puede usar.

Así que en teoría se pueden animar personajes en Blender (yo paso de modelar en Blender, para eso hay importado..) , o en Max, con estos plugins, para Neoengine. Si encima dicen que es bueno y libre...pues oye.


tu engine está colgado en algún sitio?

Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Lord Trancos 2 en 29 de Mayo de 2004, 11:34:32 PM
 
Citar
Usas el md5? Interesante...

Indirectamente. Convierto el MD5 a un formato propio que es poco mas que una forma binaria del mismo.

Citar
der_ton tiene tb el importador md5 de Max, pero ha querido esperar a la salida de doom 3 para darlo. El exportador de md5 para Max lo sacó hace tiempo y sí se puede usar.

Es el que uso  (ole)

Citar
tu engine está colgado en algún sitio?

engine ? que engine ?  :P

Si te fijas en el post anterior puse "engine" con comillas.
Digo "engine" por no decir librerias.

Y no, no estan colgadas.

Pero vamos, si lo que te interesa es cargar MD5;
http://www.nowan.net/cb/3d  

Yo me "inspire" en ese codigo.  ;)
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Mars Attacks en 30 de Mayo de 2004, 12:38:07 AM
Cita de: JedivePor cierto, m pasa una cosa curiosa... no m sale el boton "Edit" en el primer mensaje de este thread.  :blink:
El mensaje deja de ser editable tras un cierto periodo de tiempo (¿una hora?).

En las capturas que has puesto, veo el suelo de la última como con una especie de DoF extraño. ¿Intenta ser un DoF o es alguna movida de las texturas?

En cualquier caso, está muy interesante el asunto. Seguiremos a la escucha.

Saludetes.
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Zaelsius en 30 de Mayo de 2004, 12:50:01 AM
 
Cita de: Mars AttacksEn las capturas que has puesto, veo el suelo de la última como con una especie de DoF extraño. ¿Intenta ser un DoF o es alguna movida de las texturas?
Parece un filtrado bilineal con las distancias entre niveles mipmap y la cámara mal calculadas.

Le pasa lo mismo a Irrlicht en DX9 en mi PC/Gráfica... por eso para el "Paco Jones" tuve que quitar el código de carga de texturas del Irrlicht(que era "manual") y usar las d3dx para cargar las texturas. Eso corrigió el bug visual. Puede que NeoEngine 3d sufra un bug similar.. no sé  :ph34r:
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: BeRSeRKeR en 30 de Mayo de 2004, 12:50:44 AM
 El efecto ese es el del filtro bilineal. Con un trilineal o un anisotrópico se solucionaría (aunque más chupa, claro :lol:).

Saludos.
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Zaelsius en 30 de Mayo de 2004, 12:53:07 AM
 Bersi fíjate que se ve exageradamente borroso.. un filtro trilineal sólo suavizaría las transiciones(que en este caso son muy visibles) entre niveles ¿no crees?

A ver si encuentro un post mio en el foro de Irrlicht con el mismo efecto..

Edit: lo digo pq con Irrlicht el trilinear o anisotrópico no me solucionó nada. Se nota que los niveles se aplican demasiado cerca de la cámara. Esta es la captura que hice en su dia para enviarsela a Niko..

(http://www.alu.ua.es/j/jgf8/temp/blurry.jpg)

PD: Sorry Jedive por infectar tu post  :P  
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: BeRSeRKeR en 30 de Mayo de 2004, 12:56:28 AM
 Aparte de lo que dices, creo que la textura tampoco ayuda demasiado. :)

Saludos.
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Lord Trancos 2 en 30 de Mayo de 2004, 01:38:53 AM
 A mi ese efecto me sucede cuando tengo los drivers de la tarjeta configurados para mejorar la "performance" en lugar de la "calidad"
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: BeRSeRKeR en 30 de Mayo de 2004, 11:19:56 AM
 Entonces el problema es que se genera una cadena de mipmaps muy pequeña, ¿no?. Por eso la transición entre uno y otro es tan acusada.

Saludos.
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Lord Trancos 2 en 30 de Mayo de 2004, 11:28:44 AM
 BeRSeRKeR, creo que has dado en el clavo.  (ole)  
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: ferminho en 30 de Mayo de 2004, 12:44:51 PM
 Volviendo al tema original del post, que os estais yendo un poco por las ramas xD

Pos decir que me gusta mucho la pinta que esta tomando, sobre todo teniendo en cuenta que yo voy a usarlo ;)  a ver si pronto tenemos algo mas avanzado :)

Las capturas mu chulas, pero a ver el tema del lightmap... >_<

PD: y mola mas el nombre de Smash :P  
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Javi SJ Cervera en 30 de Mayo de 2004, 01:04:36 PM
 
Citarentonces...pasas ya del irrlitch?
IrrLicht me gusta mucho, pero me gusta digamos que del modo "cuando madure será la leche". NeoEngine me gusta del modo "ya es la leche". Últimamente no se ve demasiada vidilla en ninguno de los dos, la diferencia es que para mi usar NeoEngine no significa que dependa en que el autor arregle dos o tres cosas que necesito en los próximos meses. OGRE es la caña tb, pero me quedé con NeoEngine porque tiene tools mucho mejores (nscemake es absolutamente genial, mientras que en Ogre tienes k andar importando a MIlkshape cada modelo y exportando a .mesh).

CitarEn las capturas que has puesto, veo el suelo de la última como con una especie de DoF extraño. ¿Intenta ser un DoF o es alguna movida de las texturas?
Es una movida del filtro bilinear, como ya se ha dicho posteriormente. Tengo que ver cómo se aplica filtrado anisotrópico en el NeoEngine.

CitarAparte de lo que dices, creo que la textura tampoco ayuda demasiado.
Lo dices pro la captura del IrrLicht o por la del Sneak Behind? En Sneak Behind yo creo que el grafista ha hecho un buen trabajo con las texturas. Va a tener un aspecto cartoon y creo que da el pego :)

CitarLas capturas mu chulas, pero a ver el tema del lightmap...
Exporté los mapas de .bsp a .nsce con el BSP Factory. Si exportaba con lightmap, el neo petaba, aunque no he sido capaz de encontrar ningún bug en el exporter... tal vez sea cosa del neo?

Gracias por hacer que se vuelva a hablar de Smash en este thread, Fermi xDDD
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Javi SJ Cervera en 30 de Mayo de 2004, 01:22:31 PM
 (http://www.galeon.com/jedive/gallery/sb_smash1.jpg)Mejor asi?

[EDIT]Si no veis la imagen cambiada, actualizar la página con Ctrl+F5 (rula en explorer y Firefox, no se en los demas), que es porque os sale la imagen de cache en lugar de la nueva [/EDIT]
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: BeRSeRKeR en 30 de Mayo de 2004, 01:26:45 PM
 Muchísimo mejor ahora. ¿Qué filtro le has puesto?.

Y con respecto a lo de que la textura no ayudase no me refería a que las texturas estén mal, ni mucho menos. Lo decía porque con ese tipo de textura pones a prueba el filtro de textura. De hecho las pruebas que se suelen hacer para demostrar la calidad del filtrado son de ese tipo (tipo grid).

Saludos.
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Javi SJ Cervera en 30 de Mayo de 2004, 01:42:18 PM
 anisotropico 8x y FSAA 4x
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Javi SJ Cervera en 30 de Mayo de 2004, 03:47:25 PM
 Ale, he actualizado tb las otras dos shots. Si no las veis cambiadas, lo mismo de antes, Ctrl+F5

(http://www.galeon.com/jedive/gallery/cz_smash1.jpg)

(http://www.galeon.com/jedive/gallery/cz_smash2.jpg)
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: l_draven en 30 de Mayo de 2004, 04:07:52 PM
 GENIAL compi ya sabes como de costumbre!!!

Este smash va a ser la caña. Os lo digo yo  (ole)

Cuando tenga terminado el nuevo mapa y lo metamos en el smash ya veras ya ;-).

Lo dicho, que GENIAL Jedive!!!!!!. Sigue asi.


Saludetes.
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Bleed4me en 30 de Mayo de 2004, 04:26:29 PM
 ya ves! esto se empieza a poner calentito! cuando smash esté completo tendremos un mar de posibilidades!    jedive eres el amo!!!

ahora solo falta ver los mapas con lightmap, ya ke kon iluminación "plana" pierde todo, las texturas, los filtros, el aa.... todo en general...
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: Mars Attacks en 30 de Mayo de 2004, 08:48:20 PM
 Bien, mucho mejor. A ver esos resultados finales con lightmaps y todo ;)
Título: Lenguaje Smash: ¡¡¡ Primeras Capturas !
Publicado por: donald en 30 de Mayo de 2004, 10:34:25 PM
 
Interesante eso que cuentas de Neoengine. Y más aún por el lenguaje que has creado.

A mi el Neoengine me interesa pq tiene, parece, resuelto el importado de animaciones desde Blender. Como grafista que soy (veo código y me asusto)

Y es la enésima vez que leo que este engine es potente.

La putada es que estos engines no tengan un editorcito gráfico para construir el grafista el nivel, pero ya caerá...

Claro que...no sé, igual el Blender hace ya las veces de esto. Sóo que las colisiones(no he vuelto a leer sobre los progresos del plugin delightmaps)...como no le metan algo al importador para que detecte determinado tipo de cajas (por el nombre por ejemplo) como cajas de colisión... Lo mismo con portales de visualización.

Blender sería un editor cojonud$ (me he autocensurado) , y de paso, como exportas la animación en md5 para personajes, pues es que no sales de la herramienta.. :)

Ta interesante