Me he tomado la libertad de traducir el artículo. Si bien la mayor parte es bastante comprensible, algunos párrafos centrales gozan de una complejidad digna de haber cursado algún que otro máster en ingieniería, así que perdonar mi pésima interpretación de esas parrafadas
Podéis usarlo sin restricciones (lo digo pensando en ahorrarle trabajo a Nino
)
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 los pequeños pájaros azules.
Mientras que los juegos de Cities in Motion fueron hechos para un bastante 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 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é: Sistemas de tráfico en Cities: SkylinesAdministrar el tráfico es una de las tareas existentes hacia el final del juego, 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 faena.
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 ellos 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í.
Ellos 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 ellos 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 nosotros estimamos para ser la máxima cantidad para una ciudad completamente construida, y esto ha sido una línea de guía interna para balancear 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 razonables requisitos de sistema. 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, la pinte de verde y en consecuencia muestre claramente al jugador cuál parte del sistema de carreteras necesita ser revisado.
CómoSin carreteras, no habría tráfico. Así que vamos a empezar con una vista de alto nivel en 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 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 [url=http://es.wikipedia.org/wiki/Curva_de_Bézier]curva de Bézier[/url] generando dos puntos de control extra usando estas posiciones y direcciones.
La geometría de las carreteras es entonces creada usando una red estática con un conjunto de teselados 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 la 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 en la red.
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 toman muestras de su límite de velocidad del tipo de vía del segmento sobre el que se hayan circulando.
Cuando un ciudadano quiere alcanzar un nuevo destino, un camino será calculado desde su posición actual hacia el destino objetivo, incluyendo ir andando, conduciendo, haciendo 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, la búsqueda del camino establece la mejor ruta de conducción para el vehículo calculando una puntuación 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 es simulado basado en el orden de llegada. Los vehículos usan los puntos objetivos 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 punto de intersección es usado para determinar quién lo hace y quién necesita romperlo. Hay una excepción a esta regla con los semáforos, los cuales simplemente evitan que los puntos objetivos entre en la intersección, causando al vehículo ralentizarse y pararse hasta que la luz del semáforo se vuelva 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.
ConclusionesAlgunos 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
una modificación creada 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 baja, 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 usapasa con facilidad. Técnicamente una línea congestionada sigue significando para el jugador que en algún lugar más allá en la ciudad una intersección está evitando que le tráfico fluya fluidamente, 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.