Sunday, December 7, 2008

Un par de ejemplos

Aqui cuelgo un par de ejemplos sobre como usar el engine. Espero bug reports eh, jeje
Descarga

Revision 0.2.5

Despues de un tiempo inactivo, retomo el proyecto. He revisado una por una cada linea de codigo del engine, haciendo algunas mejoras y optimizaciones y eliminando varios bugs. Por tanto he decidido publicar una nueva version, mucho mas estable, y que trae algunas novedades, aunque aun no todas las que he mostrado en el blog.
Las novedades mas destacadas son por un lado la inclusion del archivo "RevPhysics", que permite por primera vez la deteccion de colisiones entre objetos, y por el otro una modificacion radical en el sistema de funcionamiento del engine, que libera al programador de la necesidad de trabajar con root. Olvidate de newRoot, AddObj, etc, etc... Ahora crear objetos 3D en tu wii es tan sencillo como llamar la funcion NewObj, asi de simple. Espero que lo disfruteis y le saqueis partido, podeis descargarla Aquí

Monday, September 29, 2008

Nuevo 2D

Bueno, me siento en cierta medida obligado a dar una explicación sobre los continuos retrasos de esta nueva versión del Motor. En cierta medida se debe a que he decidido que la voy a sacar una versión bastante completa de una vez, algo muy cercano a la versión 1.0
Una de las cosas que Pienso hacer es la remodelación del sistema de 2D (muy relacionada con sustanciales mejoras en el 3D, pero eso es otro asunto). Tengo la intención de ofrecer un subsistema de 2D a la altura de las librerías gráficas 2D mas completas que hay ahora para wii, o incluso superior. No me extenderé mucho mas por ahora, no hasta poder mostrar algunas capturas de pantalla aceptables. De momento me conformo con enunciar algunas de las características básicas que incorporara, frente a la simplicidad actual:
-Multi layer efectivo
-roto-zoom
-Imágenes animadas
-Paneles compuestos
-Texto

Ya vereis las imagenes.

Tuesday, September 9, 2008

Iluminacion, que ya tocaba xD


Primera captura de iluminación en el Revolution Engine. Esta característica estará disponible a partir de la versión 0.2 del Engine. Por ahora el efecto se aplica 100% por hardware pero éste esta limitado a tan solo 8 luces, por tanto añadire mezclado por software de luces extra ilimitadas (bueno, todas las que aguante la wii).



Edit: Añado una nueva captura para mostrar que las luces no solo funcionan en escala de grises xDD

Thursday, August 28, 2008

Fisica 01

Por si pensabais que ya no estaba trabajando en nada o que habia dejado de lado el proyecto...aquí esta la prueba de que no es así. Ahora mismo estoy trabajando en un motor de fisica y detector de colisiones para el engine, que sera incorporado en la version 0.2 (que esta cada vez mas cerca). Se trata de un pequeño video demostrativo que demuestra que el sistema funciona y es mas o menos estable (aun tiene mucho que mejorar). El video muestra una bola animada dinamicamente rebotando sobre otra estatica.

Tuesday, August 19, 2008

Revision 0.1.5

Ya esta disponible la nueva versión del Revolution Engine. Esta versión es en realidad
una revisión de la versión anterior, con algunas optimizaciones y algunos fallos reparados. Podéis descargarla ya de aquí. Esta revision incluye dos nuevas Demo-Tutoriales para que aprendais a utilizar el engine, la primera es para trabajar con 2D y con el mando y la segunda es para aprender a cargar modelos en 3D.

Thursday, July 24, 2008

Release 0.1

