2014-01-27 Nethack Mapping

Today, as we were exploring a ruin of Ianna, I decided I wanted to start mapping on my iPad. But how? Enter ASCII art.

▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓░▓┌─┐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓░░=·│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓v▓└─┘▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓v▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓░▓▓┌────┐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓=▓▓│····│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓░░░=····=░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓░░▓▓│····│▓^▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓░▓▓▓└────┘▓^▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓░▓▓▓▓▓▓▓▓▓▓^▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓^▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓^▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓^▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓^▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓^▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓��▓▓▓▓▓▓▓▓┌·┐▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓│≈·░<░░░▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓└─┘▓▓░░░▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓░░░▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░▓▓░░░▓▓░░░░▒▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓░░░▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓
▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓

It’s ugly. It doesn’t do slanted passages. It’s slow. But it worked... :dead:

Perhaps I should just have stuck to the old style:

                                   ---------                --------------
                                 ##.<......|                |............|
                                 # |.......|               #-............|
                              `# #........|             `#---------.----
                               #   |.......-#            #           #
                             Y@#   |.......|#          `#         `#
                             #     |.......|#          #           #
                          ..       ---------`# -------#         `#
                         --                   # |......#         #
                                              `......|  ``#`###
                                                |>....|       --+-.------
                                                |.....|       |.........|
                                                -------       |.........|
                                                              |.........|
                                                              |.........|
                                                              |.........|
                                                              -----------

Perhaps what I need is a program that takes a text description of the dungeon and turns it into ASCII art.

Then again, once we do that, perhaps we might as well do node-based dungeon mapping. I might have to read that series of blog posts by Keith Davies again.

node-based dungeon mapping

Then again, I’ve just skimmed Random Dungeon Generators Reviewed on Inkwell Ideas. Generating good random maps is hard. I still wonder, however. How hard would it be if you provided some input?

Random Dungeon Generators Reviewed

​#RPG

Comments

(Please contact me if you want to remove your comment.)

Isn’t this something you should find in some of the roguelikes?

– Harald 2014-01-28 18:41 UTC

---

There I would find random map generation – but I need “automatic, constraint-based layout” or something like that. I can’t just write rooms and how they connect and have graphviz lay it out for me because then I’d lose “north of x is y” and the like.

graphviz

Asciiflow looks like something I’d like, but it doesn’t work for my tablet. Maybe ASCII graphs could be turned into something useful. Once we have the ASCII graph we would use ditaa to turn it into a bitmap. Perhaps. 😄

Asciiflow

ASCII graphs

ditaa

What would the input look like?

Start in entrance.
North is a big hall.
Exits left, right.
The hall continues north.
An exit left leads to a room.
A secret door in the north leads to a descending corridor.
It is long.
A door on the left.
It leads to a banquet hall.
Another door in the west.

From the big hall, the first exit left ends in a guard room.

– Alex Schroeder 2014-01-28 20:21 UTC

Alex Schroeder

---

Hi Alex, I’m glad you like the node-based dungeon material. I’m pretty proud of that series.

It is possible to control GraphViz layout, at least to some degree. There are ways to finesse it, the megadungeon map shown in the link you have to my site looks a lot different without my setting constraints on relationships, including adding invisible nodes and edges and making others “weightless” so they are ignored for layout purposes. However, you can also explicitly set placement and, I believe, size. I have not tried it myself, though.

For some other projects I have been using PGF/!TikZ (LaTeX package) to draw diagrams. I have to place the nodes myself, but can do so relatively (this node is above that node, that node is left of this other node; draw paths from this to that and that to this other) and/or absolutely (place the node at this point), all text-based. You can see some examples in my G+ “Pathfinder Diagrams” album at https://plus.google.com/u/0/photos/+KeithJDavies/albums/5910368563777993617

LaTeX

https://plus.google.com/u/0/photos/+KeithJDavies/albums/5910368563777993617

My use of it has not been quite as sophisticated as what you describe, but I believe a syntax could be defined that could be automatically translated to the type of images you describe.

Keith

– Keith Davies 2014-01-28 23:48 UTC

Keith Davies

---

Wow, these Pathfinder Diagrams look good!

– Alex Schroeder 2014-01-29 10:02 UTC

Alex Schroeder

---

Thanks. The technology isn’t hard, but there was a bit of a learning curve there (that I haven’t finished climbing; there has to be a better way to manage the Z-order and get hyperlinks working again in the nodes).

Layout can be the challenging part for the larger ones, though. So many nodes and edges, and I’m trying as much as possible to minimize intersection.

– Keith Davies 2014-01-30 16:11 UTC

Keith Davies