Ecalius escribió:Muy buenas!!!
HEXEN, y HERETIC, son juegos que me marcaron en el mundo del PC, esas sensaciones realistas en primera persona, como introducirte en un pequeño mundo virtual, utilizando alguna técnica de programación similar a la "Freescape", pero añadiendo texturas, y efectos sonoros para crear cierta atmósfera. Son juegos que me impresionaron a nivel técnico, pues la cantidad de cálculos, y algoritmos tendrían que ser complejísimos.
En realidad no, me refiero a los cálculos y algoritmos. Hexen y Heretic, siguienedo la estela de Doom, están programados usando la técnica de "Ray Casting" que nada tiene que ver con Freescape. Ésta técnica, mediante simple cálculo trigonométrico, permite hacer todo lo que ves en la pantalla. En realidad, toda la acción de Doom, Hexen o Heretic es en 2D, si te fijas. El mismo juego exactamente igual, y sin cambiar absolutamente nada del gameplay habría podido mostrarse en 2D y en vista cenital. Lo que se hace, es tomar esta mecánica de juego y mostrar el display en una proyección 3D del escenario 2D. Poniendo secciones de distintas alturas consiguen un efecto genial que nos hace dudar, pero si te fijas nunca hay dos objetos a distintas alturas sobre la misma coordenada del mapa, ni puedes pasar bajo una plataforma sobre la que puedes caminar. El primer juego del género FPS en "3D real" fue Quake. Todo lo anterior (Duke Nukem 3D, Blake Stone, Shadow Warrior, Rise of the Triad) no era más que Raycasting muy, muy empepinado.
Hay varias "generaciones" de raycasters:
1.- ORTOGONAL SIN ALTURAS: Las paredes siempre forman ángulos rectos y todas las secciones se encuentran a la misma altura. Catacom Abyss, Wolfenstein 3D, Blake Stone, Corridor 7, Nitemare 3D, Spear of Destiny.
2.- ORTOGONAL CON ALTURAS: Las paredes siempre forman ángulos rectos pero hay secciones a diferentes alturas. El mejor exponente del género es Rise of the Triad, donde hay mil y una "trampas" para engañar aún más al jugador y dar la "impresión de 3D". (¿he dicho que este juego me encanta?

).
3.- NO ORTOGONAL: El mapa está formado por secciones poligonales irregulares. Cada sección puede tener definida una altura, lo que añade más "leña" al fuego: puede definirse una diferencia de altura máxima que el jugador pueda traspasar, creando así otro tipo de obstáculos: las caídas. El primer juego en emplear esta técnica fue Doom, seguido por Doom 2, Heretic y Hexen, y luego muchísimos más en torno a 1995 y 1996. En Apogee estiraron la técnica al máximo en el motor que comparten Duke Nukem 3D y Shadow Warrior 3D, permitiendo cosas como mirar hacia arriba y hacia abajo o incluyendo un motor de vóxels para presentar algunos objetos en 3D.
Esto funcionaba muy bien en 1995 en los 486 por lo que ya te he dicho: para una pantalla de 320x200 sólo hay que calcular 320 líneas verticales de pixels usando unas cuantas funciones trigonométricas y escalados lineales. Busca por el google y verás qué sencillo es el algoritmo. El problema de portar esto a 8 bits puede resumirse en:
1.- Poca memoria. Para almacenar un mapa medianamente detallado, con todas sus secciones definidas, sus texturas, sus efectos y los enemigos que están en ella hace falta mucho sitio.
2.- "sólo" 8 bits. Un cálculo mayor precisa muchos más ciclos. Sin una unidad de punto flotante y registros y ALU mayores cualquier cálculo que necesite más de "256 enteros" (o sea, todos

) va a precisar muuuuucha chicha por debajo. Tú a la FPU del 486 le dices "divídeme 0.2328838 entre 7" y te lo hace de un tirón. En un Z80, sin FPU y con registros de 8 bits, te tienes que currar a mano un algoritmo que haga una división de números reales.
3.- En algunos sistemas, que se viera algo "con textura" podría ser un problema: por ejemplo el Spectrum con los gráficos monocromos. Haría falta algún tipo de procesador de la imagen para poder calcular tramas y cosas por el estilo que hagan todo un poco menos "hiriente" a la vista.
Como han mencionado, hay intentos de Wolfenstein 3D y Doom (en realidad usando raycasting ortogonal sin alturas como el del Wolf 3D), pero siempre usando pantallas muy pequeñas y con resultados dudosamente jugables.
Por cierto, me fascina el mundo del raycasting

¿se nota?
