RPGs and Programming Languages

On the subject of edition kerfuffle (prompted by D&D one), I had a thought…

D&D 5e is to D&D 3.5 as Java is to C++.

Even more, C++ as I programmed it some 20-odd years ago, not C++ as it is today. Today’s C++ would be Pathfinder 1e.

I shared this thought with Nik, and then we came up with some more.

  • I’m not wholly confident to compare D&D 4e to C#, but I’m prepared to listen to someone make that case. If 4e doesn’t quite fit, perhaps Pathfinder 2e will, it has quite a bit of 4e DNA.
  • B/X (Holmes) and BECMI? Pascal (or perhaps better fit, Delphi/Object Pascal).
    • Moldvay Basic, on the other hand, has been suggested as a good fit for BASIC. I think I can see it.
  • AD&D (1e and 2e)? I’d accept MODULA-2 (Pascal was deliberately a teaching language, MODULA-2 was stricter and intended for production use, including being case-sensitive and mandating separation of interface and implementation).
  • GURPS? I’m thinking FORTRAN. COBOL was suggested, but FORTRAN is mostly about math and I can still read FORTRAN if needed (just as I’ll read GURPS for research and genre concepts.
    • For COBOL, I’m leaning toward Aria: Canticle of the Monomyth. They’re both similarly opaque and tiresome to read. (I remember Aria: Worlds being much more approachable… but it was a supplement and not the game itself.)
  • Hero System? First suggestion was assembly, and I get it. Hero is built around primitives and just as assembly is close to the metal, you build everything up from there. I see a lot of merit here.
    • I lean more toward Perl, though. Hero System is close to the metal but there is enough structure and convenience built into the design that I’m not comfortable saying the pieces are as small. Also, there are many little oddities and edge cases (not uncommon in assembly, true, but very common in Perl… and the reason the Hero 6e core books are so big is explaining all the little oddities), so many bolt-ons (genre books that explain how to bend it to purpose or offering different interpretations to better fit genre), and different ways to implement similar concepts, depending on exactly what you’re aiming for.
    • Also, just as Perl is a go-to language for me for incidental problem solving, Hero System is my go-to for design verification in other games. I’ll use Perl for ad hoc analyses, I don’t see myself ever doing that with assembly.
    • Alternate suggestion: “I’d say Hero is Forth – a ‘write your own system’ system, difficult to grasp, powerful if your way of thinking meshes well with it.” Seconded by Joshua below.
  • Savage Worlds? Python. Regular structure and syntax, and enough almost-compatible additions to suit different needs.
  • PbtA? I’m leaning toward LISP/Scheme. On the face of it quite simple, but enough of a mind shift needed to really grok.
    • Fate might also fit here, honestly.
  • Wisher, Theurgist, Fatalist? Brainfuck. I’ll have to accept Nik’s interpretation on this, while I have read the Brainfuck spec (and backed away carefully) I had never heard of this game before tonight.

Any other good fits? Or reasons the above don’t fit?


    • I’d say AD&D is COBOL: as ugly as some of its subsystems are, it gets the job done, millions more used it at its height than whatever your favorite language is, and there are still grognards using it in the exact same way they did 40 years ago. 2e would be MicroFocus COBOL, modernization partially crippled by need for backwards compatibility.

      Pathfinder is C#: it’s the version that was created to be Java when the legal rules didn’t just let Microsoft add what they wanted and still call it Java. Of course strictly that would make 3.x Java, and 5e would have to be, I dunno Kotlin. But that’s probably fair, since almost all of the concepts in 5e are lifted from 3.5, just made less cumbersome with a couple of syntactic sugar innovations.

      Hero is Forth: sure it’s elegant and modular, but you’re going to have to sit down and build things that would be primitives in other systems (like powers) yourself, and it has no compatibility with the mainstream (D&D/C or Algol derived) languages so using anything at all from another system is essentially rewriting it.

      I’m not sure about Savage Worlds as Python. I think I see it more like Perl: it’s deceptively simple, but you can fill a forum with arguments about edge cases and clarification on exactly how certain parts interact, and there are fans who will use it for absolutely everything.

      Holmes is Basic, BECMI is Visual Basic. Not sure where that leaves Moldvay, Apple Basic maybe?

      • I understand your reasoning for AD&D and COBOL… but I liked AD&D at the time, I never liked COBOL (I still don’t know how I managed to sleaze through that course completing only a single lab). I’ll thnk about it.

        You’re the second person I’ve seen to suggest Forth. I’ve never worked with Forth so it did not occur to me, but everything I’m seeing now suggests it’s a great fit.

        With Hero being Forth, that frees up Perl for Savage Worlds, and I can see that.

        I’m still on the fence regarding Moldvay/Holmes/BECMI. I feel like BECMI really only fits BASIC in the red box, but once you get to Expert and Companion you’re moving beyond it. That’s why I leaned more toward Pascal.

  1. Reverance Pavane

    Surely Pathfinder 1e would be C, particularly with regard to memory allocation (or rather its disposal). Pathfinder 2e would be C++, and it’s attempt to keep memory constraints under control.

    Hero is not Perl. By 4E it’s primary focus is in the accounting, so SQL or even Excel. A very explicit functionality and number handling. [And yes 6E did undergo reversion control from the super strict 5E, to something more similar to 3E, but it still emphasises the accounting.]

    GURPS is not Fortran, which is heavily formalised and typed. It need a language with a lot of customisable extensibility and a huge library of unknown functions that could solve the problem if you only knew they existed. Admittedly that could be Perl, but I suspect Python is really the better fit here. The standardisation of Perl libraries might suit Savage Worlds better. Really they are both much of a muchness.

    Cobol was written to be easily readable by management types, so it’s probably Amber and similar diceless systems with a high degree of GM fiat.

    PbtA probably should be Lingua, since mostly you are handling the narration and then testing the conditions that result from that narration.

    Holmes is pretty unintelligible since it combined multiple sources without really discarding anything, and attempting to reconcile the result. Which does bring to mind the development history of Algol. Nobody really read the documentation there either. Which leads directly to…

    AD&D and BECMI attempted to formalise things and introduce standard practice in play, so Pascal. Especially in the many variations that look the same but really behave somewhat differently when you dig down into the details. Would that make 3E Modula and 4E Oberon?

    A LARP or freeform would probably be Julia with its emphasis on the networking layer and handling a large number of players and their demands.

    I might consider the One Role Engine to be akin to APL, especially given the importance of handling vectors in the dice pool and the potential for high degree abstraction.

    YMWV. [I’m sure I could think of better alternatives if my brain was actually working.]

    • I had AD&D as MODULA-2, but in the schema of 3.x being C++ (structured and formalized), 5e being Java (hiding the tedious parts while adding others), AD&D being C (you basically need to keep track of everything, including weird interactions and edge cases, even beyond those of Savage Worlds — how do AC bonuses (which are negative) stack in AD&D? I remember it being weird, but I’d have to look up what they are) makes sense to me.

      Hero… lots of basic math, I’m not sure it’s all about accounting though. Once you build the things you can roll with them. There can be lots of things you need to keep in mind at once. Originally assembly had been suggested because it’s all about the primitives, but I can see instead the argument that it fits well because of the number of registered and accumulators you need to keep in mind. I can imagine “early editions assembly, later editions Forth” might work.

      Diceless systems and COBOL sounds plausible.

      Not familiar with Lingua or Algol, so can’t really comment. Nor Julia. I haven’t done anything with APL but I have seen it and been boggled, this aligns reasonably well with One Role Engine.

      You’re the second to suggest Perl for Savage Worlds rather than Python, and that frees Python up for GURPS.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to Top