4 puntos por GN⁺ 2025-01-05 | 1 comentarios | Compartir por WhatsApp

Voxel Space

Demo web: Motor Voxel Space

Historia

  • En 1992, la CPU era unas mil veces más lenta que la actual, y la aceleración por GPU era poco conocida o muy costosa.
  • Los juegos 3D se calculaban solo en la CPU, y el motor de renderizado dibujaba polígonos de un solo color.
  • En 1991 se lanzó Gunship 2000 de MicroProse y en 1992 salió Comanche de NovaLogic.
  • Comanche mostraba gráficos sorprendentes para esa época, incluyendo texturas, sombreado y sombras.

Algoritmo de renderizado

  • Comanche usa una técnica llamada Voxel Space, que se basa en una idea similar al ray casting.
  • El motor Voxel Space es un motor 2.5D y no ofrece toda la libertad de un motor 3D tradicional.
Mapas de altura y de color
  • La forma más sencilla de representar el terreno es usar mapas de altura y mapas de color.
  • Comanche usaba mapas de altura y color de 1 byte con un tamaño de 1024 * 1024.
  • Estos mapas son periódicos y no permiten representar estructuras complejas, pero el mapa de color ya incluye sombreado y sombras, por lo que no hace falta calcular la luz durante el renderizado.
Algoritmo base
  • El algoritmo de renderizado del motor 3D es muy simple.
  • El motor Voxel Space rasteriza los mapas de altura y color y dibuja líneas verticales.
  • Borra la pantalla y renderiza de atrás hacia adelante para garantizar la oclusión.
  • Determina la línea del mapa correspondiente a la distancia óptica del observador.
  • Rasteriza la línea para ajustarla al número de columnas de la pantalla.
  • Toma la altura y el color de cada segmento de línea en el mapa 2D.
  • Proyecta en perspectiva las coordenadas de altura.
  • Con la altura proyectada y el color correspondiente, dibuja una línea vertical.
Añadiendo rotación
  • Con ese algoritmo solo se puede mirar al norte.
  • Para ver otros ángulos se necesitan unas pocas líneas de código para rotar las coordenadas.
Mejora de rendimiento
  • Hay varios trucos para mejorar el rendimiento.
  • Se puede renderizar de adelante hacia atrás en vez de hacerlo de atrás hacia adelante.
  • Se necesita un y-buffer adicional para garantizar la oclusión.
  • Ajusta el nivel de detalle para renderizar más detalle cerca y menos detalle a distancia.

Enlaces

  • Página de demo del proyecto web
  • Introducción al motor de terreno Voxel
  • Sitio web personal

Mapas

  • Color
  • Altura

Licencia

  • La parte de software está bajo la licencia MIT.
  • La tecnología Voxel Space podría seguir protegida por patente en algunos países.
  • Los mapas de color y altura no están cubiertos por la licencia porque fueron ingeniería inversa desde el juego Comanche.

1 comentarios

 
GN⁺ 2025-01-05
Comentarios de Hacker News
  • Extraño la época en que los algoritmos ingeniosos y elegantes daban una experiencia casi mágica. En la época de recursos de hardware limitados, los desarrolladores avanzaban los juegos con nuevas técnicas y mucha creatividad.

    • Hoy en día, plataformas de fantasía como PICO-8 son más interesantes que juegos repetitivos de estudios AAA.
    • Algoritmos como VoxelSpace muestran cómo renderizar terreno con muy poco código.
  • Es interesante ver un video relacionado con un programa llamado mars.com.

    • Puede encontrarse información en el sitio de Pouet.
  • Este método de renderizado es interesante, pero es difícil clasificarlo como voxel porque no puede renderizar volúmenes arbitrarios. Es una implementación muy limpia de un renderizador de mapas de altura.

  • Puede ser que el título incluya discusiones de 2020 o 2017. También hubo debate sobre el mismo repositorio en 2021.

  • Cuando aprendí a programar por primera vez, recuerdo haber hecho un programa en QBasic para generar mapas de altura del terreno y renderizarlos en estilo isométrico. Eso fue una de las cosas que me hizo seguir programando.

  • Usé esta técnica para hacer un juego con Adventure Game Studio. No está optimizada para versiones antiguas del motor, pero planeo actualizarla alguna vez.

  • La mayoría de los juegos modernos tienen montañas que parecen huecas, pero este método hace que las montañas se vean sólidas.

  • Recuerdo lo impactante que fue jugar Comanche por primera vez. Sentía como si viniera del futuro o de una película.

  • Un proyecto de renderizador por software es divertido y funciona perfecto para proyectos de fin de semana. Implementé un algoritmo similar antes, pero esta versión actual es mucho más rápida y más simple.

  • Me gustaría vivir en una línea temporal alternativa donde la GPU fuera basada en voxels.