Prototipo de mundo abierto · Unreal Engine 5.8.3 · C++
Una ciudad real como mundo abierto.
MontevideoGame convierte datos geoespaciales oficiales de Montevideo, Uruguay, en un mundo jugable dentro de Unreal Engine. El prototipo actual cubre la Plaza Independencia y la trama urbana que la rodea.
Hito actual M3.3.1 · Optimización de fachadas
Mueve el cursor sobre el plano para leer coordenadas locales en metros.
Concepto
Usar el mapa oficial en lugar de dibujarlo a mano
El proyecto explora cómo transformar una ciudad real en un mundo jugable a partir de datasets geoespaciales oficiales. Las calles y manzanas llegan como datos, no como piezas colocadas una por una.
Se desarrolla por hitos pequeños y validados. Intentar generar la ciudad completa de una sola vez queda fuera del plan.
- Geometría real de calles
- Generación urbana procedural
- Vehículos conducibles
- Tráfico
- Peatones
- Policía y búsqueda
- Misiones
- Streaming de mundo grande
- Expansión progresiva por Montevideo
Arquitectura
Del dato oficial al mundo en Unreal
El pipeline separa los datos geográficos, la generación del mundo, el gameplay y la visualización. Los sistemas de gameplay no dependen de proveedores GIS ni de datasets externos.
- 1GIS oficial de MontevideoServicio de Geomática de la Intendencia de Montevideo. Capas: Espacios Públicos, Vías y Manzanas materializadas, en EPSG:32721.
- 2Data/rawLos originales no se modifican. Cada descarga guarda sus metadatos de procedencia y su SHA-256.
- 3Pipeline de PythonValida integridad, inspecciona el CRS, filtra entidades, procesa geometría y normaliza a WGS84 con pyproj, Shapely, pyshp y NumPy. El resultado es determinista.
- 4Data/processedArchivos derivados y reproducibles, listos para que Unreal los lea.
- 5FGeoReferenceLa matemática de conversión entre coordenadas geográficas y locales, independiente del gameplay.
- 6UGeospatialSubsystemSubsistema de GameInstance con el origen geográfico y las conversiones hacia y desde coordenadas locales.
- 7FGeospatialBlockoutLoaderLee el JSON procesado, valida la geometría, carga metadatos y convierte coordenadas. No dibuja nada.
- 8AGeospatialBlockoutActorRepresenta en runtime los polígonos, las polilíneas y los puntos locales.
- 9Blockout en runtimeEspacios públicos, manzanas y calles con colisión, listos para recorrer en tercera persona.
Capa M2
Cada punto del mapa, en doble precisión
La capa geográfica usa un sistema tangente local. Todos los cálculos se hacen en doble precisión antes de convertir a coordenadas de Unreal.
- +X
- Norte
- +Y
- Este
- +Z
- Arriba
- Escala
- 1 m = 100 unidades de Unreal (1 uu = 1 cm)
Longitud -56.19975332071957
El valor no se elige a mano. Se deriva del polígono oficial del espacio público procesado en M2.5. La altitud queda sin definir y M3 usa Z = 0.
Capa M3
El prototipo en cifras
El blockout en runtime muestra por primera vez datos reales de Montevideo: la Plaza Independencia, las manzanas oficiales y los ejes oficiales de las calles, con colisión en las superficies generadas.
- 700 × 700 m
- Ventana de procesamiento
- 0,49 km²
- Área cubierta
- 67
- Polígonos
- 160
- Líneas de calle
- 4.121
- Vértices geográficos
- 2.579
- Triángulos de superficie
- ≈ 15.842 m²
- Plaza Independencia
- 9 / 12
- Edificios notables / huellas
Límites locales de unos 705,5 × 705,8 m. El terreno es un plano de desarrollo en Z = 0, sin elevación real.
M3.2 a M3.3.1
Edificios y fachadas procedurales
M3.2 añadió 9 edificios notables, con 12 huellas, como prueba de concepto y con alturas sintéticas. M3.3 sumó un sistema de fachadas procedurales.
M3.3.1 reutiliza módulos de malla transitorios en runtime mediante lotes ISM. Está implementado y validado técnicamente. Falta la aceptación visual.
Construcciones notables es un dataset oficial limitado y no cubre todos los edificios de la ciudad. Los volúmenes y las ventanas del plano de fondo son un esquema ilustrativo, no geometría del proyecto.
Roadmap
Un hito pequeño a la vez
Completados · 8
- M0Arquitectura del repositorio
- M1Base de gameplay en C++ de Unreal
- M2Sistema de coordenadas geoespaciales
- M2.5Pipeline de procedencia de datos oficiales
- M3Blockout urbano en runtime
- M3.1Mundo dedicado MVD_Prototype
- M3.2Generador de edificios, prueba de concepto
- M3.3Sistema de fachadas procedurales
M3 a M3.3 validados visualmente.
En curso · 1
- M3.3.1Optimización de fachadas. Implementación y validación técnica listas, aceptación visual pendiente.
Sin empezar · 8
- M4Vehículo conducible
- M5Red vial extendida
- M6Edificios procedurales
- M7Tráfico
- M8Peatones
- M9Policía y búsqueda
- M10Misiones
- M11Expansión de Montevideo
M3.4 y M4 todavía no están autorizados.
Pruebas
Cada capa se comprueba antes de seguir
- Pruebas geoespaciales M2
- 9 / 9
- Validación de procedencia M2.5 (Python)
- 6 / 6
- Pruebas M3
- 6 / 6
- Pruebas de Python
- 5 / 5
- Error posicional urbano máximo
- 3,1181 × 10⁻⁷ cm
- .uasset y .umap verificados con SHA-256
- 753
- Modificados / añadidos / eliminados
- 0 / 0 / 0
- Build MontevideoGameEditor, Win64 Development
- Exitoso
El blockout se genera en runtime desde C++ y datos procesados, así que el pipeline GIS no toca los assets binarios de Unreal. Las pruebas M3 comprueban la carga de geometría, el polígono de la plaza, el área esperada, los límites locales, la orientación norte y este, la inmutabilidad de los datos originales y la colisión.
Reglas del proyecto
Seis reglas que sostienen el proyecto
Datos reales antes que aproximaciones
Siempre que se pueda, la geometría urbana sale de fuentes geográficas verificables y no de un cálculo a ojo.
Reproducibilidad
Cada transformación del dato oficial al dato del juego se puede repetir y produce el mismo resultado.
Procedencia
Cada dataset registra proveedor, URL, CRS original, formato, licencia y SHA-256.
Separación de responsabilidades
El procesamiento GIS, el renderizado del mundo y el gameplay se pueden reemplazar por separado.
Nunca cargar toda la ciudad
Montevideo exigirá partición espacial y streaming. La arquitectura no asume que la ciudad completa cabe cargada a la vez.
C++ como fuente de verdad
Los Blueprints configuran y extienden clases de gameplay. Los sistemas críticos viven en C++, donde se pueden inspeccionar y probar.
Ejecución
Cómo recorrer el prototipo
- Abre
MontevideoGame.uprojectcon Unreal Engine 5.8.3. - Carga el mundo
Content/Montevideo/Maps/MVD_Prototype.umap. - Pulsa Play y elige Selected Viewport.
- WASD Moverse
- Ratón Cámara
- Espacio Saltar
- F8 Separar la cámara de PIE
- Esc Detener o liberar el input
Comandos de consola de desarrollo. Muestran el origen geográfico activo, la geometría cargada, los límites locales, los datasets de origen y el estado geográfico.
Montevideo.Geo.StatusMontevideo.M3.StatusMontevideo.M3.BoundsLa escena geográfica se genera solo mientras el juego está en ejecución.
Estado actual
Lo que todavía no existe
- Elevación real del terreno y datum vertical. La geometría usa Z = 0.
- Edificios detallados. Las fachadas son genéricas y sin estilos arquitectónicos verificados.
- Vegetación.
- Vehículos conducibles, tráfico, peatones y policía.
- Misiones.
- Streaming de producción. El mapa es mínimo y cubre solo el prototipo.