22 comments

[ 3.8 ms ] story [ 51.3 ms ] thread
Dungeons & Dragons rules are a spec spanning thousands of pages, not formalized, but thoroughly tested by the community. Moving them to a formal specification language (Quint) was an obvious next step. It worked and proved to also be a great LLM self-checker.
Fantastic, I'd been daydreaming about doing similar for a while!

Do I understand correctly that the Quint code is not needed 'at runtime', that it's there for model-based testing of the XState implementation?

The "Grapple Leapfrog" is like the peasant railgun, and I think the "real" solution would be a recognition that order of conflict resolution in real time is not the same as ordering linear activities in game time.
This is so cool, I'll definitely be playing with in over the weekend. I meant to put Quint and D&D together in some similar ideas before but never found the time, so I love to see this coming alive from someone else <3
Shit like this results from a severe misunderstanding of what's enjoyable in a table-top RPG. It's not a fucking video game.
I think this is fantastic. I recently started playing DnD with a local group and can’t wait to dive into this to better understand the mechanics.
Maybe the content is great, but the AI writing style is really grating with its staccato sentences and faux-"profoundness". Can't bear it any more, stopped reading.

"You’re not checking logic. You’re checking shape.". Ugh.

Converting DnD rules and edge cases was always a bit of fun and became my "hello world" as I was learning stuff.

Years back, I worked at a company where the agreement required them to review any personal application that I created for a year or so after I left. I was super happy to send them iterations of my DM'ing tools - written for Java (micro edition), WinCE, Palm, and any other mobile gadgets I could get my hands on.

Around the 4th application I sent, the pharmaceutical company released me from the non-compete clause. I've always wondered if they were required to try and run the applications.

Someone please explain the grapple leapfrog example and why that "exploit" is interesting. If my players tried that, I'd happily let them use their full turns to do some crazy trapeze act across the battlefield.

And then I'd remind them that they could have just dashed normally.

Moreover, how do the new rules close the "exploit"? You can still move 30ft while carrying someone. (60/2 - 30 vs 60 - 30*2) How is that difference meaningful in this case?

(Also, wouldn't you need something like rogue's dash-as-a-bonus -action to grapple and dash on the same turn?)

The article is pretty interesting overall but this example mystifies me. Am I missing something obvious?

As someone who is trying to re-create the Pokémon system, I am running into similar issues. There many things going on a single "turn", especially with abilities that can pretty much change any of the game rules.
You are not only one trying to do it. There are others, and in other programming languages (Pokemon Showdown is one already implemented, but uses TypeScript with dependencies and I wanted to avoid those issues). What programming language did you intend to use?

I intended to do as a C library (which would then be available for other programs in C to call). I know many of the rules of Pokemon but not all of the cases, and then, knowing the data structures to make, etc. I also wanted to make the rules customizable (and to implement all generations, although perhaps only some of them will be implemented the first time and others later) and I have some ideas about that.

I would hope that some people can work on something together.

I am also using typescript and taking pokerogue and showdown as inspirations. Since my game is a nethack-like game, it isn't exactly the same, but I am using the mainline games move sets, formulas, abilities and trying to copy them.

I am also attempting to make it functional, the engine receives a game state and returns a new game state. I am using pure React for rendering but I plan moving it to canvas if I ever want to add more special mechanics. I am focusing mostly on functionality for now, it's very early stage but it already works.

I have a couple players that aggressively press for edge cases all the time. I encourage it, as it gives me the chance to push back with "ok, that's fine on flat ground but your in thick underbrush," which seems to be more immersive and encourages more roleplaying. Fun stuff.
Yet another specification language! And it also has a new sibling for distributed protocols: https://quint-lang.org/choreo

Any opinions on this one for software development?

One of my biggest issues with playing DND is that I never fully understood the rules. I'd play with people who had been playing for years, and they didn't explain things very well, and that made it hard to play. Hopefully, this will help with that.
Baldurs Gate 3 the video game taught me DnD, videogames where you can go at your own pace are a nice option.
I don't understand how "exploits" and "edge cases" can exist in a narrative-driven game where the DM can always just say "cut the shit" if they don't like what the players are doing. Or let it happen for rule of cool. At the end of the day the rules are whatever the DM says they are, and don't have to be rules as written.

Even combat can have a narrative element (and it should, to be fun.) There are rules yes but the game isn't supposed to be this rigid.

If you need formal verification for your D&D group that meets once a week, you have problems that LLMs will never solve for you.
I would love to see a model of Mythras/Runequest