Cody Shepherd
Cody Shepherd
Software engineer and D&D enthusiast
February 14th, 2021

Features of dm-tools at v1.2.0

Article cover photo

Snap Package

dm-tools is a set of applications written in Python and packaged as a strictly confined Snap. Snap packaging provides an easier maintenance workflow than debs or rpms, and it works well with the Python ecosystem by bundling all application dependencies and removing the requirement for the user to manage them. Strictly confined Snaps also have the added benefit of providing the user with assurances that the application is obeying the principal of least privilege in terms of its use of system resources, and gives the user tools to inspect an application's permissions in the form of its interface and plugs: simply run snap connections <snap name>.

dm-tools uses the home plug to enable the live-game app to save game state between sessions, and uses the network plug in order to query the open-source D&D 5e SRD API to automatically populate stats for SRD monsters. That's the extent of the application's permissions on any system.

Live-Game

live-game is an application for tracking combat encounters. Users can add and remove combatants on the fly, adjust HP, conditions, and initiative rolls, and can use the application to sort combatants by initiative and track each turn, often using only single keystrokes.

The interface of live-game is a curses-like GUI in the terminal that uses unicode emojis to display some information. A legend is provided on-screen for identifying the meaning of each emoji.

Plebs

plebs is an application that generates basic information text for one or more NPCs. It can be passed arguments to generate several NPCs at once, and to use one of several name generator algorithms. The application can also be passed an alternate configuration file to adjust the values and probabilities of each NPC attribute; documentation on the interface for this config file is forthcoming.

In addition to basic D&D ability scores, plus race and name for each NPC, plebs also generates a list of trinkets carried by the NPC (e.g. to help make pickpocketing more interesting), as well as a commoner occupation, three personality traits to help the DM in role-playing the NPC, and a problem that the NPC is having in their life when encountered by the players. NPC problems can work either as minor quests for the players to pursue, or simply aid the DM in creating flavor and immersion for their game.

Pockets

pockets simply generates a list of one or more interesting trinkets. Although some trinkets are inspired by those in various D&D books, they are all ultimately of my own creation, and I find myself adding more all the time.

Open Source

dm-tools is an open source project. Help make it better by submitting issues or PRs to the Github page.