Guía de la serie sobre mundos abiertos en el navegador
Por Oleg Sidorkin, CTO y cofundador de Cinevva
Esta página es el centro de navegación de la serie completa.
Si has llegado desde una parte al azar, empieza aquí.
Actualización de marzo de 2026: añadimos una comprobación externa de la implementación basada en los diarios de desarrollo de Vuntra City en la Parte 12 y ampliamos la guía técnica de mundos abiertos en el navegador complementaria con los mismos hallazgos.
Actualización de abril de 2026: las partes 13 y 14 cubren el esculpido del terreno (prototipos 25-27) y la capa visual y de jugabilidad: texturizado multimaterial, vegetación instanciada y un controlador de personaje con colisiones HM+SDF (prototipos 28-30).
Actualización de mayo de 2026: la serie llegó a 29 partes. Las partes 15-29 cubren la larga fase intermedia del desarrollo, el terreno y el agua multijugador, una refactorización de la estructura del código, animaciones y distribución mediante IA, impostores y paralaje, el búfer de visibilidad que no dio resultado, nubes y descarte de meshlets, avatares procesados por lotes y voz por proximidad, persistencia del mundo y viento en la GPU, personajes universales, tres enfoques para el agua, una isla procedural, hierba y oclusión, y un controlador de personaje conectable que funciona con cualquier cuerpo (prototipos 31-60).
Actualización de junio de 2026: la Parte 30 añade una cámara consciente de las colisiones, un brazo de cámara con resorte, un contrato de colisionador conectable y una sonda de distancia con signo que impide que la vista atraviese salientes y techos de cuevas, no solo colinas.
Qué significa «prototipo» en esta serie
Un prototipo es un experimento breve y enfocado.
Cada prototipo pone a prueba una cuestión arriesgada. Mantenemos un alcance reducido, medimos lo que importa y decidimos qué hacer a continuación. Considéralo un instrumento de aprendizaje, no una funcionalidad pulida.
En este proyecto, los prototipos son principalmente páginas independientes bajo /spikes/* que puedes ejecutar en vivo.
Lee la serie en orden
- Parte 1: Empezamos intentando romperlo
- Parte 2: Física en un worker y el temor al retardo de entrada
- Parte 3: Los prototipos poco vistosos que nos salvaron
- Parte 4: Streaming antes que terrenos sofisticados
- Parte 5: Presupuestar los elementos visuales
- Parte 6: Los clipmaps cambiaron la historia
- Parte 7: Marching cubes y las primeras cuevas de verdad
- Parte 8: Integración sin perder nuestra referencia inicial
- Parte 9: Transvoxel comenzó con una estructura base
- Parte 10: Caos en las uniones y la batalla final de las esquinas
- Parte 11: Modo basado en políticas, no codificado de forma rígida
- Parte 12: Anillos, niebla del cielo y lo que volveríamos a hacer
- Parte 13: El esculpido del terreno y la muerte de la función matemática
- Parte 14: El mundo cobra vida
- Parte 15: Sustituir la base y después sincronizarla
- Parte 16: Una estructura para un mundo que no deja de crecer
- Parte 17: Animaciones que no necesitaron retargeting y una búsqueda de recursos en vivo
- Parte 18: Un pincel de distribución que parece controlado por IA
- Parte 19: El impostor que tiene que sobrevivir en un bosque
- Parte 20: Simular profundidad en un plano
- Parte 21: Un renderizador más rápido que no era más rápido
- Parte 22: Nubes que puedes iluminar y un sistema de descarte que hay que alimentar
- Parte 23: Cincuenta avatares y una voz en la sala
- Parte 24: Guardar un mundo y crear viento visible
- Parte 25: Un esqueleto para cualquier atuendo
- Parte 26: Tres formas de crear agua
- Parte 27: Una isla creada con ruido y un suelo que parece real
- Parte 28: Hierba hasta el horizonte y un terreno que se oculta a sí mismo
- Parte 29: Un controlador para cualquier cuerpo
- Parte 30: Una cámara que respeta las paredes
Mapa de prototipos en vivo
Empieza por estos si quieres recorrer directamente la cronología técnica.
Prototipo 1 terreno e instanciación · código fuente
Prototipo 2 física en un worker · código fuente
El prototipo 3, una prueba de carga de difusión con Durable Objects, se ejecutó como un script de servicio, no como una página independiente
El prototipo 4 probó las restricciones de calidad en móviles mediante un parámetro de consulta del prototipo 1
El prototipo 5 probó la fiabilidad del comportamiento del LLM y se ejecutó como un script, no como una página independiente
Prototipo 6 carga e intercambio de chunks · código fuente
Prototipo 7 vegetación a partir de mapas de densidad · código fuente
Prototipo 8 coste del material del terreno · código fuente
Prototipo 9 presupuesto de sombras en cascada · código fuente
Prototipo 10 clipmaps y geomorfismo · código fuente
Prototipo 11 streaming de chunks de mapas de altura · código fuente
Prototipo 12 marching cubes con WebGPU · código fuente
Prototipo 13 referencia inicial de integración con WebGPU · código fuente
Prototipo 14 robustecimiento incremental · código fuente
Prototipo 15 estructura base para uniones · código fuente
Prototipo 16 primera cara de Transvoxel · código fuente
Prototipo 17 LOD dual de MC · código fuente
Prototipo 18 unión de mapas de altura · código fuente
Prototipo 19 esquina con resoluciones mixtas · código fuente
Prototipo 20 unión de esquina en la GPU · código fuente
Prototipo 21 unión de esquina MC en la GPU · código fuente
Prototipo 22 alternativa de MC a HM · código fuente
Prototipo 23 modos de chunks basados en políticas · código fuente
Prototipo 24 anillos de clipmap y niebla del cielo · código fuente
Prototipo 25 pincel de mapas de altura sobre datos muestreados · código fuente
Prototipo 26 pincel SDF mediante cómputo en la GPU · código fuente
Prototipo 27 integración de HM + MC + pincel · código fuente
Prototipo 28 texturizado multimaterial · código fuente
Prototipo 29 vegetación y hierba mediante shaders · código fuente
Prototipo 30 física del terreno y controlador de personaje · código fuente
Prototipo 31 sincronización de terreno multijugador · código fuente
Prototipo 32 agua y natación · código fuente
Prototipo 33 refactorización de la estructura del código · código fuente
Prototipo 34 creación dentro del mundo · código fuente
Prototipo 35 animaciones de combate y retargeting · código fuente
Prototipo 36 búsqueda en vivo de recursos de Poly Haven · código fuente
Prototipo 37 distribución de objetos asistida por IA · código fuente
Prototipo 38 impostores octaédricos · código fuente
Prototipo 39 mapeado de oclusión por paralaje · código fuente
Prototipo 40 renderizador con búfer de visibilidad · código fuente
Prototipo 41 impostores en un bosque · código fuente
Prototipo 42 corrección del parpadeo de los impostores · código fuente
Prototipo 43 atmósfera y nubes volumétricas · código fuente
Prototipo 44 descarte Hi-Z de meshlets · código fuente
Prototipo 45 skinning de avatares por lotes y sincronización de red · código fuente
Prototipo 46 chat de voz por proximidad · código fuente
Prototipo 47 persistencia del mundo con autoridad del servidor · código fuente
La integración del rig de avatares del prototipo 48 se reutilizó como código compartido en prototipos posteriores (sin página independiente)
Prototipo 49 viento en la GPU aplicado a objetos y follaje · código fuente
Prototipo 50 personajes universales y accesorios equipables · código fuente
Prototipo 51 agua con reflejos en espacio de pantalla · código fuente
Prototipo 52 agua con reflejos planares · código fuente
Prototipo 53 biblioteca de agua para producción · código fuenteSpike 54 generación procedural de islas · código fuente
Spike 55 sombreado del terreno y disimulación del mosaico · código fuente
Spike 56 césped de quads cruzados en la GPU · código fuente
Spike 57 descarte por oclusión del terreno · código fuente
Spike 58 controlador de personaje intercambiable · código fuente
Spike 59 controlador con un avatar real · código fuente
Spike 60 animaciones poligonales de Synty · código fuente