LLegó por fin el esperado momento: Lanzamiento de la version 0.1 del Revolution Engine by technik. A continuacion os detallo las caracteristicas mas importantes:
-Capacidad para renderizar completas escenas en 3D, con multitud de objetos dinamicos en ella, cada uno con una textura y un modelo en 3 dimensiones.
-Capacidad para renderizar sobre el 3D una capa de imagenes en 2 dimensiones para utilizar como puntero, botones, barras indicadoras, o cualquier cosa que se te ocurra.
-Sistema de camaras basado en vectores, para poder hacer seguimientos en tercera o primera persona y desplazar tu posicion en el espacio virtual.
-Carga de modelos desde formato propio, facil de entender y sencillo. Caulquiera podra crear sus propias herramientas y exporters facilmente.
-Carga de texturas en formato png gracias a las librerias pngu de frontier. Muchas gracias.
-Grandes posibilidades de ampliacion para futuras versiones.

Ahora, paso a detallar algunas de las cosas que le faltan y que espero ir corrigiendo segun valla sacando nuevas versiones:
Para el 2D:
Alfa y transparencias, uso de layers, proveer al usuario de menus personalizados, botones, barras con desplazamiento, scrolls, y un largo etcetera.
Para el 3D: Luces (que se me han quedado fuera de la release al final), otros cargadores de modelo y exporters), shaders, multitexturas, materials, bump mapping, particulas, animaciones por vertice y con esqueleto, revision del formato de modelo. Scene managers, formato propio optimizado para terrenos, objetos, animaciones, bodies...Todo un sistema de fisica por implementar. Head-tracking y otros alicientes relacionados con las amplias posibilidades del mando.
Optimizaciones por todas partes, ordenar un poco el codigo y limpiarlo, etc, etc, etc...

Bueno, por otra parte falta hacer ejemplos y documentarlo todo, pero creo que lo mejor es que el engine sea publico ya porque creo que asi sere capaz de mejorarlo mucho mas rapido. Ademas lo mas importante es que ya hay una base mas o menos solida sobre la que trabajar, solo queda mejorar ;)

Este es el enlace de descarga:
Revolution Engine Version 0.1

Friday, July 18, 2008

Luces, Camaras,Accion

O mas bien 2D, camaras y accion, porque las luces ya estaban de antes xD.
Pues si, esta entrada es para decir que el 2D ya es estable, queya he escrito el sistema de camaras (aunque probablemente lo reescriba para futuras versiones porque aun no usa quaternions, pero esta quiero sacarla ya asi que asi se queda xD)y que ya he probado los mandos con el engine para asegurar la compatibilidad. Aqui teneis un video que lo demuestra



Que a que me dedico ahora y porque no lo saco de una vez?. Que que me queda si ya tengo 3D, 2D, etc? Bueno, aun me queda ponerle una fisica basica (por lo menos deteccion de colisiones con bounding boxes y bounding spheres), meterle sonido, y ajustar el formato de modelos que usara. Que al final no sera wavefront object pero sera muy similar en la primera version (mas adelante se parecera mas a un MD5).

Espero que os guste y que pongais vuestros comentarios.

Wednesday, July 16, 2008

Subsitema de 2D

Bueno, esta vez hare una entrada cortita porque el avance es pequeño aun. He añadido ya el subsistema de renderizado 2D al engine. Ya se pueden mostrar Imagenes PNG sobre la pantalla. De momento es muy primitivo y lo unico que hace es mostrar las imagenes en la pantalla, en el lugar que se quiera, encima de lo que halla renderizado el sistema de 3D. Es primitivo pero muy potente porque trabaja sobre una lista de objetos 2D. Esto permitira la implementacion de fisica, botones, scrolls, textos, degradados y otros efectos de forma muy sencilla y limpia. Ademas es mas rapido y ocupa menos memoria que hacer lo mismo en GRRLib porque en vez de crear un buffer intermedio, cargarlo como textura, aplicarlo a un Quad, y luego renderizar este quad (si, todo esto lo hace GRRLib), trabajo directamente sobre los pixels del EFB, con funciones de GX para el acceso a este. Todos los pasos resumidos en uno y ademas eliminamos la necesidad de un buffer intermedio, resultado mas rapido y gastando menos memoria. Es por esto que en un futuro el engine puede ser tambien una buena opcion para quien quiera desarrollar juegos o aplicaciones en 2D. Pero eso sera en el futuro porque por el momento el soporte es muy basico. Ya colgare unos renders y le pasare a anarcadio un video para que lo cuelgue ;) espero que os haya gustado la idea.

