World-building app

Posted by Chris Rosser on Fri 28 March 2014
Hello! This site is archived and no longer maintained. For Chris' main site go to

For a long time I've wanted to create an app that helps me manage world-building. I blogged about it in previous editions of my blog and have carried one of those posts forward to provide context for my thinking and the way I used to work. In summary; I manage my story ideas and characters in Bento and larger World-building projects in VoodooPad.

World-building is a complex task and there's probably no right or wrong way to do it; but I like the structure that software can bring to a workflow and I believe that electronic storage for me at least, is superior and more readily accessible and usable than paper.

Recently I began a journey to create fantasy settings that are more internally logical and follow demographic and technological limits. I've always tried to do this, but I never had a systematic formula or approach until I read several articles on-line aimed at role-playing game designers and GM/DMs.

My requirements

My basic requirement is to manage and develop content for fantasy (and later sci-fi worlds). The basic ingredients of a world-building project, for me at least, are:

  • Countries, cities, towns and villages
  • Individuals, families and organisations
  • Articles about metaphysics, religions, science and technology

To replace my current usage of Bento I'd probably want to include a story manager and, since I'm going to the trouble anyway, I may as well add automation of some of my favourite novel design methodologies like the Snowflake Method and generate a skeleton in a format I can use with Scrivener.

Beyond the storage and editing of content, I also want to be able to generate some data quickly and consistently. For example, given some basic parameters about a country (such as area, population density) it would nice to generate all the settlements programmatically like some on-line 'kingdom generator' that are on the web.

The app should not and will not be an island and must be able to work with the kinds of tools that writers are already likely to have include:

  • Writing apps such as:
    • Scrivener
    • MultiMarkdown Composer
    • Marked
    • Easybook creator
  • Synchronisation and Version Control app such as:
    • DropBox, Box, GoogleDrive
    • Git


Over the years I've thought about numerous platforms and ways to develop this app but in the last couple of years, I'd settled on creating a web app written using the PHP framework CodeIgniter with the data stored in MySQL. My reasoning was that building a web app would be faster than building a desktop app and that by hosting it on-line, I could access it from anywhere.

PHP is changing fast and is changing for the better; however CodeIgniter is not changing with it. I will develop the app in PHP because it's what I'm most fluent and familiar with. PHP ships by default with Mac OS X and is readily available on every other platform should I choose to migrate in future.

What I'm not going to do however is use CodeIgniter and heck, I'm even thinking about not developing it as a web app and I might not even use a database! Instead I'm thinking of building a command-line app and storing the content in a mix of markdown and json.

My reasoning behind this is fairly straightforward. Writing a web for one person is kind of overkill. A web app to cover even my basic requirements will need a UI, a database and authentication. Designing a database is not trivial, particularly for something like a world-building project which maybe have hundreds of settlements, characters etc. Then there's the interface, which needs both a presentation and a content management model made up of html forms. Lastly I'd need to authenticate it from prying eyes – tedious to say the least.

Now if was planning to work collaboratively, like an RPG designer might, then creating a web app would make sense because the web is an excellent platform for collaboration. But truth is I'm not. I'll be the only user, the app and content will sit on my laptop.

So with this in mind, I could probably get away with writing a bunch scripts that create content based on templates and generate data based on variables passed via command line arguments. I'd write the content in a markdown dialect (probably MultiMarkdown) which is easy to batch-process into HTML, ePUB or PDF.

If I want more features, then I can build console app with Twig support using Silex or Symphony.

I'll blog about this as I develop the app and will release whatever I do as open source.

Wow you read this far! This site is archived and no longer maintained. For Chris' main site go to