Estoy desarrollando un mundo de juego generado por procedimiento en Python. La estructura del mundo será similar al paradigma MUD/MUSH de habitaciones y salidas dispuestas como un gráfico dirigido (las habitaciones son nodos, las salidas son bordes). (Tenga en cuenta que esto es no necesariamente un gráfico acíclico, aunque estoy dispuesto a considerar soluciones acíclicos.)¿Cuál es una buena estrategia para construir un gráfico dirigido para un mapa del juego (en Python)?
Para el algoritmo de generación de mundo, habitaciones de diferentes tipos se distinguen por atributo "etiquetas" de cada habitación (una conjunto de cuerdas). Una vez que se han instanciado, las salas pueden consultarse y seleccionarse mediante etiquetas (etiqueta única, intersección de etiquetas, unión de etiquetas, mejor candidato).
Crearé tipos específicos de habitaciones utilizando un sistema glorificado de objetos de plantilla y métodos de fábrica. No creo que los detalles sean importantes aquí, ya que la implementación actual probablemente cambiará para coincidir con la estrategia elegida. (Por ejemplo, sería posible añadir etiquetas y etiquetas-consultas al sistema de plantilla de sala.)
Por ejemplo, voy a tener habitaciones de este tipo:
side_street
,main_street
, plaza, bar, hotel, restaurant, shop, office
Por último, la pregunta: ¿cuál es ¿una buena estrategia para crear instancias y organizar estas salas para crear un gráfico que pueda corresponder a las reglas dadas?
Algunas reglas pueden incluir: una plaza por cada 10.000 habitantes; main_street
se conecta a plaza
; side_street
se conecta a main_street
o side_street
; hotel
favorece las conexiones main_street
o plaza
, y recibe etiquetas adicionales en consecuencia; etc.
Puntos de bonificación si una estrategia sugerida permite una implementación basada en datos.
-1: El OP pregunta por un enfoque de gráfico de espacio no coordinado, que se usa en muchos juegos con bastante éxito (y permite más interconexiones irregulares, que pueden ser bastante útiles). Usted describe un enfoque totalmente diferente (no necesariamente mejor). –
Además, un árbol no es la estructura de datos correcta para esta aplicación. El OP dijo que el gráfico, y se refería a la gráfica. Un árbol es solo un gráfico acíclico, y usted no quiere la restricción acíclica en este caso. –
@Carl Meyer: "El OP pregunta por un enfoque de gráfico de espacio no coordinado" Es bueno saberlo. Me pregunto cómo lo sabes? ¿Alguna palabra o frase en la pregunta que indique esto? No pude encontrar ninguno. ¿Qué me perdí? –