Twine Multiplayer Story Format Demo

#1

So I’ve been working on a modified version of SugarCube 2 and some server software that will allow for true multiplayer Twine stories. You can check out the demo / proof of concept here: twinemulti.herokuapp.com/ . It’s just a simple story where you can wave to other people, but they’re real humans on the other side who can wave back :slight_smile:. The format is designed to get around most of the issues a multiplayer game would face with Twine, but I haven’t fully developed the scripting language component yet, and am looking to link up with some creators who would be interested in working with the format so that I can get some feedback + suggestions on what functionality they would like to have available. Thanks!

#2

Hmm… looks interesting. Fails completely in Firefox (59.0.2 64 bit Linux). Works in Chrome.

#3

Thanks for the heads up. I haven’t done much in the way of bulletproofing at this point, just trying to get it working in any form. Mostly tested in chrome and FF on my sytem (windows). Part of continuing to work on the format will of course be getting it working in all modern browsers.

#4

In that case, let me give you some screen shots and error messages :slight_smile:

Apologies! An error has occurred. You may be able to continue, but some parts may not work properly.

Error: TypeError: SugarCube.Story is undefined.

Stack Trace:
@https://twinemulti.herokuapp.com/:124:1
[12]</Emitter.prototype.emit@https://twinemulti.herokuapp.com/socket.io/socket.io.js:1647:7
[4]</Socket.prototype.onevent@https://twinemulti.herokuapp.com/socket.io/socket.io.js:943:5
[4]</Socket.prototype.onpacket@https://twinemulti.herokuapp.com/socket.io/socket.io.js:901:7
[11]</module.exports/<@https://twinemulti.herokuapp.com/socket.io/socket.io.js:1512:12
[12]</Emitter.prototype.emit@https://twinemulti.herokuapp.com/socket.io/socket.io.js:1647:7
[2]</Manager.prototype.ondecoded@https://twinemulti.herokuapp.com/socket.io/socket.io.js:428:3
[11]</module.exports/<@https://twinemulti.herokuapp.com/socket.io/socket.io.js:1512:12
[26]</Emitter.prototype.emit@https://twinemulti.herokuapp.com/socket.io/socket.io.js:4389:7
[40]</Decoder.prototype.add@https://twinemulti.herokuapp.com/socket.io/socket.io.js:6740:7
[2]</Manager.prototype.ondata@https://twinemulti.herokuapp.com/socket.io/socket.io.js:418:3
[11]</module.exports/<@https://twinemulti.herokuapp.com/socket.io/socket.io.js:1512:12
[26]</Emitter.prototype.emit@https://twinemulti.herokuapp.com/socket.io/socket.io.js:4389:7
[18]</</Socket.prototype.onPacket@https://twinemulti.herokuapp.com/socket.io/socket.io.js:2514:9
[18]</</Socket.prototype.setTransport/<@https://twinemulti.herokuapp.com/socket.io/socket.io.js:2331:5
[26]</Emitter.prototype.emit@https://twinemulti.herokuapp.com/socket.io/socket.io.js:4389:7
[19]</Transport.prototype.onPacket@https://twinemulti.herokuapp.com/socket.io/socket.io.js:2947:3
callback@https://twinemulti.herokuapp.com/socket.io/socket.io.js:3821:5
[27]</</exports.decodePayloadAsBinary/<@https://twinemulti.herokuapp.com/socket.io/socket.io.js:5014:5
[27]</</exports.decodePayloadAsBinary@https://twinemulti.herokuapp.com/socket.io/socket.io.js:5013:3
[27]</</exports.decodePayload@https://twinemulti.herokuapp.com/socket.io/socket.io.js:4781:12
[23]</Polling.prototype.onData@https://twinemulti.herokuapp.com/socket.io/socket.io.js:3825:3
[22]</</XHR.prototype.doPoll/<@https://twinemulti.herokuapp.com/socket.io/socket.io.js:3385:5
[26]</Emitter.prototype.emit@https://twinemulti.herokuapp.com/socket.io/socket.io.js:4389:7
[22]</</Request.prototype.onData@https://twinemulti.herokuapp.com/socket.io/socket.io.js:3546:3
[22]</</Request.prototype.onLoad@https://twinemulti.herokuapp.com/socket.io/socket.io.js:3627:5
[22]</</Request.prototype.create/xhr.onreadystatechange@https://twinemulti.herokuapp.com/socket.io/socket.io.js:3499:11

Selection_025.png
Selection_024.png

#5

Thanks! I’ll work on getting that issue fixed. Any thoughts on the idea of multiplayer Twine games in general and implementation specifically?

#6

I think for design/implementation, maybe look at some of the old MUDs. en.wikipedia.org/wiki/MUD

#7

Yeah I think the similarity is definitely strong. The reason I decided to work on this project was because of how accessible twine is to both make and play. I wanted to bring that to a multiplayer environment. And having seen some really complex twine games got me excited for the potential multiplayer could have there, too. Also I originally saw it come up on here a while back :slight_smile:

Edit - the reason I mention this is that typically MUDs require digging into code to do, but the simplicity of the Twine editor is pretty unparalleled, so the prospects of doing a multiplayer CYOA / manager type of thing is pretty exciting to me.

#8

I’ve had quite a hard time trying to reproduce this, but I believe it’s ultimately coming down to a race condition on the initial connection. If so, I’ve added some code that should fix that issue for you. Thanks again for reporting it!

#9

Seems to be connecting now. :slight_smile:

(Nicholas) #10

Any progress since you last posted? I would second the suggestion to look into MUD/MOO design for additional inspiration but also mention that BBS games might also be a good source of inspiration.

While the wave shows that you could have instant feedback, that might get annoying for some things (especially if the recipient is trying to read something) so you might want to provide for delayed events/interactions.The asynchronous interaction models of old BBS games might provide some direction, though your Twine format would have the advantage of simultaneous connection whereas BBS’s were most often limited in the number of concurrent users being from the era before the internet as we know it.