Thursday, July 10, 2008

Videos de las Demos.

Gracias a Anarcadio, del foro de Elotrolado.net, ya tenemos en Youtube lo videos de las demos que han salido del Revolution Engine. De ahora en adelante se iran colgando los videos de las futuras demo, aunque no por ello vamos a dejar de colgar las demos para que todos podais probarlas en vuestras propias Wii. Sin mas dilacion aqui os dejo los demops de las 3 demos que han salido hasta ahora , espero que os gusten.





Friday, June 20, 2008

Demo de Iluminacion (I)

Aun no he podido dar los ajustes finales a la version de desarrollo del Revolution Engine. Pero mientras sale esa version os dejo aqui la primera demo de iluminacion. Es tan sencilla como podia ser, calcula la luminosidad por software para cada vertice. Es simplemente para que sepais que es en eso en lo que estoy trabajando ahora. Actualmente ya soporta calculos por Hard de luminosidad, pero eso no esta incluido en la demo porque asi es mas estable de momento. Espero que os guste, pronto actualizare con una nueva version acelerada.
Como siempre agradecer a frontier por sus pngu, usadas en esta demo, y a los creadores de libogc, sobre las que esta desarrollado todo el engine, y del homebrew channel, que me ha simplificado mucho la tarea de desarrollo. Tambien gracias a todos los que estais siguiendo este proyecto y que me apoyais en el.

Nota: La demo trae incluidas las texturas que necesita para funcionar. No estoy seguro de donde hay que colocarlas, yo las coloco en la raiz porque utilizo el ftp, pero creo que si colocas el dol dentro de una carpeta en App/ siempre tienen que estar en la misma carpeta que el .dol

Demo

Wednesday, June 18, 2008

Formato Interno

Bueno, como ultimamente no tengo tiempo por culpa de los examenes no estoy haciendo nada relevante con el engine, pero creo que mi falta de tiempo no deberia ser motivo suficiente para su paralizacion. Por esta razon he decidido fijar un pequeño estandard para que todos podais hacer vuestras contribuciones, ya que me consta que hay interesados en colaborar. Para empezar he decidido fijar un formato de modelos que use el engine internamente para mostrar modelos 3D. Asi podreis todos los que querais podreis colaborar creando vuestras propias funciones de creacion de modelos. Empecemos:
Por ahora el engine utiliza internamente para los modelos la siguiente estructura:

typedef struct REV_Mesh{
u16 NVerts;
u16 NFaces;
u16 NCoords;
u16 NNormals;
f32 * Vertices;
f32 * Coordenadas;
f32 * Normales;
u16 * Lista;
} MESH;


