My current setup for playing D&D (and RPG, in general).

I am not going to explain what is D&D here. In short, there are so many resources out there (text, audio or video) which can explain it so much better than me, that it would be just a waste of time.

I am instead going to explain what is my current set-up for  playing D&D, and why, with all the cludges it has, makes the game better.

In short, I am using MapTool as a VTT, with (a lot of) custom macros, and a VPN to allow my players to connect to it, and this is a picture of the view of me as a DM of a typical session.




The laptop on the left is the laptop of the DM (me); it runs the VTT server; the laptop on the right is used to provide the local players (my wife and my daughter) with an instance of the VTT, connected to my server; it also runs the videoconference software (Google Meetings in this case); the remote players (Paolo being one of them in the picture) runs their local instance of the Virtual Table Top to connect to my instance, and have their instance of Google Meeting running.

This is our family game, and we usually play once a week; there are three of us locally (me as a DM, my wife and my daughter as players), and three remote (my brother, his wife and his son).

The software I use for VTT is MapTool (), plus quite a set of macro which I developed over the course of a couple of years. When I play, I usually have this view.



On the right side I have a bunch of buttons for things like rolling initiative, making a saving throw or an ability check and so on. I can also stream music to the clients connected to MapTool. Along with this panel there is a sheet for the selected creature/monster. On it I have links which I can use to activate one of the actions of the creature.

Being fast was one of the primary goals I had in writing my macros was to be very fast, and reduce the amount of counts I have to do. You see, when you are running a game for two or three hours, your mathematical abilities start to deplete, and even making a simple addition becomes difficult; subtractions are simply not an option anymore. If I click on the "attack" near to the Scimitar, I will see something similar to this:


Goblin: Scimitar: 8 (Roll) + 4 (Attack bonus) = 12. Damage: + 3 (1d6 + 2 NSlashing damage)  = 3   

As you can easily guess, this was a Goblin, attacking with a Scimitar; it rolled an 8, plus 4; if this were a hit, it would have cause 3 points of Slashing damage (NSlashing means Normal Slashing, as we can have also SSlashing from Silver Weapon, ASlashing from Adamantine Weapon, and MSlashing from Magic Weapon).

If I want to make an attack with advantage (for whatever reason), I have the link which automatically does this:

Goblin: Natural 20!   Scimitar: (with Advantage)20 (Roll) + 4 (Attack bonus) = 24. Damage: + 10 (2d6 + 2 NSlashing damage)  = 10

The Goblin was lucky! This was a critical hit, and this time the damage is 10 NSlashing points.

The chat also provides a link. If I select a token on the VTT and click on the link, this automatically calls a macro to check if the token is actually hit, and subtracts the damages. I don't use this for the PCs, but I do use it for the NPCs, like the creatures summoned by the PCs.

As I said before, being fast, especially in the interaction between NPCs, is very important for me, as the players are not directly involved in what is happening.

What language am I using? The macro are written in a language which I think is called MTScript; it's an hodgepodge of string manipulation stuff, with very little data structures. For reference, this is a snippet:

<!-- We execute the OnTurnEnd macro -->
[foreach(m_traitName, m_traits, "<br/>"), code: {
    [h: m_traitJson = json.get(m_allTraits, m_traitName)]
    [if(json.contains(m_traitJson, "OnTurnEnd")), code: {
        [h: m_macro = json.get(m_traitJson, "OnTurnEnd")]
        [r: evalMacro(m_macro)]
    };{}]
}]


If you want to have a reference, think of PHP. What this piece of code does is to check if the token for which the turn is finishing has some Trait with an OnTurnEnd macro associated, and if this is the case, run it.

Comments

Popular posts from this blog

Trenitalia e gli Eurostar

Magicworks and patrons