- En los juegos de construcción de ciudades, la implementación realista del sistema vial es un elemento clave, una base que determina la solidez estructural más allá de ser un simple recurso visual
- Los juegos existentes suelen representar las carreteras con splines de Bézier, pero esto tiene limitaciones para mantener la curvatura y el paralelismo de una carretera real
- Las carreteras del mundo real deben reflejar la distancia entre ejes de los vehículos y las restricciones de las curvas, pero el método Bézier distorsiona la forma al aplicar offsets y provoca curvas poco realistas
- Para resolverlo, aplicar curvas de ingeniería como el arco de círculo (Circle Arc) y la clotoide (Clothoid) permite cambios suaves de curvatura y mantener offsets paralelos
- El autor construyó su propio sistema vial para superar estas limitaciones, y planea publicar más adelante el proceso de implementación técnica
El encanto de las carreteras y los patrones
- Encuentra en las carreteras la misma satisfacción que producen los patrones caóticos dentro del orden de la naturaleza
- Lo compara con fenómenos donde reglas simples se acumulan para crear estructuras complejas, como hormigueros, panales y nervaduras de hojas
- También describe las redes viales como uno de los patrones más fascinantes creados por el ser humano
- Imagina las huellas de la red vial que permanecerían incluso después de que la ciudad desapareciera, y resalta su belleza estructural
Los juegos de construcción de ciudades y la evolución de las carreteras
- Desde SimCity 2000 hasta Cities: Skylines 2, los sistemas viales han evolucionado de forma constante
- SimCity 4 introdujo elevación y carreteras diagonales, SimCity 2013 agregó carreteras curvas, y Cities: Skylines permitió colocación libre y configuración de intersecciones
- Sin embargo, siguen existiendo problemas como la falta de naturalidad en las curvas, radios de giro demasiado bruscos y rampas de autopista poco realistas
- Los mods han hecho posible implementar carriles, marcas y curvas más realistas, pero aun así no logran superar las limitaciones fundamentales del motor
Las limitaciones de los splines de Bézier
- La curva de Bézier es una poderosa herramienta matemática para conectar suavemente dos puntos, y se usa en la mayoría de los motores de juego
- Pero estas curvas no conservan su forma ni su curvatura al aplicar offsets; es decir, “el offset de una curva de Bézier no es una curva de Bézier”
- Esto provoca desajustes entre la curva interior y la exterior, autointersecciones y el fenómeno de pinching
- Como resultado, es difícil implementar curvas paralelas que reflejen la trayectoria real de los vehículos, como ocurre en las carreteras reales
Aplicación del arco de círculo (Circle Arc) y la clotoide (Clothoid)
- El arco de círculo ofrece un paralelismo perfecto que mantiene la misma forma incluso después de aplicar un offset
- Calcular la intersección entre dos arcos es mucho más simple que con Bézier, y resulta eficiente con una complejidad computacional de O(1)
- Al conectar arcos con radios distintos, es posible construir formas viales válidas desde el punto de vista de la ingeniería
- Sin embargo, el arco de círculo tiene una curvatura constante, por lo que al pasar de una recta a una curva se produce un cambio brusco en la aceleración lateral
- Para compensarlo, se utiliza la clotoide (Clothoid)
- Su curvatura aumenta de manera gradual, lo que ofrece una dirección más natural y mayor confort de marcha
- Aunque es matemáticamente compleja, es indispensable en el diseño de carreteras para alta velocidad
- En zonas de baja velocidad, como las intersecciones urbanas, un diseño basado en arcos de círculo puede ofrecer suficiente realismo
Por qué creó su propio sistema vial
- A la mayoría de los jugadores no les importa demasiado la precisión de la curvatura en las intersecciones, pero el desarrollador lo explora por curiosidad y desafío técnico
- El nivel de implementación en los juegos comerciales existentes es alto, pero faltan materiales y assets accesibles para desarrolladores indie
- En vez de conformarse con carreteras en cuadrícula simples, decidió crear un sistema más sofisticado y fácil de compartir
- En la próxima publicación revelará los detalles técnicos de la implementación, y será posible recibir actualizaciones mediante suscripción
1 comentarios
Opiniones de Hacker News
Al leer que en los juegos de construcción de ciudades las carreteras son clave, creo que entiendo por qué los urbanistas tienen pesadillas
La base de una ciudad no son las carreteras (road) para autos, sino las calles (street) que comparten peatones, bicicletas y transporte público
Como concepto relacionado, vale la pena ver el artículo sobre Stroad
La carretera está centrada en el transporte (transportation), mientras que la calle está centrada en la interacción pública (public interaction)
Aun así, siento que la cita original está siendo criticada en exceso. La sociedad moderna tiene una demanda de transporte enorme, así que la red vial dentro y fuera de la ciudad forma su esqueleto
Antes de 1900 las ciudades solo podían construirse cerca de vías navegables, pero ahora también pueden surgir tierra adentro gracias a las carreteras
Si quieres crear una ciudad realista, me parece que este enfoque tiene más sentido que usar carreteras falsas
A veces imagino cómo sería una civilización que diseñara ciudades usando únicamente bicicletas y desplazamiento a pie
Hay un juego que probablemente le gustaría al autor: Junxions, un sandbox enfocado en crear intersecciones viales
El subreddit relacionado está aquí. Parece ideal para satisfacer esas ganas de diseñar carreteras
También me gusta Junxions, pero mi enfoque es distinto. Ellos usan una estructura Bézier basada en nodos, mientras que yo genero intersecciones automáticamente a partir de colisiones entre segmentos de carretera
En la próxima entrada del blog voy a explicar en detalle la diferencia entre ambos enfoques
Dicen que “solo al 1% de la gente le importan los radios de esquina en las intersecciones”, pero yo justamente soy parte de ese 1%
Definir carreteras con curvas Bézier no es nada fácil
Sobre todo en giros cerrados, el resultado visual puede verse bastante mal
Yo pasé por el mismo problema el año pasado trabajando en el proyecto Azoth, y encontré una solución simplificada
Referencia: repositorio de Azoth, ejemplo de Bézier
Muchas cosas que en los juegos parecen obvias en realidad son el resultado de una enorme cantidad de trabajo y diseño
Por ejemplo, las carreteras casi no reciben atención detallada del jugador, pero si se ven raras se nota de inmediato
Lo sentí hace poco jugando Kingdom Come 2: todo se ve natural, como en la vida real, pero cada uno de esos detalles existe gracias al sudor y las lágrimas de los desarrolladores
Por eso entiendo que la industria de los videojuegos sufra tanto de crunch
Artículos relacionados: The Door Problem, artículo de IGN
Por textos como este sigo entrando a Hacker News. Me gustaría decirle al autor que siga escribiendo
Hay mucha gente con intereses parecidos, así que pienso seguir participando más
Este texto es totalmente lo mío. Yo tengo la misma obsesión por las carreteras
Las ciudades están compuestas por carreteras como si fueran vasos sanguíneos, y los caminos de pueblos en Europa y Asia cuentan la historia de haber surgido sobre rutas marcadas por los pasos de la gente
En cambio, los caminos rurales de mi lugar de origen avanzan en línea recta y de repente se desvían cuando un agricultor no quiere vender su tierra
Solo algunos casos de la época colonial o de ciudades planificadas tienen trazado en cuadrícula; la mayoría cambia de dirección según el río o la topografía
Estos puntos de cruce entre cuadrículas son las partes más bellas e interesantes de una ciudad en términos arquitectónicos
Sería increíble un juego que simulara cómo cambia el crecimiento urbano
Las ciudades reales evolucionaron como hormigueros, con una complejidad dentro de un orden natural
Más adelante me gustaría escribir algo aparte sobre este tema
En mi próximo juego, Canalpunk, voy a seguir usando splines Bézier
Creo que un sistema de desastres causado por rutas que se autointersectan podría ser interesante
Estoy obsesionado con implementar una clotoide (curve transition) en el editor de vías férreas
En espacio vacío es fácil, pero conectarla a otras vías es lo complicado
Tengo un material explicativo que hice hace tiempo: Euler Spiral Explanation
Quiero probar si se podría interpolar un nuevo spline usando ese punto de cruce
Imagen de referencia: ejemplo visual
Sería más simple hacerlo con carreteras rectas, como los romanos :-)
Claro, a los romanos no les importaba demasiado la propiedad privada. En Lincolnshire, donde vivo en el Reino Unido, todavía se siguen usando caminos romanos
La única excepción fue cuando desviaron una carretera para ampliar la pista de RAF Scampton
Más detalles en Roman aqueduct
Incluso hoy, la línea central de la carretera sigue alineándose perfectamente con la dirección de los campanarios. Esa idea de la tierra centrada en la iglesia se parece mucho a la de Roma