Using Discourse: Roleplaying

(Patrick Burroughs) #1

So, I’ve spent years looking for the perfect solution for play-by-post roleplaying games. There are a few hand-built portal sites out there, and veritable hordes of phpBB and vBulletin boards, and now that I’ve happened upon Discourse I’m going to give it a shot and see if it comes any closer to that unreachable perfection. I will return here with notes on my progress as the game progresses, and welcome any input to this process that anyone may have!

For those curious about the game, it’ll be GURPS 4th Edition with a currently undecided number of players, with the characters travelling from the modern world to an entirely-unknown medieval fantasy setting in hopes of building an empire.

(Philip James) #2

This sounds like an awesome idea. Let me know if you’d like another player!

(Patrick Burroughs) #3

Unfortunately, it appears this project might to have to wait for a proper hosted solution. I got it installed, but it takes far too long to load and is sluggish running. Maybe if I can convince my boss to let me build and host my own real server in our datacenter… ah, dreams.

In any case, I’m not giving up yet! Time to start some real testing.

(Patrick Burroughs) #4

I’m not actually the GM for this one, but I’ll pass your request along to him!

(Dan Neumann) #5

I run a large play by post roleplaying forum!

It’s entirely freeform writing though. No built-in support for tabletop or dice rolling. Some users manage with external tools. But that’s something I always wanted to fix by moving to my own platform so I could implement features myself.

I started working on a Discourse plugin for dice-rolling, and it’s a pretty easy project limited by only my freetime. I don’t do any tabletop/structured gaming myself, but I’d love to hear any ideas you have for potential plugins.

(Whited) #6

There’s a couple things that come to mind for me with regard to this idea:

  1. General dice roller. Lots of ideas around this, but it gets tricky with most forums - what happens to the die rolls when the post gets edited or deleted? You don’t want folks deleting and re-posting just to get a favorable die roll. There at least needs to be an easily visible audit of die rolls for a thread.

  2. Easy In-Character / Out-Of-Character styling. Perhaps similar to quoting, but with less space overhead, since people often switch between dialogue and narrative a lot. I find that consistent formatting with this is really helpful when you’re scanning through game posts trying to determine which character is saying what and when. The styling could also potentially be set up to include automatic links to character-specific info, or some sort of navigation to next/previous dialog for that character off to the side.

  3. Game-Specific access controls. A board is likely to have several games going on in it. You’ll undoubtedly want to restrict threads so that only the relevant players can post in them. If the game promotes inter-player strife, you may want to hide/restrict the readability of threads to a particular list of users. You could also in theory restrict the above-mentioned IC styles to just the particular users that should be able to post for the character, although I suspect that’s a feature that shouldn’t really be needed if you have a reasonable group of players.

(Dan Neumann) #7

Cogent stuff.

1. Re: General dice roller.


I started working on a dice plugin without looking at the popular dice plugins on other forums to see how they work. My naive Discourse plugin implementation creates a table for dice rolls, uses bbcode syntax like [dice]1d6[/dice], and then binds dice forever to the post. You can’t edit or delete rolls. You can add rolls though.

Again, without looking at other implementations, an improvement idea is to force the roller to name each roll permanently. That way they can’t just roll four times and assign the rolls based on the outcome. Instead, Zog the Warrior’s perfect 2d6 roll is immortalized as zog attack and can’t be sneakily repurposed.

If I was farther along I’d make a topic for it. But I won’t until I actually have time to work on it. At which point I’ll look at the dice implementations out there and steal the successful ideas.

2. Re: IC vs OOC.

Good idea.

My rudimentary solution was to provide OOC subforums on the RP forums for GMs to tediously create an OOC version of their IC thread. But I imagine inline OOC is necessary for tabletop/structured RP where OOC is coupled to specific posts.

One naive solution is to introduce some sort of [ic][/ic] and/or [ooc][/ooc] syntax.

But while we’re staring down the rabbit hole, and now that I can actually write code (unlike 6 years ago when I made that forum!), I’m interested in hearing any ambitious ideas as well. Even stuff like being able to create/manage characters and then impersonate them in IC posts so that characters have a “history” and you can read through their posts as if they were a forum user. Maybe even see their stat changes through time.

Stuff like that.

3. Re: Game-specific access controls.

Hell yeah. Obviously we’re getting into some real luxury features, but this is great. If vBulletin even had an option that let thread-starters moderate their own threads, I would’ve enabled that! But this is some next-level shit.

