Diagrama un árbol tecnológico

Muchos juegos de estrategia implican la investigación de tecnologías, y cada tecnología tiene un conjunto de requisitos previos (excepto las tecnologías iniciales). Estos pueden organizarse linealmente (niveles tecnológicos) o en forma de árbol (árbol tecnológico) .

Estoy buscando hacer un diagrama de un árbol tecnológico para un mod, ya sea para tecnologías de un juego ficticio de construcción de civilizaciones o una lista de cursos para un programa de grado.

Si hay un término mejor para esto que "árbol tecnológico", estoy totalmente de acuerdo. Mi búsqueda de algo así básicamente me llevó a modificar Civilization IV o Civilization V para que el juego en sí generara el árbol tecnológico, pero aunque eso podría funcionar, parece exactamente lo contrario de cómo lo abordaría yo. Eso llevaría mucho tiempo para que solo el juego se iniciara cada vez que hiciera un cambio, además, la única forma de verlo sería abrir el juego o juntar varias capturas de pantalla. Cuando modifiqué juegos, generalmente tenía un plan de juego, pero en este caso, ¿parece que estás usando el juego para hacer el plan de juego?

Básicamente, cada nodo del árbol puede tener cualquier número de requisitos previos y correquisitos.

Podría mapearlo en Visio, pero luego tendría que organizarlo todo manualmente. Me gustaría iterar sobre los requisitos que tiene un nodo y vincularlo automáticamente.

Tengo acceso a Visio, Photoshop, Illustrator, etc., pero parece que esas herramientas solo implicarán mucho esfuerzo manual que podría automatizarse y estaría sujeto a errores y cambios posteriores.

Me imagino que podría hacer esto yo mismo con unas tres tablas de base de datos y algo de HTML/CSS, pero no tengo tiempo para retomar otro proyecto de programación. También sería bueno saber si existen herramientas para hacer este tipo de cosas antes de aventurarme en esa dirección.

Requisitos:

  • Puede ejecutarse prácticamente en cualquier entorno, personalmente tengo Windows 8.1 x64, pero tengo máquinas virtuales de diferentes configuraciones disponibles.
  • Debe poder generar algún formato sensato , como HTML con imágenes, una imagen SVG o un PDF. No quiero que salga a algún formato como XML que no podría tomar y mostrar a alguien o mirar sin abrir el programa.
  • Necesita poder guardarlo en su formato nativo (sea lo que sea) para poder editarlo sin reconstruir todo el árbol.
  • Necesita tener un conjunto de "nodos", cada uno de los cuales tiene un conjunto de requisitos previos

Es bueno tener:

  • Alguna interfaz gráfica (GUI) para diseñar y configurar nodos. No quiero perforar archivos XML
  • Agregue una copia e imágenes descriptivas a cada nodo (no solo un título)

Alternativamente, si hay un buen enfoque para esto en Visio, estoy abierto a sugerencias.

No gratis pero potencialmente interesante: flyinglogic.com
Tienes una respuesta (la que yo habría dado), pero solo quiero estar seguro de que sabes que tiene un sitio dedicado al desarrollo de juegos: gamedev.stackexchange.com

Respuestas (3)

La organización automática de un árbol se puede hacer con Graphviz :

  • libre y de código abierto (Licencia pública de Eclipse)
  • Windows/Linux/Mac
  • Muchos formatos de salida, incluidos SVG y PDF

Ejemplo:ingrese la descripción de la imagen aquí

es generado por:

/* courtesy Ian Darwin and Geoff Collyer, Softquad Inc. */
digraph unix {
    size="6,6";
    node [color=lightblue2, style=filled];
    "5th Edition" -> "6th Edition";
    "5th Edition" -> "PWB 1.0";
    "6th Edition" -> "LSX";
    "6th Edition" -> "1 BSD";
    "6th Edition" -> "Mini Unix";
    "6th Edition" -> "Wollongong";
    "6th Edition" -> "Interdata";
    "Interdata" -> "Unix/TS 3.0";
    "Interdata" -> "PWB 2.0";
    "Interdata" -> "7th Edition";
    "7th Edition" -> "8th Edition";
    "7th Edition" -> "32V";
    "7th Edition" -> "V7M";
    "7th Edition" -> "Ultrix-11";
    "7th Edition" -> "Xenix";
    "7th Edition" -> "UniPlus+";
    "V7M" -> "Ultrix-11";
    "8th Edition" -> "9th Edition";
    "1 BSD" -> "2 BSD";
    "2 BSD" -> "2.8 BSD";
    "2.8 BSD" -> "Ultrix-11";
    "2.8 BSD" -> "2.9 BSD";
    "32V" -> "3 BSD";
    "3 BSD" -> "4 BSD";
    "4 BSD" -> "4.1 BSD";
    "4.1 BSD" -> "4.2 BSD";
    "4.1 BSD" -> "2.8 BSD";
    "4.1 BSD" -> "8th Edition";
    "4.2 BSD" -> "4.3 BSD";
    "4.2 BSD" -> "Ultrix-32";
    "PWB 1.0" -> "PWB 1.2";
    "PWB 1.0" -> "USG 1.0";
    "PWB 1.2" -> "PWB 2.0";
    "USG 1.0" -> "CB Unix 1";
    "USG 1.0" -> "USG 2.0";
    "CB Unix 1" -> "CB Unix 2";
    "CB Unix 2" -> "CB Unix 3";
    "CB Unix 3" -> "Unix/TS++";
    "CB Unix 3" -> "PDP-11 Sys V";
    "USG 2.0" -> "USG 3.0";
    "USG 3.0" -> "Unix/TS 3.0";
    "PWB 2.0" -> "Unix/TS 3.0";
    "Unix/TS 1.0" -> "Unix/TS 3.0";
    "Unix/TS 3.0" -> "TS 4.0";
    "Unix/TS++" -> "TS 4.0";
    "CB Unix 3" -> "TS 4.0";
    "TS 4.0" -> "System V.0";
    "System V.0" -> "System V.2";
    "System V.2" -> "System V.3";
}

