TextSmith - a multi-user text based adventure game

Both members of our team love words, writing and telling stories with text. That's how we came up with the idea for our game... an old school MUD/MOO-ish platform but reimagined for today.

We're going to call this platform "TextSmith" because we're forging, beating out and carefully crafting new interactive text based worlds with creative heat and imaginative fire. We hope it plays to our strengths..!

Our server will be a Python/asyncio application with perhaps a Redis data store, probably running somewhere like Heroku (which seems to be the simplest / cheapest [free] option at the moment). We'll use websockets and some static HTML/CSS/JS to provide a user friendly browser based client.

Our intention is to make the world "programmable", so players are able to help build the game themselves and take ownership of the world they imagine and inhabit.

As for the theme, I (Nicholas) wonder about initially creating six distinct literary worlds within the game (e.g. Jane Austen, SciFi, Tolkien etc...). Players build and interact within each world in the literary style of that world. In each 24 hour period a player has some arbitrary number of points to give away to other players as rewards for building or interacting in particularly appropriate, entertaining or otherwise epic ways. Perhaps the more points you get, the more stuff you can build, or you level up to new abilities..? I'm not sure how this may work, and I'm waiting on feedback from my team mate, Andrew (this time we're only 7 hours away in terms of time zone). So this idea may change or become something completely different.

The first task (probably tomorrow) will be to get a simple websocket app running so we can check the client works properly, after which we'll be in full-on platform building with a view to world / game building with the help of anyone else who cares to join in towards the end of the week.

Let the fun begin..!

(log in to comment)


Nice! This is close to what I did in The Dark World, except I wasted all my time on making it a three.js experience.

What I did is to run one process handling all clients, keeping state in memory and pickle it occasionally, and on exit, for persistence. Redis will allow the processes to be stateless and therefore scale to many more connected clients, but you won't need that for PyWeek.

This sounds amazing, and is such a cool idea! I can't wait to see how it turns out. It sort of reminds me of Cloud Atlas, or the RPG Torg if you've ever played that :)
@mauve Yup... we're taking a very similar approach. The game world will be a list of JSON objects (i.e. Python dictionaries) with a bunch of atomic state transition functions to annotate / change the objects in the game. Initially we'll just do a JSON dump every 5 minutes or so to keep game state backed up. You're right about my mention of using Redis (an interesting scaling problem) and the stateless potential for scaling. I wonder about scaling websockets though. I've never had to use them before so any pointers about session state management and websockets etc would be really helpful. Agreed we won't need it for PyWeek, but it's interesting to learn about it all the same.

@Noelle Thank you! I know Cloud Atlas (both the book [which was great] and the film [not so great]) -- as a classically trained musician I had a lot of fun reading it. You're right that this is very much likely to be an RPG-ish thing. I'm interested in working out what to build *as a platform* so that players have enough scope and tooling to build something compelling, fun and which they want to invest time and effort in. Let's see how it turns out. :-)