Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Efecto "ondas" o "burbuja" en Direct3d

Iniciado por Loover, 19 de Marzo de 2008, 10:54:13 AM

« anterior - próximo »

Loover

Bastaba con un: "uso un DrawPrimitiveUP() por sprite", jajaja. Que es como lo hago yo tb.

Lo que tengo yo es una clase "entidad" a la que le puedo asignar una superficie (un sprite que he taselado (o no), no confundir con superficies de direct3d).

Luego esa entidad tiene numerosos métodos: SetPos, SetRotation, SetFade, SetTint, SetBoundingAreas, etc, etc.

Luego ordendo las entidades por su valor z, en el manager de entidades. A la hora de dibujar (con un método al que el usuario llama cuando él quiere), recorro dicho manager, para cada entidad:

- Función de transformación (rotaciones, escalados, traslaciónes, mirroring, etc)
- Función de atributos de color (fades a un color, tintes a un color, transparencias, filtros, etc).
- DrawPrimitive

Lo bueno y curioso, es que las funciones de transformación y de atributos de color, me valen igual para las entidades 3d (modelos .x) :)

Hablando con los del Harvest, lo que hacen ellos es transformar los vértices de los sprites por software, y guardarlos en un array ya transformados, vamos, que no envian la matriz de mundo a la tarjeta. Así puede agrupar por sprite y hacer un DrawPrimitiveUp de todos los que tengan el mismo sprite.

Que creo que es lo que comentaban prompt y Ak47. Lo cual nos obligaría a hacer muchos cambios. Voy a hacer unas cuentas pruebas tochas, a ver si puedo tener en pantalla tantos bichos como los del Harvest :D
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

AK47

Hombre, es que si el rendimiento es bueno con el sistema que usas actualmente, yo no lo cambiaria. Sobre todo si requiere muchos cambios... Como dijo uno alguna vez, al final "nobody cares how you engine is done" ;)

[EX3]

Cita de: "Loover"Bastaba con un: "uso un DrawPrimitiveUP() por sprite", jajaja.
Encima que me tomo la molestia de explayarme en la explicacion tecnica de "la poesia" que es la implementacion del render de dx_lib32, si es que... xDDDD

Cita de: "Loover"Que creo que es lo que comentaban prompt y Ak47. Lo cual nos obligaría a hacer muchos cambios.
A mi al menos no me merece la pena invertir mas tiempo en Visual Basic 6.0 con dx_lib32 y si en C# con el motor del juego, total, los efectos si no puedes aplicarlos te buscas las castañas para simularlos minimamente, recuerda lo de las luces dinamicas en el TLSA.Core ;)

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

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

Loover

IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Loover

¡Funciona! Muy, muy chulo en movimiento. Muy... "Aquaria" :D

IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

[EX3]

Hey, ha quedado bien :) Un test para verlo en movimiento seria la caña ;)

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

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

Loover

¡Sí! Hay que preparar algo chulo. Ahora que ya he llegado por fin a la versión  1.0 voy a preparar los tutoriales. Y ahí pondré varios tests :)

Si te interesa implementarlo en tu motor avisame que te pase el código fuente, es relativamente sencillo.
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

[EX3]

La verdad que curiosidad me entra por ver como calculas las variaciones de los vertices, por que la verdad, con un pequeño apaño en la dx_lib32 (variar la funcion de dibujo de sprites en perspectiva para que acepte valores distintos para lo 4 vertices) podria intentar armar de forma similar el efecto :)

Podrias subirlo como COTW, que anda un poco abandonada esa seccion y codigos como estos siempre llaman la atencion :D

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

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

Loover

Pues mover los vértices haciendo el efecto onda es lo más sencillo. Son 3 líneas de código: un for anidado y un SetPos usando una función sinosuidal.

Pero vamos, ese es solo uno de los muchos efectos que puedes hacer. También podrías usar dichos vértices en un sistema de física y simular telas. O dibujar al estilo del Aquaria, serpientes y tal (mallas subdivididas verticalmente).

Toy preparando el tutorial ;)
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

[EX3]

Lo interesante es que se podria aplicar a nivel de escena en un tileado, por ejemplo para simular el efecto submarino como me supongo hara el Aquaria :)

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

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






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.