Puede agrupar nodos :

ingrese la descripción de la imagen aquí

digraph G {

    subgraph cluster_0 {
        style=filled;
        color=lightgrey;
        node [style=filled,color=white];
        a0 -> a1 -> a2 -> a3;
        label = "process #1";
    }

    subgraph cluster_1 {
        node [style=filled];
        b0 -> b1 -> b2 -> b3;
        label = "process #2";
        color=blue
    }
    start -> a0;
    start -> b0;
    a1 -> b3;
    b2 -> a3;
    a3 -> a0;
    a3 -> end;
    b3 -> end;

    start [shape=Mdiamond];
    end [shape=Msquare];
}
De acuerdo, marcado como respuesta (por ahora). Pude hacerlo funcionar con una prueba: imgur.com/2p0ELe6 . Tiene una entrada lo suficientemente simple que podría generar mediante programación y luego agregarla y (opcionalmente) genera SVG para que pueda formatear en el lenguaje de puntos o en SVG con generación de código de procesamiento posterior y CSS. Gracias El único problema que veo es que no veo de inmediato una forma de denotar sintácticamente algo como opcional. La imagen de muestra (arriba), cualquiera de las tres tecnologías, permite investigar la escritura. Eso es una necesidad clara para esto, pero lo solucionaré por ahora.
¿Qué hay de cambiar las formas de los nodos ( graphviz.org/doc/info/shapes.html ), el color, etc., para indicar que son opcionales?
Los enlaces son opcionales, no la tecnología. Por ejemplo, la Escritura se desbloquea con Sacerdocio, Cerámica o Cría de animales en el juego base Civilization IV. Aún querrá investigar los tres para técnicos en el futuro, pero solo se requiere uno para comenzar a investigar la escritura. ¿Cambia eso tu sugerencia?
1. También podemos cambiar las formas de los bordes ( graphviz.org/doc/info/attrs.html ) 2. Parece que podría querer agregar puertas AND u OR ( en.wikipedia.org/wiki/Logic_gate ) para distinguir si necesita todos los requisitos previos o solo uno.
El otro método que he visto para ilustrar algo que al menos n son necesarios para algunos descendientes pero específicos para otros es encuadrar el conjunto de opciones (posiblemente con un título cualquiera de 1 de) y tener aquellas donde cualquiera haría enlace al cuadro, mientras que aquellos que requieren detalles específicos pueden vincularse a ellos.

yEd cumple con los requisitos enumerados, es potente y fácil de usar. Es gratuito y se ejecuta en varias plataformas (requiere Java).

Vea sus características .

Aquí está mi árbol de construcción hecho con él:

ingrese la descripción de la imagen aquí

Interesante. Le daré un vistazo.
@Krom, ¿de dónde sacaste esos íconos?
Las imágenes de @SAxworthy se tomaron del juego de estrategia en tiempo real Knights and Merchants. Pensándolo bien, será mejor que los reemplace con algo neutral.
Funciona bien y permite propiedades personalizadas en nodos, bordes o un gráfico en general. La exportación a GraphML conserva las propiedades personalizadas, pero el formato GML no. Usaré esto para diseñar mis árboles tecnológicos de juegos. Casi comencé a escribir mi propio editor de árboles tecnológicos. Me alegro de haber encontrado esta publicación.

FreePlane es una herramienta gratuita y sencilla para crear árboles y mapas mentales. Lo uso para intercambiar ideas sobre casi todos mis proyectos de programación.

  • Se ejecuta en Windows, Mac o Linux
  • Puede exportar a varios formatos, incluidos PDF y Latex
  • Guarda en un formato nativo *.mmpara futuras ediciones .
  • Tiene un sistema de nodos padre/hijo
  • Ofrece la opción de trabajar tanto en GUI como en script
  • Soporta imágenes + descripción

Aquí hay un par de ejemplos proporcionados por el desarrollador:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Hmm, probé esto y no me gustó mucho su interfaz. Traté de crear cinco notas "raíz" (supongo que técnicamente serían nodos libres) pero estaba siendo obstinado y las estaba agrupando y parecía insistir en que todo se mapeara de nuevo a la raíz. A partir de la imagen de ejemplo, parece que esto sería posible, pero en realidad puede ser más fácil hacerlo en Graphviz, usando un editor de texto, línea de comando, raspado de datos y generación de código en lugar de perder el tiempo con una interfaz gráfica de usuario difícil de comprender. ¡Gracias!