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

Proxy Information
Original URL
gemini://alexschroeder.ch/2014-01-27_Nethack_Mapping
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
161.686107 milliseconds
Gemini-to-HTML Time
1.223328 milliseconds

This content has been proxied by September (ba2dc).