Dragon’s Desk Dev Update #3

GMX File Deep Dive

The signature feature of Dragon’s Desk is my custom document file format, .gmx. With GMX, my goal is to innovate a new way of presenting TTRPG content that allows the reader to customize their experience and enables creators to present information in deeper and more flexible ways.

GMX Capabilities

To show off the format, I’ll walk you through my conversion of Yochai Gal’s Cairn module, Rise of the Blood Olms. At its foundation, GMX is primarily just Markdown formatting, perfect for frontmatter and introductory information and exposition.

The opening of Rise of the Blood Olms in GMX: a credits box, the About this Adventure heading, and a list of principles for the Warden.
The same opening written as plain Markdown in an online Markdown viewer, with the source on the left and the rendered preview on the right.

But to see the full power of GMX, the bread-and-butter of your modules is going to be in blocks to help organize your module’s information into clear sections. There are 10 types currently: location, room, encounter, trap, treasure, table, map, faction, entity, person. The only differences between most are the label and the color, no complex behaviors to worry about.

The Warden Information section as color-coded GMX blocks: a purple Faction block for The Order of Nine and green Location blocks for The Roots and The Silversilk River.

Authors can link to blocks from text elsewhere in the module, they are the main structure for your table of contents, and they can easily be nested under other blocks or table of contents headers to make sections and grouping clear.

The table of contents nested by block, beside Location, Faction, and Entity blocks whose text links to other blocks, each link colored by block type.

Users can currently bookmark or tag blocks, collapse them into just a header, and add highlights or notes on the text within them. You can filter the table of contents to hide particular block types, or filter the document itself to make selected block types default to collapsed. Hovering over a link also gives you a peek of the content on the other end.

GMX blocks with The Order of Nine and The Roots collapsed to their headers, and "visited" and "rumored" tags on the blocks below.
A hover preview of the linked room C2. Cave Entrance, showing its Terse and Hidden & Secret text with Keep open, Context, Open in New, and Pin buttons.

Another tool for authors is description layers, which are inspired by the Old School Essentials house style for communicating rooms. Currently there are Terse, Read-Aloud, and Hidden & Secret layers, so information can be clearly sorted into an overview, something the GM would be able to read to the players, and further information that might require investigation. Layers can be filtered and collapsed just like blocks.

The room block C1. Campsite with three description layers: Terse, Read-Aloud, and Hidden & Secret.

Added the Read-Aloud text as an example, the rest is original.

While it is extremely unfinished still, I am also developing a separate helper app to assist the process of converting documents to GMX. It will likely never have much true automation, but it already does well at reducing friction and I’ve done multiple myself.

The GMX Builder helper app, with GMX source and its block and link markup on the left and a live rendered preview on the right.

Some features under consideration

  • Customizable link density: Turn every Table of Contents keyword match into a link, keep whatever the author included, limit to one per block, or remove them altogether.
  • Custom blocks: Let authors or users rename or add block types (without affecting the original file, if users are doing it), customize colors precisely, and track at the app level so you can reuse your customizations across all your documents.

Conclusion

Some other time I’ll show off the array of document preferences that a nice reflowable format like GMX enables, as well as some of the utility panes that complement GMX reading. That’s all for today though, thank you all for reading!

Subscribe here ↓, follow on socials, or join the Discord so you don’t miss future updates. If you have ideas or feedback, feel free to email me at [email protected], I’d love to hear from you!