MontevideoGame
MontevideoGame GitHub

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.

  1. 1GIS oficial de MontevideoServicio de Geomática de la Intendencia de Montevideo. Capas: Espacios Públicos, Vías y Manzanas materializadas, en EPSG:32721.
  2. 2Data/rawLos originales no se modifican. Cada descarga guarda sus metadatos de procedencia y su SHA-256.
  3. 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.
  4. 4Data/processedArchivos derivados y reproducibles, listos para que Unreal los lea.
  5. 5FGeoReferenceLa matemática de conversión entre coordenadas geográficas y locales, independiente del gameplay.
  6. 6UGeospatialSubsystemSubsistema de GameInstance con el origen geográfico y las conversiones hacia y desde coordenadas locales.
  7. 7FGeospatialBlockoutLoaderLee el JSON procesado, valida la geometría, carga metadatos y convierte coordenadas. No dibuja nada.
  8. 8AGeospatialBlockoutActorRepresenta en runtime los polígonos, las polilíneas y los puntos locales.
  9. 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.

WGS84→ECEF→Plano tangente local→Unreal
+X
Norte
+Y
Este
+Z
Arriba
Escala
1 m = 100 unidades de Unreal (1 uu = 1 cm)
Origen de desarrollo · centroide de la Plaza Independencia Latitud -34.90650688716759
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.

Convertidor de ejemplo

Calcula la posición local de un punto con la misma cadena WGS84 → ECEF → plano tangente. El punto aparece en el plano de fondo.

X · Norte
—
Y · Este
—
Unreal (X, Y)
—
Distancia al origen
—
—

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

  1. Abre MontevideoGame.uproject con Unreal Engine 5.8.3.
  2. Carga el mundo Content/Montevideo/Maps/MVD_Prototype.umap.
  3. 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.Status
Montevideo.M3.Status
Montevideo.M3.Bounds

La 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.

Código abierto

Mira el código

El repositorio incluye la documentación técnica de cada hito: arquitectura, roadmap, pipeline del mapa, sistemas de gameplay y los documentos M1 a M3.3.1.

Runtime

Unreal Engine 5.8.3
C++
Enhanced Input
GeometryCore
GeometryFramework
Unreal JSON

Procesamiento geoespacial

Python
pyproj
Shapely
pyshp
NumPy

Desarrollo

Visual Studio C++
VS Code
Codex
Git
Git LFS

MontevideoGame es un prototipo independiente de desarrollo de videojuegos e ingeniería. No está afiliado, respaldado ni conectado con Rockstar Games ni con la franquicia Grand Theft Auto. Los datasets geográficos de terceros conservan sus licencias y requisitos de atribución. Datos oficiales: Servicio de Geomática, Intendencia de Montevideo. El plano animado de esta página es un esquema ilustrativo y no representa la geometría real del proyecto. Por AndrewUru.