Antecedentes
Ejecuto un servidor de Minecraft donde voy a diseñar una ciudad de inicio de escala bastante grande. Tengo una serie de cosas, como signos de reglas y jaulas de la mafia, me gustaría poner en edificios allí. La ciudad en sí será extremadamente grande y extendida, preferiblemente de hasta 1000 por 1000 cuadras de tamaño.
Los edificios mismos tendrán huellas de cubo o rectangulares que se basan en un cierto cubo base, como todos los múltiplos de 3 bloques. Las calles y la distancia entre los edificios serán preferiblemente de 5 a 11 cuadras de ancho, dependiendo de la importancia de la calle.
Cuando comience el plan para la ciudad, sabré exactamente qué tan grande quiero que sean los edificios y cuántos habrá.
El problema
El problema es diseñar el diseño de la ciudad. Obviamente, con algo de tal escala, y yo viniendo de un fondo de programación en lugar de un fondo de planificador urbano, es bastante difícil incluso comenzar a entender el problema.
El problema específicamente es que quiero que la ciudad se vea lo más natural posible. Por supuesto, esto sería bastante fácil de construir en un patrón de cuadrícula simple, pero quiero evitar una cuadrícula, o cualquier cosa que parezca una cuadrícula, tanto como sea posible.
La pregunta
¿Qué algoritmos podría seguir para ayudarme a diseñarlo usando código? Estaba pensando que se vería más natural si usara fractales de alguna manera, ya que Minecraft ya usa fractales en su generación de terreno, y una ciudad parece crecer en un patrón fractal naturalmente.
Creo que es similar en algunos aspectos a un algoritmo de juego de tetris, por lo que si alguien tiene soluciones que existan en esa dirección, también ayudaría. Me estoy imaginando algo donde podré definir las formas que quiero usar, y el software iterará hasta que encuentre la solución más "óptima" para una distribución uniforme de los edificios. ¿Ya existe algo para ayudarme a resolver este problema usando Python, preferiblemente de manera visual usando Pygame?
Naturalmente, esto también tiene implicaciones interesantes para la generación de ciudades en general en el diseño de juegos, por lo que estoy muy emocionado de ver cuál es la mejor solución.
editar Para ser claros, solo estoy buscando el diseño en este punto, ya que los edificios se diseñarán y construirán en el juego.
Respuestas:
Recientemente he implementado un algoritmo para un diseño de ciudad procesal. Todavía es un trabajo en progreso, pero me parece prometedor. Echar un vistazo:
El algoritmo utilizado para crear este diseño se basa libremente en L-Systems . Tengo una
Element
clase base , que tiene un rectángulo que marca su lugar en el mapa y un métodoGrow
, que crea otroElements
dentro del rectángulo y / o genera algunos objetos en el mapa. Luego hay elementos reales, heredadas de esta clase base:City
,Street
,Building
etc.La generación comienza con una serie de objetos "semilla" (en mi caso, solo un único
City
elemento colocado aleatoriamente en el mapa). Luego, el sistema itera sobre todos los elementos, invocandoGrow
, hasta que todos los elementos se vuelven inactivos (Grow
retornosfalse
), o pasa un gran número de iteraciones.La ciudad en la imagen se construye usando solo unas pocas reglas simples:
City
se convierte en unStreet
elemento que divide el área en algún lugar.Street
s crecen 0-3 calles laterales, dividiendo aún más el área.Street
continuamente intentamos colocar un tamaño aleatorioBuilding
a un lado.El resultado no es terriblemente interesante, pero tampoco está mal. El sistema se puede ampliar fácilmente y es lo suficientemente simple como para comprender lo que está sucediendo (-8
fuente
Existe esta charla de GDC sobre la generación de edificios procesales de hace un par de años. Es para crear edificios individuales basados en un conjunto de plantillas, pero no para crear ciudades enteras (diseño de calles, etc.). No hay ningún código gratuito que lo acompañe, desafortunadamente. El sistema descrito en la charla se implementa en Unreal, aunque no estoy claro si está en la versión gratuita de UDK o no. En cualquier caso, podría usar algunas de las mismas ideas para construir su propio sistema.
Buscar en Google "edificios procesales" o "ciudad procesal" también le proporcionará muchos otros documentos y artículos sobre el tema.
fuente
Me encontré con un tutorial muy bueno / detallado para crear ciudades procesales hace un tiempo. Hay un video @ http://www.youtube.com/watch?v=-d2-PtK4F6Y El tutorial está en el blog del autor: http://www.shamusyoung.com/twentysidedtale/?p=2940 Espero que esto ayude amb
fuente