Cooperative Multiplayer Game Mechanics with Choicescript


Hello Everyone. I’d like to discuss implementation of Cooperative Multiplayer Game Mechanics with ChoiceScript without any modification or additions. A simple solution is cooperative read-play on the same device (10’’ Tablet to a 60" UHDTV).

Two Player Local Co-op is the method I choose to implement in D· R i f t e r s. The premise is simply to LOOP through choice dialogs for each player. In DRifters there are stats for each individual player and for the group as a whole.

I’m also implementing a single player mode, because I found trying to play as two character a immersion breaker. Designing the game with multiple players in mind, could be the best approach to collaborative CoG writing.


i did have the same idea quite some time ago and hope to try it at the end of my game. some games would pull this off easier then other obviously.
but if done on the same device and reading together, cooperative play i dont think would be too hard to pull off considering most choices within games are stat based. multi-character games if read with others do this.


I admit that I’m not entirely certain how you mean to set up the story, but…

The trouble I see with this, is that if these various PCs are together in one group or place, the things each PC does or says at various times will will be ‘set’, and affect the story. Like- if one player kills the librarian (hypothetical circumstance) but another player wants to stop that character from doing so… there wouldn’t be a way, because in librarian-killer’s playthrough, that action would affect the rest of the story, but in librarian rescuing player’s playthrough there would be no way to ‘save’ the librarian without affecting everything that already ‘will’ happen. Or, if you switch who is in ‘control’ of the group, one player might be as evil as possible and another as good as possible… but somehow they’d be in the same group? I guess… I just need to see what you mean better, how you plan to do something like that. But I do like the idea of playing multiple characters as one player.


I would love to have a choice of game which has multiplayer coop in it, I’ve always though it would be semi-turn based and played out with two characters, such as player 1 selects a dialog option, then player 2 gets show what player 1 has chosen and then gets options to react to it, if that makes sense.


It is awesome, but interactive adventures usualy have very long paragraphs. Two player on a cellphone could easily become bored while waiting for the other to finish his or her turn. Multiplayer is something I would see more on the computer or two phones were both players can read at the same time or at least do something else while the other play his turn. Would that be something possible.


Check out Seltani - Andrew Plotkin’s multiplayer cyoa platform inspired by URU/Myst Online.


Thanks for taking time to read and reply. I truly appreciate all the responses.

DRifters, started out as a single player story. One morning, my Wife inquired about what I was working on, so I read it aloud. She enjoyed so much, she wanted to join in on the writing. I was shocked. It simply is not her thing. I seized the moment, rushing into the dining room, grabbing another chair, propping it next to my workstation. Now we’re reading/writing/playing the story together. Quality Time…

Working within the context of ChoiceScript and CoG UI, there would be certain ‘restrictions’ for saving and rewind, however, dealing with the scenarios purposed would require different Quest nodes for ‘librarian killed’, ‘librarian survives’, ‘librarian kills PC’, ‘librarian joins group’, others. Ultimately, each would have to affect the group as whole. I view this issue more so, as a Game Engineering problem than a Story Design problem.

Ideally as a Cooperative Game, the PCs work together which can be enforced with limitations to player movement, friendly fire, player assistance, objectives, etc. I now realize this discussion will require clarification, because there are two forms of Cooperation being instituted, Cooperative Game Play Mechanics and Local Cooperative Viewing. Thank you.

I would categorize this type of multiplayer as PC vs PC, and narrow-down the dialog to combative and non-combative transactions between the PCs. Add Narration in between the transactions and it may be able to work as a non-collaborative story but, still require Local Co-op Viewing.

Things would get tricky on smaller screens, hence my recommendation for no smaller than a 10’’ Tablet. Possible solutions could be to break the text up into smaller chunks. In its current state, ChoiceScript doesn’t support multiplayer participation from separate devices, however, that doesn’t prevent folks from text messaging/ #tagging their choices.

Thank you for the recommendation. The primary goal is to work with ChoiceScript in its native state, with no fillers. I aimed to provide a possible solution for CoG Developers, but, maybe it just requires more Player instructions on how to view/play CoG with multiple players on a single device.


LOOPs are easy to implement with ChoiceScript’s jump instructions: *label, *goto...,*gosub...,*return. These instructions can mimic the behavior of many Loop constructs found in other programming/script languages (ie: for, foreach, do, while, until, repeat, forever,etc).

I use lots of control LOOPs in my ChoiceScript, procuring many concepts from programming arcade games… most likely overkill. With the concept of a Main Game Loop, I aim to integrate game-centric features typically such as map/navigation, battle system, and others into the narrative (which I need a significant amount of practice in creative writing.)

Anyways below is my LOOP convention in ChoiceScript that demonstrates a simple counter:

*comment FOR Loop Construct
*comment FOR
*temp from_0 0
*temp to_0 10
*comment FOR start
*label for_0
*comment FOR codeblock start
*if from_0 = 0
    I'm counting up to_0:${to_0} with the value of 
from_0: ${from_0}
*comment FOR codeblock end
*comment FOR condition
*if from_0 < to_0
    *comment FOR increment
    *set from_0 +1
    *comment FOR loop
    *goto for_0