La web Gamasutra ha realizado un reportaje en el que analiza el sistema vial de Cities: Skylines y el comportamiento del tráfico en un intento de explicar el porqué los coches van haciendo filas en varios carriles.
El compañero del foro CapitalSimCity Roberto 258 se ha tomado la molestia de traducir este difícil reportaje >>> |
Diseño del juego en profundidad: El tráfico en Cities: Skylines
El "Diseño del juego en profundidad" es una serie en curso de Gamasutra con el objetivo de la luz sobre las características o mecánicas del diseño específico dentro de un videojuego, con el fin de mostrar cómo aparentemente decisiones de diseño simples y fundamentales no son realmente tan sencillas.
Quién: Antti Lehto (programador), Damien Morello (programador) y Karoliina Korppoo (diseñadora jefe)
Trabajamos en Colossal Order, un estudio de desarrollo de videojuegos finlandés especializado en juegos de simulación para ordenador. Colossal Order fue fundada en 2009, y hemos publicado tres juegos: Cities in Motion, un simulador de transporte público, Cities in Motion 2, la secuela del anterior, y Cities: Skylines, un constructor de ciudades de la vieja escuela. Tenemos un equipo de 13 personas y somos muy aficionados a la tarta y a los pequeños pájaros azules.
Mientras que los juegos de Cities in Motion fueron hechos para un muy reducido pero muy dedicado público, Skylines ha alcanzado un público mucho mayor, y alcanza también jugadores menos experimentados en el género de la simulación. Estamos muy orgullosos de que los seguidores de los constructores de ciudades se hayan sentido satisfechos con el juego así como contentos de ver a creadores de mods añadiendo contenido a buen ritmo. Quisimos alentar la modificación y difuminar la línea entre jugar y crear, de forma que la gente pudiese realmente tener su propio juego.
Qué: El sistemas de tráfico en Cities: Skylines
Administrar el tráfico es una de las tareas existentes hacia el final del la partida, posiblemente la más importante. Hay muchos tipos de vías y todas necesitan ser elecciones utilizables e interesantes. La herramienta de carretera es flexible para permitir a los jugadores construir complejas intersecciones para administrar el flujo de tráfico, pero también es lo suficientemente simple para no hacer de la construcción básica de carreteras una tarea rutinaria.
Quién: Antti Lehto (programador), Damien Morello (programador) y Karoliina Korppoo (diseñadora jefe)
Trabajamos en Colossal Order, un estudio de desarrollo de videojuegos finlandés especializado en juegos de simulación para ordenador. Colossal Order fue fundada en 2009, y hemos publicado tres juegos: Cities in Motion, un simulador de transporte público, Cities in Motion 2, la secuela del anterior, y Cities: Skylines, un constructor de ciudades de la vieja escuela. Tenemos un equipo de 13 personas y somos muy aficionados a la tarta y a los pequeños pájaros azules.
Mientras que los juegos de Cities in Motion fueron hechos para un muy reducido pero muy dedicado público, Skylines ha alcanzado un público mucho mayor, y alcanza también jugadores menos experimentados en el género de la simulación. Estamos muy orgullosos de que los seguidores de los constructores de ciudades se hayan sentido satisfechos con el juego así como contentos de ver a creadores de mods añadiendo contenido a buen ritmo. Quisimos alentar la modificación y difuminar la línea entre jugar y crear, de forma que la gente pudiese realmente tener su propio juego.
Qué: El sistemas de tráfico en Cities: Skylines
Administrar el tráfico es una de las tareas existentes hacia el final del la partida, posiblemente la más importante. Hay muchos tipos de vías y todas necesitan ser elecciones utilizables e interesantes. La herramienta de carretera es flexible para permitir a los jugadores construir complejas intersecciones para administrar el flujo de tráfico, pero también es lo suficientemente simple para no hacer de la construcción básica de carreteras una tarea rutinaria.
Hay un límite en cómo tal cantidad de ciudadanos y vehículos pueden ser simulados en las calles al mismo tiempo. Si el límite no se cumple, los ciudadanos pueden elegir desplazarse. Los habitantes en el juego tienen posibles lugares que desean visitar. Estos lugares pueden llenarse, lo cual resulta en más demanda de estos espacios. Cuando un ciudadano parte hacia un sitio, elige la ruta más rápida hasta ahí.
Tienen en cuenta si poseen vehículo propio, si hay carreteras congestionadas y si hay disponible transporte público. Basándose en estos factores caminan, usan el transporte público o su propio vehículo. Los peatones pueden usar los caminos peatonales que estén separados de las carreteras, pero no pueden andar por las autopistas.
Cuando los vehículos planean su ruta, se adhieren a ella. No recalcularán la ruta en medio del viaje a menos que algo en su camino sea modificado. Si por alguna razón no pueden encontrar una ruta al lugar que han elegido, el vehículo se teletransportará de vuelta al su punto de origen.
Los vehículos pertenecen a edificios o habitantes, así que siempre tienen un sitio al que volver. Algunos vehículos llegan desde el exterior del mapa, pero vuelven a ese lugar externo si se extravían. Los vehículos seleccionan su carril de forma bastante anticipada, y eligen y permanecen en el carril que les permite girar hacia la dirección que tomarán.
¿Por qué?
El objetivo fue desde el principio del proyecto tener ciudades de hasta un millón de habitantes. Este no es un límite difícil, es lo que estimamos como la cantidad máxima para una ciudad totalmente construida, y es una pauta interna para equilibrar los sistemas de la ciudad. Con hasta un millón de habitantes, estaba claro que no todos pueden estar en las calles al mismo tiempo si queremos mantener requisitos razonables. Esto significa que necesitamos crear el sistema de trabajadores de manera que los trabajadores que en realidad no acuden físicamente a sus puestos de trabajo no resulten en una penalización para el jugador.
Nosotros invertimos un montón de tiempo trabajando y reelaborando el sistema de tráfico. Ha sido el mayor reto individual dentro del juego y es un sistema con el que todos los jugadores interactúan, así que es uno de los más importantes. Durante el desarrollo, intentamos por ejemplo permitir a los coches a cambiar de líneas más a menudo, lo cual resultó en un total caos del tráfico, ya que los coches intentaban unirse a un línea atestada, bloqueando dos líneas y haciendo que el tráfico se detuviese.
Tienen en cuenta si poseen vehículo propio, si hay carreteras congestionadas y si hay disponible transporte público. Basándose en estos factores caminan, usan el transporte público o su propio vehículo. Los peatones pueden usar los caminos peatonales que estén separados de las carreteras, pero no pueden andar por las autopistas.
Cuando los vehículos planean su ruta, se adhieren a ella. No recalcularán la ruta en medio del viaje a menos que algo en su camino sea modificado. Si por alguna razón no pueden encontrar una ruta al lugar que han elegido, el vehículo se teletransportará de vuelta al su punto de origen.
Los vehículos pertenecen a edificios o habitantes, así que siempre tienen un sitio al que volver. Algunos vehículos llegan desde el exterior del mapa, pero vuelven a ese lugar externo si se extravían. Los vehículos seleccionan su carril de forma bastante anticipada, y eligen y permanecen en el carril que les permite girar hacia la dirección que tomarán.
¿Por qué?
El objetivo fue desde el principio del proyecto tener ciudades de hasta un millón de habitantes. Este no es un límite difícil, es lo que estimamos como la cantidad máxima para una ciudad totalmente construida, y es una pauta interna para equilibrar los sistemas de la ciudad. Con hasta un millón de habitantes, estaba claro que no todos pueden estar en las calles al mismo tiempo si queremos mantener requisitos razonables. Esto significa que necesitamos crear el sistema de trabajadores de manera que los trabajadores que en realidad no acuden físicamente a sus puestos de trabajo no resulten en una penalización para el jugador.
Nosotros invertimos un montón de tiempo trabajando y reelaborando el sistema de tráfico. Ha sido el mayor reto individual dentro del juego y es un sistema con el que todos los jugadores interactúan, así que es uno de los más importantes. Durante el desarrollo, intentamos por ejemplo permitir a los coches a cambiar de líneas más a menudo, lo cual resultó en un total caos del tráfico, ya que los coches intentaban unirse a un línea atestada, bloqueando dos líneas y haciendo que el tráfico se detuviese.
La teletransportación fue realizada como una medida de seguridad cuando las pruebas mostraron que los jugadores menos experimentados tenían enormes problemas cuando la totalidad de su sistema de carreteras se convertía en un gran atasco, y la capa de información para carreteras no podía identificar el verdadero cuello de botella cuando todas las carreteras estaban llenas de coches esperando, y mostradas como congestionadas. Esto significa que los jugadores no podían localizar el origen del problema si tenían poca o ninguna experiencia previa, o no estuvieran por lo general tan centrados en el tráfico.
Como solución creamos un sistema que hiciese a los vehículos teletransportarse atrás a su origen si encuentran un embotellamiento. El cuello de botella original sigue estando ahí y tiene vehículos que siguen quietos o avanzando poco a poco, pero el atasco no crece sin control. Esto hace que la capa de información identifique el área del problema, lo coloree en rojo y en consecuencia muestre claramente al jugador cuál parte del sistema de carreteras necesita ser revisado.
Cómo
Sin carreteras, no habría tráfico. Así que vamos a empezar con una vista profunda de cómo están diseñadas las carreteras. Cuando un jugador coloca una carretera, está esencialmente colocando un nodo. Dos nodos crean un segmento y una carretera está compuesta de uno o más segmentos. Los segmentos tienen un tamaño máximo, así que una carretera extensa será dividida en varios segmentos. Uno de los incentivos tras este enfoque es que las carreteras necesitan seguir la topología del terreno, así que incluso una carretera recta necesitará varios segmentos de forma que no se corte a través del terreno. Otra motivación es que los segmentos pequeños están más optimizados para la detección de colisiones, el renderizado y cualquier otra cosa.
Los nodos (conocidos como puntos de control) guardan la posición inicial y final de un segmento mientras que un segmento guarda una dirección inicial y final. Esta estructura es luego “convertida” en una curva de Bézier generando dos puntos de control extra usando estas posiciones y direcciones.
Como solución creamos un sistema que hiciese a los vehículos teletransportarse atrás a su origen si encuentran un embotellamiento. El cuello de botella original sigue estando ahí y tiene vehículos que siguen quietos o avanzando poco a poco, pero el atasco no crece sin control. Esto hace que la capa de información identifique el área del problema, lo coloree en rojo y en consecuencia muestre claramente al jugador cuál parte del sistema de carreteras necesita ser revisado.
Cómo
Sin carreteras, no habría tráfico. Así que vamos a empezar con una vista profunda de cómo están diseñadas las carreteras. Cuando un jugador coloca una carretera, está esencialmente colocando un nodo. Dos nodos crean un segmento y una carretera está compuesta de uno o más segmentos. Los segmentos tienen un tamaño máximo, así que una carretera extensa será dividida en varios segmentos. Uno de los incentivos tras este enfoque es que las carreteras necesitan seguir la topología del terreno, así que incluso una carretera recta necesitará varios segmentos de forma que no se corte a través del terreno. Otra motivación es que los segmentos pequeños están más optimizados para la detección de colisiones, el renderizado y cualquier otra cosa.
Los nodos (conocidos como puntos de control) guardan la posición inicial y final de un segmento mientras que un segmento guarda una dirección inicial y final. Esta estructura es luego “convertida” en una curva de Bézier generando dos puntos de control extra usando estas posiciones y direcciones.
La geometría de las carreteras se crea entonces usando una red estática con un conjunto de mosaicos combinados con un vertex shader el cual transformará dicha red de acuerdo a la información del spline. Esto es eficiente ya que la información del vertex para las carreteras puede ser compartida entre carreteras del mismo tipo, los uvs en la dirección de la longitud son también calculados en el vertex shader basándose en la longitud del spline.
Las intersecciones se crean usando un procedimiento similar y los segmentos almacenan sus conexiones en segmentos colindantes, así como su tipo de vía. Cada segmento puede entonces conocer sus carriles disponibles usando su tipo de vía, la cual define la cantidad de carriles y su compensación de encaje.
Determinada la información descrita arriba, los coches y camiones saben dónde pueden dirigirse en las carreteras. En lugar de usar una ingeniosa interpolación a lo largo del spline, los vehículos son objetos físicos simples los cuales usan una velocidad y múltiples puntos objetivos a lo largo del spline que desean seguir. Esto permite predecir curvas estrechas y próximas intersecciones, de forma que el vehículo se ralentiza o frena dependiendo de las circunstancias. Los vehículos adquieren su límite de velocidad según el tipo de segmento de vía sobre el que se hayan circulando.
Cuando un ciudadano quiere alcanzar un nuevo destino, el camino será calculado desde su posición actual hacia el destino, incluyendo ir andando, conduciendo, hacer uso del transporte público... Lo cual, por cierto, es sensacional, ya que se representa a través de ciudadanos andando de una parada de autobús a otra para cambiar de autobús. Durante este proceso, el cálculo de ruta establece la mejor ruta de conducción para el vehículo calculando una marcador de la información de los segmentos/carriles considerando el nivel de congestión, la velocidad límite y la dirección.
Las intersecciones se crean usando un procedimiento similar y los segmentos almacenan sus conexiones en segmentos colindantes, así como su tipo de vía. Cada segmento puede entonces conocer sus carriles disponibles usando su tipo de vía, la cual define la cantidad de carriles y su compensación de encaje.
Determinada la información descrita arriba, los coches y camiones saben dónde pueden dirigirse en las carreteras. En lugar de usar una ingeniosa interpolación a lo largo del spline, los vehículos son objetos físicos simples los cuales usan una velocidad y múltiples puntos objetivos a lo largo del spline que desean seguir. Esto permite predecir curvas estrechas y próximas intersecciones, de forma que el vehículo se ralentiza o frena dependiendo de las circunstancias. Los vehículos adquieren su límite de velocidad según el tipo de segmento de vía sobre el que se hayan circulando.
Cuando un ciudadano quiere alcanzar un nuevo destino, el camino será calculado desde su posición actual hacia el destino, incluyendo ir andando, conduciendo, hacer uso del transporte público... Lo cual, por cierto, es sensacional, ya que se representa a través de ciudadanos andando de una parada de autobús a otra para cambiar de autobús. Durante este proceso, el cálculo de ruta establece la mejor ruta de conducción para el vehículo calculando una marcador de la información de los segmentos/carriles considerando el nivel de congestión, la velocidad límite y la dirección.
El tráfico se simula basándose en el orden de llegada. Los vehículos usan los puntos de destino antes mencionados para crear un “segmento de atención”. Cuando dos vehículos diferentes se cruzan, sabemos que va a haber una colisión, así que la velocidad y la distancia al lugar de la intersección se usa para determinar quién pasa y a quién le toca frenar. Hay una excepción a esta regla con los semáforos, los cuales simplemente evitan los puntos de destino entre en la intersección, provocando que el vehículo reduzca y se detenga hasta que la luz del semáforo se ponga verde.
Por supuesto, hay muchos otros factores que afectan al comportamiento del tráfico, pero esencialmente, todos ellos giran en torno a estos simples pasos.
En términos de rendimiento, es imposible simular lo anterior aplicándolo a cada coche de cada fotograma. El secreto para un rendimiento decente consiste en distribuir los cálculos todo lo que sea posible. En nuestro caso, el movimiento del coche es simulado 4 veces por segundo mientras el renderizado usará dos fotogramas de la simulación para obtener una posición fluida de la información sobre la posición, la rotación y la velocidad. Las decisiones más complicadas pueden ser calculadas incluso menos frecuentemente, pero usando el mismo enfoque fluido, aparecerá como que se actualiza constantemente.
Conclusiones
Algunos jugadores sienten que el juego es demasiado fácil debido a la teletransportación. Eso hace el juego mucho más fácil que un tráfico congestionado, pero es realmente necesario mantener una curva de aprendizaje razonable. Si no hubiese teletransportación, el tiempo de reacción requerido para darse cuenta de los problemas de tráfico antes de que se acentuaran sería simplemente demasiado corto. Existe un mod creado por un usuario para desactivar la teletransportación, de forma que los jugadores que disfruten de un gran reto puedan conseguirlo fácilmente. En general, la cantidad de jugadores que hablan de los problemas de tráfico es relativamente bajo, lo que nos lleva a creer que la solución funciona bastante bien.
El tráfico sigue siendo la parte más difícil del juego para la mayoría de jugadores. La elección de carriles de forma temprana de vez en cuando se ve extraño en el juego. Los vehículos pueden hacer cola en un solo carril mientras los otros carriles se ven vacíos, debido a que el tráfico que los usa pasa con facilidad. Técnicamente un carril congestionado sigue significando para el jugador que en algún lugar de la ciudad una intersección está evitando que el tráfico transcurra de manera fluida, pero cuando se mira sólo a la larga cola de vehículos, algunos jugadores lo toman como un error.
El reto principal ahora es enseñar a los usuarios cómo construir sistemas de tráfico que funcionen, pero mirando las discusiones en los foros de los jugadores, es un tema interesante en el cual a la gente le gusta contribuir. Después de comprender los fundamentos del sistema de tráfico, muchos jugadores parecen encontrarlo intrigante y obtener muchas horas de diversión optimizando y gestionando el tráfico.
Por supuesto, hay muchos otros factores que afectan al comportamiento del tráfico, pero esencialmente, todos ellos giran en torno a estos simples pasos.
En términos de rendimiento, es imposible simular lo anterior aplicándolo a cada coche de cada fotograma. El secreto para un rendimiento decente consiste en distribuir los cálculos todo lo que sea posible. En nuestro caso, el movimiento del coche es simulado 4 veces por segundo mientras el renderizado usará dos fotogramas de la simulación para obtener una posición fluida de la información sobre la posición, la rotación y la velocidad. Las decisiones más complicadas pueden ser calculadas incluso menos frecuentemente, pero usando el mismo enfoque fluido, aparecerá como que se actualiza constantemente.
Conclusiones
Algunos jugadores sienten que el juego es demasiado fácil debido a la teletransportación. Eso hace el juego mucho más fácil que un tráfico congestionado, pero es realmente necesario mantener una curva de aprendizaje razonable. Si no hubiese teletransportación, el tiempo de reacción requerido para darse cuenta de los problemas de tráfico antes de que se acentuaran sería simplemente demasiado corto. Existe un mod creado por un usuario para desactivar la teletransportación, de forma que los jugadores que disfruten de un gran reto puedan conseguirlo fácilmente. En general, la cantidad de jugadores que hablan de los problemas de tráfico es relativamente bajo, lo que nos lleva a creer que la solución funciona bastante bien.
El tráfico sigue siendo la parte más difícil del juego para la mayoría de jugadores. La elección de carriles de forma temprana de vez en cuando se ve extraño en el juego. Los vehículos pueden hacer cola en un solo carril mientras los otros carriles se ven vacíos, debido a que el tráfico que los usa pasa con facilidad. Técnicamente un carril congestionado sigue significando para el jugador que en algún lugar de la ciudad una intersección está evitando que el tráfico transcurra de manera fluida, pero cuando se mira sólo a la larga cola de vehículos, algunos jugadores lo toman como un error.
El reto principal ahora es enseñar a los usuarios cómo construir sistemas de tráfico que funcionen, pero mirando las discusiones en los foros de los jugadores, es un tema interesante en el cual a la gente le gusta contribuir. Después de comprender los fundamentos del sistema de tráfico, muchos jugadores parecen encontrarlo intrigante y obtener muchas horas de diversión optimizando y gestionando el tráfico.
- Artículo original
- Traducido por Roberto258 de CapitalSimCity