Feature Suggestion: Lightweight mapping (fast, easy and helpful)



  • I'm dating myself horribly, but back when I was a kid, I played what is now known as "interactive fiction." You were in the story, interacting with -- not exactly natural language -- but with a parser trying its best to emulate natural language.

    Movement generally relied on cardinal directions. It was quite common to play a game where you'd need to map the environment as you go. The game was giving you text descriptions, so you'd be in your bedroom with a notebook and physically mapping it out. I don't know about other people, but when I drew my maps, I wrote in the title of the place, circled it, then depending on the direction of movement, I'd branch out from there.

    It turns out that those maps I made in my youth look a lot like undirected graphs. More than that, they're basically the simplest form of map a person can scratch together and still be useful.

    Let's take an example from one of my stories. I've been using GraphViz, so this example is of a three-floor house in the DOT file format:

    graph "Aunt Carol's House" {
    
        subgraph cluster_0 {
            label="Upstairs";
            "Upstairs hall"; "Onsuite bathroom";
            "Craft Room"; "Carol's bedroom";
            "Shared bath";
        }
        subgraph cluster_1 {
            label="Downstairs";
            "Kitchen"; "Living Room"; "Entrance";
            "Half bath"; "Backdoor";
        }
        subgraph cluster_2 {
            label="Basement";
            "Unfinished basement";
        }
    
        "Entrance" -- "Living Room";
        "Kitchen" -- "Living Room";
        "Kitchen" -- "Backdoor";
        "Craft Room" -- "Upstairs hall";
        "Carol's bedroom" -- "Upstairs hall";
        "Onsuite bathroom" -- "Carol's bedroom";
        "Shared bath" -- "Upstairs hall";
        "Half bath" -- "Living Room";
        "Upstairs hall" -- "Living Room";
        "Living Room" -- "Unfinished basement";
    
    }
    

    It's really super simple to write, and it allows me to see a map of how everything fits together. "What rooms are passed through when going from the kitchen to Carol's Bedroom?" It's easy for me to find out by walking my graph.

    One of the reasons I particularly like it is that it doesn't marry me to details that aren't inside the story. Is there actually a hallway I didn't mention? Well, if there's a reason for it, sure.

    Anyway, GraphViz is cool for static graphs, but for a web-based solution... we have all kinds of fancy Javascript visualization libraries these days. Pretty, live, move the nodes around, etc. The sort of features that might convince even the non-DOT fans that it might do the job.

    If you're dealing with a simple undirected graph, where the system makes all the visualization decisions, you're really just adding relationships to the locations between each other, right? Everything else would be done by cytoscape.js or something.

    Minimal work to get a usable map. Not a pretty map maybe, but if eventually folks can move the nodes around to persistently situate them as they like, I think you'd mitigate the worse of the concerns.


  • Plotist Team: Community Storyteller

    Interesting! I'll point @jaycano and @simon at this!


  • Plotist Team: Keepers of Code

    This is quite a cool idea! We want to add more visualizations to our toolklit, and we already have a few in mind. One of them is graphs, but we never thought of using it for mapping locations, just for showing relationships. We'll add it to our list of ideas. Although for maps we would like to have something more visual than a graph representation, it could be a good first step and it opens up for many types of analysis that could be quite useful.

    GraphViz is quite cool, by the way. I used it for a bit when I was doing research on social networks (as in networks of friends, not Facebook and the like). If you have big graphs and want something pretty, I would look into Gephi, which has a big focus on aesthetics. It's what I used for presentations.

    And for web charting libraries, we know a few. We will probably end up using D3 or related for it's flexibility and the amount of plugins it offers, but we still have to go through an evaluation process to see what would work best for whatever we want to do at that point.

    Thanks for the suggestion!


Log in to reply
 

Looks like your connection to Plotist's Awesome Writers was lost, please wait while we try to reconnect.