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.
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
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.
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.
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.
22 comments
[ 3.8 ms ] story [ 51.3 ms ] threadDo I understand correctly that the Quint code is not needed 'at runtime', that it's there for model-based testing of the XState implementation?
"You’re not checking logic. You’re checking shape.". Ugh.
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.
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?
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 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.
Any opinions on this one for software development?
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.
That said, I would pay good money to look at the source code of some of the production MTG rule systems.
https://mtg.fandom.com/wiki/Layer
https://media.wizards.com/2026/downloads/MagicCompRules%2020...