Some friends and I play D&D through Fantasy Grounds. It's a great app, we have a lot of fun playing through it.
While we start getting used to it; there's been interest in being able to make custom things. From a couple friends who've tried to do this through the FG UI; it's less than ideal.
Which has me attempting to make a module maker. For 5E. I'll see what I can do for making it generic; but that's certainly not the first iteration.
My first iteration was figuring out how the fsck FG actually handled custom modules. That's figured out; now I know how to output custom modules. At least roughly.
The first coding task is to make a module using the sample I created and customize some of the default text. I started with NPC name changes, but... having written this blurb. I think doing the Module Name would be the best place to start.
This is totally being done via µOOP. Using some of the patterns I've discovered at work with the UWP app.
This is being set up as an open source project. It'll be some non-commercial license, but allowing me to sell it. No binary releases via github. That's my intent. I don't expect to make money off this; but I'm happy to sell it for a few pennies in an easy to consume form. :)
Of course, I fully expect this to exist; and there's a "PAR5E" which seems to be mostly it... Meh. I'm doing my thing because it's fun and I can customize it for my friends. :) Also PAR5E seems to have not been updated since early 2013...
a few days later
I've gotten the export complete. NPCs are fully exported now. It's not the nicest UI
See... An engineers UI if I've ever seen.
I don't have any slick things; everything is a string. It works though.
This all took me about 15 hours. The code's not in a state I want; but my friends have it and can provide feedback.
I know a couple things I want to do with it:
- Clean up the code
- Helpers for Entering Effects
- Helpers for Entering Actions
The big piece here is that the Actions Parser is... english-y. It's designed to parse the text from the books, like the monster manual. So it picks up key phrases. And not always usefully. You still need to know the skill to have it applied correctly.
This is going to result in finding a lot of examples and just kinda plopping down semi-english; which is parsed into the desired form.
The Effects, which I don't think I currently have any entries of, will be easier once I get to item/PC creation. It's a pretty simple lexical graph that can be implemented as a DSL and use popups/intellisense style to help the user. I'll have some fun implementing the intelligence for that piece.
The code clean up is gonna happen next. it's well structure for it; I have been beating the practices into my head - but I was experimenting and didn't want to block progress by forcing a form when I didn't know what it needed.
This worked well for me. It changed a few times. Totally shifted direction at least once. I did start the micro-object style; but it was getting in the way of making it work. I also don't have tests.
OMG!!!
Yeah, yeah. It's a project I'm spiking on. Once I micro-object this; it'll be easy to get tests around. Which will make setting up the rest of the module pretty quick and easy.
I see I said that it's being done totally µOOP... it'll end up there. I didn't know enough of the space and what it looked like to do that. I have enough; I have it working... now to apply the correct form. I expect it to simplify itself quite a bit.
That's all for now. I don't have the code online yet; more shame, I know. But keep following along; see what comes next!