Quake 3 Arena en WebGL.
Quake 3 es un juego de finales de los 90 en primera persona
En este caso convertieron todo un escenario para ser jugado utilizando solo WebGl
Cada estructura tiene una cantidad especifica de números, arreglos o índices que referencian a otro lump específico. Para entender más de cada lump y sus atributos se puede averiguar en [2]
Cada script tiene una función específica:



Composición del espacio Quake 3
El escenario esta originalmente guardado en el formato .bsp que guarda todos los atributos posibles en estructuras tipo lumps. En el caso de Quake 3 los guardó así:Composición de la aplicación
La arquitectura general de la aplicación se muestra a continuación:Cada script tiene una función específica:
- main.js: Iniciar la aplicación, actualizar cada frame y por ende la matriz de ModelView.
- Q3bsp.js: Carga los shaders y los buffers, permitiendo dibujar cada escena con primitivas de WebGL.
- Worker.js: Realiza el parse del archivo .bsp para transformarlo en toda la información que necesita renderizar WebGL
- Q3Shader.js: Carga shaders externos y los crea en lenguaje GLSL.
- Q3glshader.js Carga el shader ya en GLSL con los datos decodificados.
- Q3Movement.js: implementa la interacción para el usuario (caminar, saltar, reaparecer)
BSP Worker (Parser)
El worker.js parsea de acuerdo al arreglo de lectura de bytes, el tamaño de cada lump y las posiciones del arreglo. Cada lump es una posicion del arreglo guardandolo ya como un atributo especifico.
Renderizado de cada escena
Como se ha mencionado antes, cada escena es cargada, leida y dibujada por Q3bsp.js
Interacción con el usuario
EL movimiento del usuario es a partir de manejo de vectores y fuerza (aceleración y gravedad). Por ejemplo para moverse, chequea si esta en el piso o saltando y lo ubica en dicho estado. Si está en el piso, acelera pero aplicando fricción. Acto seguido se mueve en la dirección del vector velocidad así este en el aire (saltando) o no.

Comentarios
Publicar un comentario