Man, I haven’t pondered these things for years. After running the gauntlet of starting the forum, I immediately burned out on the actual hobby that I built the forum around. So I hope to rekindle my interest. At least as a developer.

(Whited) #8

Re: Dice roller

I think the die rolls really need to belong to the thread, and just be referenced by an individual post. This way, when a player is creating a post and is doing something that needs a roll, they create a new roll as part of the editor, and drag-n-drop the result into their post and continue writing, explaining the results. Otherwise, they need to post, see the result, then edit or make another post to explain what happens next.

Re: IC vs OOC

A point I think I missed here was the idea that each PC and perhaps some special NPCs would have their own IC styles. This way, you could look at a thread quickly, and assuming you’re familiar with what styles belong to whom, would have an immediate understanding of what characters are involved in the scene. A way to introduce the styles could be with an [ic char=Bob]“Bob says hi”[/ic]

Of course, you would need to define somewhere that for threads belonging to game X, IC blocks marked “Bob” gets… say italicized light purple text

Re: Game-specific Access Controls

I imagine how difficult this would be depends on how much control the default auth system provides. Even if it’s a GM that sets up and manages each thread permission set it could work well.

I know what you mean regarding burning out on the idea after getting the BB set up. I set up a phpBB forum at one point. I had to set it to not accept new users pretty quickly, as it was constantly being targeted with some automated user creation / posting spam. I don’t mind setting up boards here and there, but if I have to constantly watch for spam it pretty quickly becomes a hassle.


What about having dice-rollers as a separate post type, like how the blue admin posts work? So it would be distinct from the actual player input, as well as non-forge-able and unique. Maybe in green?

(Patrick Burroughs) #10

This one strikes me as the best way to handle it, with the ability to put notes on the roll. I’d personally like the ability to customise the die roller for specific systems, so I could put in a die roll like:

Celti makes an All-Out Attack (Determined) with Broadsword Skill: 3d6 vs 15

and then have the result look like:

Celti makes an All-Out Attack (Determined) with Broadsword Skill: Success by 3!


Maybe make sure it shows the original dice input too, just to verify that you don’t fudge the numbers a bit.

(bentrem) #12

“Play by post” I assume means what I/we called “Play by EMail” (PBEM).

But what confuses me is your use of “solution”. I look, but do not see any statement of the “problem”. So I encounter /HALT/ immediately.

(Valts) #13

Disclaimer: The only RPG’s I’ve ever played have been in the format of videogames where I play against the computer. But I’ve always wanted to try a tabletop game with other people too (live, by email, by forum, or whatever). So if anything (everything?) of the below musings is BS, don’t hesitate to tell me. I’m interested to find out. :slight_smile:

The way I see it a problem in such real games is that it’s difficult for the GM to keep track of everything. It’s easy to forget to add that bonus of AC+1 when your Amulet of Starlight gets hit by a beam of moonlight in a fight.

So I think that a forum improvement for RPGs would have to deal more with supporting the GM and less with the rest of people. It should keep track of all the character sheets both for characters and monsters nearby, as well as all the equipment, maps, descriptions, etc. Everything that is normally written down in an RPG game, should be trakced by the system.

Then there would be a set of standard actions that can be executed (like “!attack Drizzt => Goblin”) and that automatically take into account all the details (equipment, environment, etc) so that the GM doesn’t forget anything. Intellisense for writing such actions would also be much needed.

Also, since most RPGs are quite extensible (at least DnD is, I’m not familiar with others), the whole thing should be extensible. Monster & equipment libraries should be no-brainer, but also the ability to add new spells, actions, stats, etc. Basically you should be able to load custom code that extends the original RPG base in a zillion ways.

A packaging system would also be nice, so you can have a package with everything that is needed to run a campaign. The GM could just load it when starting a new campaign, and he would have all the resources at his fingertips.

Of course, there should also always be a way to overload everything. If a GM wants to randomly halve a players strength, he should be able to do so.

I also suggest that this functionality be written mostly in Javascript, and accessible only to the GM. The server would only have generic data storage code. Other people only write to the GM what they do, and the GM does all the rolls and converts their actions into “gamecode”. This diminishes the possibility of abuse. In this scenario only the GM can cheat, but he is someone that is implicitly trusted in the first place anyway. If the GM cheats, the whole game becomes pointless anyway. (Tangent: GM ratings within an RPG forum)

