RayCasting - Paredes a dos alturas, suelos y techos a 25 fps

Atari 520/1040 megaST

Moderador: Fundadores

Responder
Avatar de Usuario
masteries
Aspirante a demonio
Aspirante a demonio
Mensajes: 395
Registrado: 08 Sep 2017, 12:47
Has thanked: 37 times
Been thanked: 38 times

RayCasting - Paredes a dos alturas, suelos y techos a 25 fps

Mensaje por masteries »

Estando estos días atrás,
intentando dar consejos sobre la utilidad que tiene aprovechar los 4 MB de RAM de un STE;
y el uso de formatos de sprites avanzados... al autor de Dread... y habiendo caído los consejos en saco roto,
pues no se enteraba de nada de lo que le decía...

Pues me puse, un poquito manos a la obra, para comprobar si los consejos podían ser útiles o no,
tal vez me estaba equivocando...


-La idea nace de eliminar de la ecuación el cálculo en tiempo de ejecución, de la textura a dibujar;
eliminando también el incomodísimo "Chunky to Planar"... si estas máquinas son planares, hay que trabajar en planar.

-Segundo concepto aplicado, pese a que parece un mundo 3D, hay que seguir conformándolo en base a tiles 2D;
la ventaja de los tiles 2D, es que ya están calculados; la desventaja es que disponer de tiles 2D para un amplio repertorio
de rotación y escalado, consume una memoria importante. Pero los 4 MB de un STE vienen al rescate.
Los tiles están prerrotados para posiciones de 8x y 16x píxeles.

-Como te ahorras el tiempo de calcular qué dibujar, y cómo transformar de chunky a planar; pues te queda mucho más tiempo
para preparar el dibujado y para dibujar.

-El mezclador de audio de 3 voces a 12.5 KHz sigue en funcionamiento :)



He aquí el resultado, me he basado en el motor raycasting que mejor he podido comprender:

Imagen


Imagen


La prueba de concepto utiliza "Deferred Rendering", primero se compone el mapa de tiles, lo que tarda muy poco. Y a continuación se copia mediante blitter sin máscaras, son transferencias de datos puros y duros. Los tiles uno a uno a un frame buffer, componiendo la imagen.
Cuando ésta termina de componerse, se cambia el frame buffer a mostrar en el siguiente cuadro.

-Resolución de 256 x 144 píxeles reales. 16 colores.

-Utilizar texturas de alta resolución, y habiendolas escalado "too fast too furious" ha dado lugar a un fuerte aliasing,
cuando los tile-textura se dibujan como más lejanos. Hay que simplificar el escalado e incluso las rotationes de
los tile-textura; no es necesario disponer de tantísimas muestras para suelo y techo, de paso se ahorra memoria y minimizas el aliasing.


El arma es un sprite EMX2 sin prerrotaciones, sólo se puede dibujar a intervalos de 16x píxeles. No es problema para el arma.

Aún no se ha metido sprites al asunto, serán EMX2 preescalados y con prerrotaciones de 8x o 4x píxeles.

Hay problemas de cuelgues debido a que utilizo en gran parte las transferencias de datos al modo EMX2,
el colega DML tendrá que ayudarme a ver por qué salen bombazos de vez en cuando.


Ya retomaré esto más adelante, antes va Metal Slug y otros juegos...


Espero que os guste,
Vendo memorias trapdoor para amiga 500 y 500 Plus:
1MB : viewtopic.php?f=50&t=7107
512 KB: viewtopic.php?f=50&t=7022
Responder

Volver a “Atari”