Motor 3D para FreeBasic actualizado (por mi)

Foro dedicado a la programación en todo tipo de sistemas clásicos.
jepalza

Motor 3D para FreeBasic actualizado (por mi)

Mensajepor jepalza » 05 Mar 2013, 19:49

Llevo un tiempo siguiendo el motor gráfico 3D basado en IRRLICHT para freebasic, denominado "Wrapper" (osea, versión recortada). El "Irrlicht" es un motor 3D para generación de juegos y aplicaciones 2D y 3D gratuíto, que no tiene nada que envidiar a otros como el Panda o el Ogre3D (salvando distancias). Pero ese motor se hizo orientado a la programación en C/C++. Un buen día, a un señor (Frank Dodd) se le ocurrió la idea de compilar lo mas importante del motor 3D para que pudiera usarse en el FreeBasic (el Lenguaje Basic libre, compatible con el QB45). Se llevó los comandos mas útiles hasta conseguir un motor 3D para Basic sencillamente alucinante, que permite locuras 3D usando un lenguaje sencillo.
Pero por algún motivo que desconozco, Frank Dodd dejó de actualizar el motor hace unos 3 años. Su página web (ver AQUI) sigue dejando descargar todo el motor entero, con ejemplos funcionales, en version 1.7.1, que es donde la dejaron en 2010. Desde entonces, el Irrlicht principal, del cual parte este wrapper ha ido evolucionando hasta llegar a la versión 1.8, pero eno así el wrapper que quedó en el olvido.

Pero resulta, que hace poco, un tio cogió los fuentes (son de dominio público) y les ha metido una simple actualización de algunas funciones, pero manteniendo el "viejo" motor version 1.7.1. Al verlo, me he acordado de las horas que me tiré en 2011 programando cosillas 3D con él, y me he puesto manos a la obra. He estado el fin de semana investigando como actualizar este "obsoleto" motor a la mas reciente version 1.8 (salida en diciembre pasado), y lo he coseguido. No ha sido tan difícil.

He partido de la revisión que le ha hecho "Rcobra", un forero de Freebasic, y le he incluído las mejoras de la V1.8. No es gran cosa, pero al menos, está actualizado y listo para seguir incluyendo nuevos comandos. Por ahora, solo lo he actualizado, pero en el futuro, si tengo tiempo, iré añadiendo comandos extras.

El foro donde he publicado el fuente y las DLL es este:
Enlace a la actualizacion

En la página de Frank Dodd (la que he puesto arriba), se puede bajar el paquete principal. Ademas, necesitaremos el FreeBasic (se puede coger de AQUI, con un IDE incluido y listo para empezar a programar).

Para actualizar mi motor, solo hay que sobreescribir las DLL del paquete de Frank Dodd por la mia y por la original , y listo.
(son las DLL de mi carpeta "IrrlichtWrapper.DLL" y la "Irrlicht.DLL" de la carpeta "irrlicht-1.8\bin\Win32-VisualStudio")

Una imágen de ejemplo de lo que se puede hacer con este motor (y todo en Basic)
Adjuntos
demo_irrlicht_1.8.JPG
demo_irrlicht_1.8.JPG (43.7 KiB) Visto 7521 veces

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor radastan » 05 Mar 2013, 22:59

¡Jorl! menuda pasada, lo que molaría tener un motor de estos en un ordenador de 8 o 16 bits con sus convenientes limitaciones. Ya se que es burra la idea, pero también lo eran las instrucciones en BASIC para manejar la pantalla a tu antojo en el Sam Coupé y mira como van.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor mentalthink » 06 Mar 2013, 00:32

Ostia Jepalza pues gracias, voy a ver si podría con algún metodo meterselo al GLBasic, aunque lo dudo porque usa las OpenGLes 1.0 para que funcione en todos los mobiles, como dea DirecX, como que va a ser que no.

Me recuerda un poco al motor del DarkBasic, de hará unos años, la verdad que añadirle florituras a los motores en teoria no es demasiado complicao, en OpenGL es liarte a hacer locuras matemáticas, y el tema está en los Shaders, pero creo que eso es más chungo que el copón, le llaman el ASM de las gráficas.. Vamos esto creo, quizás luego se compila cosa mala, hace un par de dias ví una comparación de motores de render, por el tema de cuando salgá la PS4, si no habéis visto un juego llamado WatchDog... es para flipar, no solo a nivel gráfico, es que són peliculas pero interactivas como el que dice... bueno lo que decia, solo en unos 10 años ha avanzado tanto el 3D, que es un simil aunque quizás un poco pasandose de la raya , como cuando hubo el salto del 2D al 3D, yo más o menos lo veo asi, vi hace poco los primeros call of duty, joder si las caras eran peores que las del ECCE Homo... <XX

Avatar de Usuario
Hark0
Amiga 1200
Amiga 1200
Mensajes: 1695
Registrado: 11 Jul 2012, 23:44
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: (Otro)
Primera consola: (Otro)
Ubicación: Cornellà de Llobregat - Barcelona
Contactar:

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor Hark0 » 06 Mar 2013, 08:17

Muy interesante!

Copiado de la página de Freebasic:
"The compiler, fbc, currently supports building for i386-based architectures on the DOS, Linux, Windows and Xbox platforms."

¿Sabes si existe alguna posibilidad de compilar para otras máquinas? ARM... etc?
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor na_th_an » 06 Mar 2013, 09:13

Conozco este trabajo. Es impresionante. Sólo quiero hacer una puntualización:

jepalza escribió:denominado "Wrapper" (osea, versión recortada).