Dice rolls and other such things would be calculated on the fly as the GM types them. So, for instance, if a GM writes “1d6” then Javascript automatically converts it to “1d6[3]”, where the “3” is the result of the roll. Of course, the GM can then edit the 3 to whatever he likes, but this brings us back to the point of the GM being implicitly trustworthy.

(Dane Weber) #14

Re: Dice roller

I concur with the idea to allow rolls to be recorded in the thread in the midst of the author composing his post. Some rolls may require the GM to interpret the results, but others involve known targets and it would be inefficient to require the author to post and then post again in order to narrate the results.

Re: IC vs OOC

There’s actually room to go a lot further in support of role-playing. I would imagine it like this:

Phase 1: simple IC vs. OOC styles. Probably mostly an OOC style, since a gaming thread is usually considered to be IC unless something is specifically marked as OOC.

Phase 2: allow a number of thread-specific styles to be defined for various forms of speech. For example, I’ve seen games where every in-game language has a different color. Telepathic communication and the written word are sometimes also given different styles to set them apart. Style definition should be easily copied from one thread to another.

Phase 3: allow thread-specific styles to have dual-states where permission must be granted by the thread-owner for a user to see the second state. The use for this would be choosing a goofy font or gray-on-gray to obscure in-game languages not known to all, but to give those players that know the language a second style that they can easily read.

Phase 4: actually substitute text server-side based on the user so that players without in-game knowledge of a language only see, “Xxx xx x xxxxx xxxxxxxxxx xxxx xx xxx?” instead of, “Why is a dwarf travelling with an elf?”

In-post permission-based hiding

This is getting really blue-sky, but how about marking in-post chunks of text as visible only to certain users? You know, for when one player gets a telepathic communication in the midst of a scene that everyone else is part of?

Of course, if you’re hiding text, maybe there should be the option with either a time limit or a command for closed threads to make all hidden text clear so that posterity can benefit.

(Jeremy Banks) #15

Would you be willing to release the code that you have completed so far, somewhere? I’m implementing such a feature for a forum I’m working on and would find it helpful to see what you’ve done, even if it’s not finished.

(Rafael Pereira) #16

I’m very sorry for reviving this very old post but since I didn’t find anything related to this, I felt compelled to make it so.

I’d like to also make another suggestion: Sub profiles. I don’t want to post as my player, I want to post as a character of that specific games, which does have a different profile and so on. Wouldn’t that be awesome? Then, the permissions feature above would be given by character and not by profile, having a more fine grained solution overall.

Is there any progress around the rest?

(Whited) #17

@bsides - No problem - I had forgotten about this thread…

My employer makes it tricky/difficult for me to contribute to any kind of open-source, so I haven’t personally put any serious effort into an implementation.

I would be interested to learn about anything anyone else may have done though!

@Vilx, @daneweber - I hadn’t seen these posts until just recently - great ideas, and would be awesome to see some of these features come to life - I think though, that when doing something like this, you need to draw a line in the sand. Am I building features to allow folks to coordinate an otherwise-tabletop RPG through posts, or am I implementing the whole game in a website and/or discourse extension. For example, when you get into handling character sheets and handling all the bonuses and rules for your game, you may also be (1) narrowing the audience of who your work is useful to, and (2) risking having the game publisher shut you down due to copyright infringements.

(Rafael Pereira) #18

I believe that makingthe features open and less specific make it more useful generically. For example, making sub profiles (character sheets) editable by user with editable fields in their profiles would be usable for a lot of other good things as a forum software overall. This is something I can see the discourse team work on.

The styles can be acoomplished by bbcodes, without too much automation. Dice roller could also be used as bbcode maybe calling api (like this: or its json but then we could have a problem because its results aren’t unique.

(Dan Neumann) #19

Discourse inspired me to take the plunge and attempt to create a roleplaying forum from scratch.

Source: GitHub - danneu/guild: a node+koa+postgres forum currently in production (Node.js + Postgres)

536 commits and I still haven’t hit parity with platforms like Xenforo. :joy:

Every time I try to work on a cool feature like a dice system, I remember that I still have to implement basic features like the ability to delete PMs or an unread post tracker so that I can expose a “Go to first unread post” link like every other forum has.

My poor users. Makes me appreciate the amount of effort/polish involved in a project like Discourse, that’s for sure.