NVerts debe contener el numero de vertices que tiene el modelo.
NFaces el numero de Caras.
NCoords el numero de coordenadas UV para cargar texturas.
NNormals el numero de normals.
Simple, ¿no?
Vertices es un puntero a un Array de f32. Esta array debe estar alineada a 32b y contiene las coordenadas de los vertices en el espacio ordenadas como x, y, z.
Lo mismo sucede con Coordenadas (almacenadas como U,V) y los normales.
En cambio lista es un poco mas complicado. Al principio pensaba poner Display lists. Pero he decidido que para las primeras versiones del engine no es necesaria demasiada optimizacion en este sentido. Por tanto en vez de haceros crear displaylists (con el trabajo que ello conlleva), y para que os vallais familiarizando con el Revolution Engine, he implementado una pequeña variante de las display lists. En futuras versiones esto cambiara, pero me parece una buena forma de comenzar. Sin mas dilacion:
List debe apuntar a un Array (no tiene por que estar alineado) de u16. Estos U16 son los indices de los vertices que compondran el modelo. El numero de indices total debe ser multiplo de 9, y vendran dados en este orden: Cada grupo de nueve indices representan un triangulo del modelo final. Se dividen en tres grupos de 3 indices cada uno (cada grupo se corresponde con un vertice del triangulo, y deben aparecer en el sentido contrario a las agujas de un reloj analogico para que se muestren desde el frente y viceversa (por aquello del backface-culling). Dentro de cada grupo de 3 el orden sera:
Indice de Posicion, Indice de Normal, Indice de Coordenadas UV.

Con el fin de que podais probar vuestras funciones sacare dentro de unos dias (2 o 3) Una version Alfa de desarrollo del engine. Con esta version vosotros podreis crear vuestras propias funciones y probarlas, pero ya podeis empezar a crear funciones del tipo creacion de primitivas, cargadores de modelos, etc...

Tuesday, June 10, 2008

Muchos cubos

Pues por votacion popular he subido otra demo de cubos, esta vez en vez de uno se ven un buen monton de cubos (mas de 400, que fue lo que me pidieron jeje) Todos con textura desde la SD y toda la parafernalia. Además tambien me habian pedido que colgase el source para poder ir viendo como funciona, así que aqui lo pongo, para que veais que usar el engine sera sencillo (cuando salga xD):

/////////////////////////////////////////////////
//Este archivo forma parde del Revolution Engine.
//Coded by Technik
/////////////////////////////////////////////////
#include
#include
#include
#include
#include
#include
#include

#include "REV.h"

int main()
{
VIDEO_Init();
WPAD_Init();
REV_Init();

GXTexObj texObj1 = CargarTextura("plasma.png");
Object * auxiliar = NULL
u16 i,j;
f32 px= -105.0f, py = 0.0f;
MESH * cubitos;
cubitos = Cubo();
Root * mRoot = NewRoot();
for(j=0;j<20;j++)
{
px = -105.0f;
for(i=0;i<7;i++)
{
Auxiliar = NewObj(cubitos, Vtr3(px, py, -20.0), Vtr3(0.0, 0.0, 0.0), 4);
SetRotSpeed(Auxiliar, Vtr3(-1.0f, 1.0f, 0.0f);
AddObj(mRoot, Auxiliar);
px+=35.0f;
}
py-=60.0f;
}

while(1) {

WPAD_ScanPads();

if (WPAD_ButtonsDown(0) & WPAD_BUTTON_HOME) exit(0);

// do this before drawing
REV_Process(*mRoot);
}
}


No esta muy organizado, la verdad, se puede hacer mas bonito, pero es que lo he copiado directamente del programers notepad, y las cosas las voy poniendo segun las necesito. Comentadme que os parece, y si pensais que deberia cambiarle algo. Todos los comentarios son bienvenidos.


Muchoscubos


PD: Siento que no se vean los include, pero es que me da problemas el HTML

Monday, June 9, 2008

Estrenando el blog os cuelgo la primera demo con texturas. Para seguir con la tradicion es un cubito dando vueltas jejeje. Estamos un paso mas cerca de poder crear los primero juegos! Lo proximo que hare (ya mañana) sera empezar a cargar modelos 3ds. Cuando logre eso a lo mejor os publico la primera version del engine.

Demo del cubo
Iba yo a crear un blog y resulta que todas las url estaban cogidas con blogs en blanco...sospechoso...pero me da exactamente igual jaja sera por imaginacion y por nombres xD
En fin, que os he creado este blog para ir poniendo todo lo que haga nuevo en el engine. Esto no quiere decir que valla a dejar de usar el hilo de EOL, pero es que ya las demos son demasiado grandes para adjuntarlas, asi que aqui os las podre ir colgando mejor.