Skip to content

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

  1. Parte 1: Empezamos intentando romperlo
  2. Parte 2: Física en un worker y el temor al retardo de entrada
  3. Parte 3: Los prototipos poco vistosos que nos salvaron
  4. Parte 4: Streaming antes que terrenos sofisticados
  5. Parte 5: Presupuestar los elementos visuales
  6. Parte 6: Los clipmaps cambiaron la historia
  7. Parte 7: Marching cubes y las primeras cuevas de verdad
  8. Parte 8: Integración sin perder nuestra referencia inicial
  9. Parte 9: Transvoxel comenzó con una estructura base
  10. Parte 10: Caos en las uniones y la batalla final de las esquinas
  11. Parte 11: Modo basado en políticas, no codificado de forma rígida
  12. Parte 12: Anillos, niebla del cielo y lo que volveríamos a hacer
  13. Parte 13: El esculpido del terreno y la muerte de la función matemática
  14. Parte 14: El mundo cobra vida
  15. Parte 15: Sustituir la base y después sincronizarla
  16. Parte 16: Una estructura para un mundo que no deja de crecer
  17. Parte 17: Animaciones que no necesitaron retargeting y una búsqueda de recursos en vivo
  18. Parte 18: Un pincel de distribución que parece controlado por IA
  19. Parte 19: El impostor que tiene que sobrevivir en un bosque
  20. Parte 20: Simular profundidad en un plano
  21. Parte 21: Un renderizador más rápido que no era más rápido
  22. Parte 22: Nubes que puedes iluminar y un sistema de descarte que hay que alimentar
  23. Parte 23: Cincuenta avatares y una voz en la sala
  24. Parte 24: Guardar un mundo y crear viento visible
  25. Parte 25: Un esqueleto para cualquier atuendo
  26. Parte 26: Tres formas de crear agua
  27. Parte 27: Una isla creada con ruido y un suelo que parece real
  28. Parte 28: Hierba hasta el horizonte y un terreno que se oculta a sí mismo
  29. Parte 29: Un controlador para cualquier cuerpo
  30. 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