Hacker News new | past | comments | ask | show | jobs | submit login

This project has been my full-time for the past six months or so (coming up on a year since I joined the Great Resignation and decided to try my hand at self-employment). I release somewhere between 2 and 10 times per week.

I set out to build something that I could use as a game master at the table without having to put the game on hold as I navigated through menus and bookmarks for the various references and generators I use. My general design principle is that everything in the app should be available at any time, with no need to navigate menus on one extreme, or read documentation on the other.

The core is written entirely in Rust with a couple of hundred lines of JS glue. I was running it as a command-line app for the first month of development, and it still works as such. However, since I added autocomplete to the web interface, the web version is now more feature-complete than the command line. I don't see much value in the extra work of backporting features to the command line at this point. (Turns out Rust was the wrong choice for this particular project, but the die is cast for the moment, and it has been fun.)

I've barely scratched the surface of the feature that I'm most excited by, namely context. Soon it will be possible to tell the app where the party is and what they're doing, and the demographics of suggestions (and ultimately music, lighting, and other integrations) will be updated accordingly. In a seedy bar in the docks district? You're more likely to run into sailors down on their luck. Pick a fight? Cue the epic music. Sun sets? Dim the lights.

More details are available on my blog:


I do have plans to monetize this project in the future, charging for the server-side features (integrations and cloud sync) while keeping the client-side features free. Everything that is currently implemented will always be free.

I run an active PbP on Paizo.com and pre-covid I ran a lot of in-person games.

Before I was active DM, I thought computer initiative and rule aids would be great. As a DM, I don't imagine they would be for several reasons. A) I have accumulated an encyclopedic master of game rules (running the Pathfinder system, perhaps the most complex D&D variant). B) Dice and tables have a certain "feel" to them that stopping and doing something on one's laptop just doesn't. C) In person, I keep each players stats on a 3"x5" and stack the cards for initiative - this solve 99% of initiative problems, it has a nice physical feel and all my players, some of who will be computer-incompetent if not computer-illiterate.

I say all this because I think there are places where computer aids could shine:

1) Character generation - despite lots of projects, there's nothing yet that quickly and complete edittable characters for Pathfinder at least.

2) Map-aids for PbP. Roll20 and related systems simulate the whole in person game framework. Discord and most PbP basically just let you roll dice and maybe change stats with markup. A markup system that also allows change one's location on a map, along with system to manage that, would be cool and make the PbP system richer without forcing it into a "heavy" Roll20 type approach.

My experiences have been similar. I do still need to look up spells and item prices and such from time to time, so I did integrate those from 5e since the data is readily available[0] under a free(-ish) license. I figure if you need to look up rules, you're probably better off pulling out a book and using the index.

I don't expect my character generators to surpass the many resources that are out there already. The one way in which they might be superior is that they'll offer suggestions that make more sense given the current setting, as well as being readily available. I do want the app to help with stage management, since I don't have the attention to spare for picking out music or managing lighting as I'm trying to tell a story.

Definitely agree about Roll20 being too heavy. I just want to drag tokens around on a map. Unfortunately, that's also a very different project from the one I'm building. I haven't used it at the table, but Schmeppy[1] might be closer to what you're looking for. I look forward to trying out the Dynamic Dungeons Editor once I'm back to playing in-person, too.[2]

[0] https://github.com/5e-bits/5e-database

[1] https://shmeppy.com/

[2] https://store.steampowered.com/app/1694430/Dynamic_Dungeons_...

Super awesome!

Feature request: up-arrow support (like bash shell has). IE: I want to reply the last command, or fix something in it (because I typed it wrong). Being able to up-arrow through my command history is something I use regularly on my normal command line, and would be cool to have here.

Yup, that's planned for the next milestone. :)

Update: done!

Agree with this 100%

> Turns out Rust was the wrong choice for this particular project

Curious. What made it a bad choice for this?

I'll write a blog post on the subject in a few weeks, which will probably end up here because Rust. The short version:

* This use case involves tons of string parsing and concatenating, which vanilla Rust does not make intuitive. A garbage-collected language would also probably handle this more efficiently than I can, given that Rust is doing exactly what I tell it and I don't have the time or inclination to microoptimize piles of parsing code.

* Generally, the work is sufficiently high-level to require large swaths of the standard library and a fair number of dependencies despite my best efforts.

* I've built a brick wall between myself and my data store. Ultimately persistence happens in IndexedDB with a JS shim, but currently the application loads the entire contents of your IndexedDB database into memory and runs based on that.

The WASM binary weighs in at 1.6 MB (500 kB over the wire). The source, without excluding tests, comes in at 580 kB (estimate 400 kB of actual code). If it were Typescript, I could probably minify that down to 200 kB or less, and that would still be plain text and achieve a better compression ratio than my WASM binary.

Mind you, I haven't put in a huge amount of work to stripping down the binary. But that's more or less the point: choosing Rust/WASM ended up having a lot of down sides without much in the way of up side, save for one: it's been a lot of fun to do, and I probably wouldn't have made it this far in a language I didn't enjoy as much.

This is great! Charging for integrations is a nice idea.

I wrote a Discord bot to trade stocks for my current industrial revolution campaign, as our DM maintains a stock market in Google Sheets. If I could upload my node modules somewhere and have it run on command like the Discord bot, I'd never have to leave this command line.

One of my biggest complaints about Discord for D&D is that it doesn't have command line functionality. Excited to hear that up-arrow is coming to this.

Wow, this is one of those elegant solutions that seems so obvious in retrospect - I tried developing a custom iPad app for DMing and found the huge amount of complexity of DMing really difficult to design around - a text interface is a really fantastic idea

Surprised noone has asked - any plans to make it open source and/or a self-hosted option? Would love to hack away at it, and would love to see the source or at the very least an API for integrations

Currently the core is planned to remain closed source, although if I decide to put the project on ice at any point in the future I'll definitely put the source out there, that being a general pet peeve of mine.

I do have plans to build out integrations, starting with webhooks triggered on events like creating characters, advancing time, or moving between places. I've also heard some requests for a bona fide command-line binary, which I might do if the demand is there. The maintenance overhead is not insignificant, though.

Sounds like a good plan - hooks for datastores or even data types along with event hooks would also be good, but not as key. Being able to place arbitrary notes on characters/items/objects would be good (For example - I'd like to say this NPC is a ranger, and someday you may add classes, but arbitrary notes would be also just as good)

This is where my mind goes - If this acted like a very thin layer that integrated with the plentiful amount of DM tools that already existed, and brought the context info with it, it would be a very powerful tool to centralize all this info. For example, I create a dungeon, the name generated either by your tool or by an API call to an existing service that parses and passes data into your system, then another hook generates a map and saves the persistent url/hash/some identifier into a custom field on that object.

If done right, there could be a minimal but flexible API with purely client side hooks that the community could leverage to bring more features - off loading a lot of work without needing to opensource it.

Of course, having said all that, even just as it is right now is super useful and exciting and I likely will use it even without any of those things!

This is an interesting tool and I could easily see it becoming a great add-on to campaigns as-is, and hopefully become more usable and feature-rich as you develop it further. Reading your replies to other comments about what you want to add to it and the ability to make changes to the world based upon input sounds awesome. Keep up the great work!

> the die is cast


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact