Archive for June 19th, 2009

LowFantasy: iPhone App RPG Outline, part 1

2009 Jun 19

Christian Griffen challenged me to design an indie tabletop RPG as an iPhone app. Here’s the design work. The rest is up to you crazy programmer types, though I’ll be happy to help out however I can.

Guiding Principle

Teach a man to fish. Designing content that people consume is great, but the purpose of this project is to design an app that facilitates users creating, enjoying, and sharing content on their own terms, as active rather than passive participants in the life of the app.


LowFantasy is loosely based on a short game I designed (with some help from Dev Purkayastha and others) called Mare Caspium (PDF).

In broad terms, users create a map of a fantasy world of their own devising, define initial situations for different locations on that map, and then gather a group of friends to explore these situations as characters of their own invention, growing and changing the fantasy world and its situations as they play.

More In-Depth

Users use a pixel editor to design sprites and tiles for mapping their own fantasy world. They use these to build maps, where specific locations are tagged with a number of different Tweet-length written descriptions of various situations that can be encountered at those locations.

Then, a group of users signs on to play an instance of a particular map + situation set, collectively called a “fantasy.” Fantasies are generally played not in real-time, but in the manner of a play-by-email, play-by-forum, or play-by-chat game, leaving messages for each other.

Each user controls one or more characters, who move between locations on the map. When a character enters a new location, a message is sent alerting all the players to a random situation connected to that location that the character is presented with. While the user controlling that character describes the character’s response to the situation, the other players can also describe complications or antagonists connected to the situation. All these responses are Tweet-length and are passed between players, saved as a threaded conversation connected to that location.

Users can decide, at any time, that a character ceases engaging with one situation, either having their character move to a new location or randomly generating a new situation at that same location for the character to encounter.

Multiple characters can occupy the same location at the same time and can choose to encounter the same situation or different situations.

When a specific situation is marked by one or more players as having been resolved, it is no longer randomly generated and assigned to characters, but becomes part of the “history” of a location. Users can choose, during play, to add new situations to locations or simply allow the pre-generated situations to gradually all pass into history, leading the game towards an eventual conclusion as the character converge on the final remaining situations.

During play, users can also alter sprites, tiles, and the descriptions associated with specific characters and locations to reflect changes that have occurred over the course of the game.

Fruitful Void

There’s a whole lot of things that specifically are not supposed to be part of the app’s design:

1. We don’t tell people what to make with this, though there should probably be a number of example “fantasies.”

2. We don’t moderate, control, or distribute content (which is important for legal reasons), but allow users to pass content to each other through normal channels. If somebody wants to make Harry Potter fanfic fantasies or NC-17 stuff, that’s their business and nobody should be able to sue us for it. It’s like suing GMail.

3. We don’t tell people how to moderate or manage characters “encountering a situation.” People come up with their own resolution, whether it’s freeform or dice or whatever, using whatever methods they like. Perhaps we have a few included methods that have full native support, including freeform (which we don’t have to design for, but might explain a bit).

Anyway, that’s the gist. Next time, more specifics on features.