Pathing of Least Resistance

Erik Elmshauser and Corwin Brust

This time slot was combined with the previous. See 28: Welcome to the Dungeon for the video and notes from the pad.

We hope the dungeon-mode project will eventually support three primary use-cases related to editing/designing, playing and running/hosting RPG games. In a "vanilla" game, characters descend from the "General Store" (the one safe haven available) into the dungeon, a (nominally) underground labyrinth of unknown dimensions with generally asocial occupants and occasional bits of treasure.

Players can track (as long as the "lights" stay on) the location of their party of characters via a process we usually call "mapping". This has usually involved the dungeon master "calling out" the shape of the map level as the party, in turn, calls out their route or "pathing" decisions.

   "Corridor East-West"
   "Ten feet, corridor ends goes South"
   "Step into an area.  It's a
    twenty-by-twenty area extending
   West, with exits in the Western
   part of the southern wall and the
   Southern part of the eastern wall."
          **rolls dice**
   "Nothing waiting in the area"

Mapping quickly emerged as a focal point for development. Especially, we were to excited to try creating an 'on-the-fly' graphical representation of the map that could respond to changing in-game circumstances. (Oops, all your Elves are dead. Where'd the secret doors go?)

During this 20m talk I'll provide a couple of reference points on Emacs's image and especially SVG rendering capabilities, then introduce a series of proofs-of-concept focusing on our experience using core libraries such as `svg.el' to make them.

As of submitting abstracts, these include

  • "DM map view" - select and render a complete game map,
  • "play mode map" - progressively render maps based on game action,
  • "battle-board" - track damage taken by player characters, and
  • "character-sheet" - a graphical character sheet
  • "previews" - view map tiles when hovering their draw code in org
  • "sketch" - a "click-to-draw" experiment

For an advanced peek please see our git repository (but note we're moving to Savannah soon). We'll be talking first about map.el, especially `dm-map-draw' and helpers. A few sample game maps this can render are available as org-mode documents in the Docs/Maps folder.

Those interested could compare functions between dm-map.el and dm-draw.el, which is an incomplete rewrite of the "SVG rendering" functions used only by dm-sketch.el (so far). Hopefully, it will be writing our "sketches" back out to org docs in time for the conference.

Note on github: The project is transitioning to Savannah. Please watch for redirects/moved notices when using these links.

Additional Materials

org, svgtar.gz25kNotes for all talks
demowebm26mCharacter Sheet
demowebm19m"Sketch" Map and Tile editor
demowebm16mBattleboard, damage tracking
demowebm9mGame Maps, controlling fog-of-war
demogif724mAll demos, no overlays
demojson274KOBS scenes
elispwww Corwin's init files

This time slot was combined with the previous. See 28: Welcome to the Dungeon for the video and notes from the pad.