El término "wrapper" no se refiere de por sí a una versión recortada, sino a una API que "envuelve" (wraps) a otra API. Por ejemplo, si una biblioteca está pensada para ser usada desde lenguaje C y es necesario un soporte a muy bajo nivel (poder usar punteros y cosas así) y quiero que usuarios de otro lenguaje de más alto nivel puedan usarla, construyo un wrapper que "oculte" todas estas características gestionándolas de forma interna, de forma que los usuarios no tengan que "bregar" con ellas. Otro ejemplo es crear una biblioteca que ofrezca una funcionalidad apoyándose en la funcionalidad que ofrezca otra anterior. Y, en muchas ocasiones, el Wrapper sirve como "macro", sin eliminar la posibilidad de usar, directamente, la biblioteca original (por ejemplo, yo tengo una biblioteca con las funciones a, b, c, y d, pero me doy cuenta de que, en muchas ocasiones, se hace una llamada r = a(b(x)) y luego s=c(r), por lo que construyo un wrapper con una nueva función "e" que hace precisamente eso).

Por ejemplo, una de las primeras bibliotecas "de juegos" que usé en Windows fue Allegro que empezó siendo, en una de sus versiones, un wrapper de DirectX7, empleando características de las capas DirectDraw, DirectInput y DirectSound, entre otras. Allegro, en su versión MSDOS, era una biblioteca "pura", o sea, implementaba todos sus métodos. En su versión de Windows, la mayoría de los métodos eran llamadas a DirectX, de ahí a que fuese considerada un wrapper.

La idea de "versión recortada" que tiene mucha gente es porque, por lo general, los wrappers no son completos, sino que solo "exportan" las características más importantes y que el 90% de la gente va a usar. Pero, por definición, un wrapper no tiene por qué ser una versión recortada.

Avatar de Usuario
josepzin
Amiga 2500
Amiga 2500
Mensajes: 3103
Registrado: 12 Ene 2009, 14:36
Sistema Favorito: C64
primer_sistema: ZX81
Ubicación: Carthagonova
Gracias dadas: 4 veces
Gracias recibidas: 63 veces
Contactar:

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor josepzin » 06 Mar 2013, 09:27

na_th_an escribió:Conozco este trabajo. Es impresionante. Sólo quiero hacer una puntualización:

jepalza escribió:denominado "Wrapper" (osea, versión recortada).


El término "wrapper" no se refiere de por sí a una versión recortada, sino a una API que "envuelve" (wraps) a otra API.


Lo mismo pensé yo, un wrapper es una capa, pero como no soy saviente del tema :P

jepalza

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor jepalza » 06 Mar 2013, 10:04

Yo pensaba igual. Pensaba que era una versión reducida, por que siempre que he probado una "wrapper" has sido un compendio de los mejores, pero no todos, comandos.

Escribo para puntualizarme un fallo. Me he encontrado dos errores a mi mismo y mi mecanismo, uno en los "shaders" y otro en las "particles" (siento lo del inglés, pero es el término empleado en el mundillo). Sin querelo ni beberlo, me he cargado ambos módulos. El de los "shaders" ya está reparado , pero el de las "particles" me estoy peleando con ellas aún. He borrado la descarga puntualmente, mientras lo arreglo (si es que puedo, que es fácil decirlo).
Esto me lleva a pensar, que pueden haber mas fallos. Es un salto gordo, son tres años sin actualizarse, y algunos comandos en la nueva V1.8 han cambiado tanto, que ahora se deben ejecutar de otro modo, y eso no me lo esperaba.

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor mentalthink » 06 Mar 2013, 11:58

Bueno sobre lo del término Wrapper, yo eso de capa no se ni lo que és, pero el término cuando lo utilizan en GLbasic, es por ejemplo, cuando han cogido las Box2d, esa libreria de físicas, con lo que hacen casi todo lo que tengas físicas 2D, y digamos haces que esas funciones trabajen en tú lenguaje...

Sobre el término wraper, creo que significa literalmente ajuste, no?¿, lo digo porque en 3D, cuando haces que los objetos los puedas pintar más o menos a tú gusto se le lllama a esa historia Unwrap...

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor na_th_an » 06 Mar 2013, 14:05

Wrapper, literalmente, es "envoltorio", de "Wrap", "envolver" :) Pero dejémonos de off-topic.

http://www.wordreference.com/es/transla ... rd=wrapper

Lo único que siempre me a echado para atrás a la hora de ponerme a cacharrear con las 3D es el tema de que para cualquier cosa necesitas un equipo muy grande y mucha dedicación. No es algo para hacer tú solo, como los juegos de 8 y 16 bits. Aquí hacen falta modeladores, grafistas, constructores... por un tubo. Y eso me echa para atrás.

jepalza

Re: Motor 3D para FreeBasic actualizado (por mi)

Mensajepor jepalza » 06 Mar 2013, 14:39

Yo no me dedico a diseñar, solo a programar lo que permite programar, valga la "rebuznancia".
De 3D como mucho, me gusta trastear con mundos hechos por otros, uq eme encanta cargarlos en un motor 3D, alterarlos y moverme por ellos como si fuera un paseante. Muchas veces, los mundos 3D de los juegos, no los recorres al 100% y siempre te pierdes detalles y zonas, por vas a jugar, y pasar fase. A mi me gusta recorrer esos mundos sin peleas ni agobios. Y luego está el tema 3D en general, aplicado al CAD, y ahí sí que hago cosillas, por que no necesito gráficos, solo matemáticas. Por ejemplo, lectores/traductores de sistemas 3D, visualizadores, editores de CNC, y todo eso en 3D.


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados