Four years ago, I made a procedural text adventure for procjam called Dreamer of Electric Sheep. It uses an AI database known as ConceptNet to generate locations and descriptions. The gameplay consists of wandering around for a few minutes until something starts to happen that will guide you to the ‘end.’ Mistakes in the database lead to some very strange and dream-like situations!

Since then, the APIs it relies on have changed a few times in breaking ways. And since it relies on the Java runtime, it’s hard for some people to set up.

So last week I remade it from scratch in JavaScript, ensuring it would be accessible to everyone, on every OS. The new code is much simpler and will be far easier for me to keep updated now. The gameplay has also gained a few new features, detailed below.


It can be played here (mobile, desktop), or on (desktop). Alternatively, you can play it collaboratively on twitter via @DreamerGameBot!

The original jam version can still be played, but if the APIs it relies on change in breaking ways, I will no longer update it.

screenshot of the procedural text adventure, Dreamer of Electric Sheep


Clickable / tappable commands and objects

The game now highlights keywords (command and object names) in colors. You can click these to pop them into the input field. This can save some time typing words out!

Hidden commands

Like the original, most of the gameplay consists of learning the commands that drive the dreamer. Many are given to you right away, but there are some that you will only find by experimenting.


As well as being able to create regular objects by name, you can create objects that fuse two concepts together, such as this pineapple-house:

screenshot of the procedural text adventure, Dreamer of Electric Sheep

You do this by using a hyphen to separate the names of two concepts you want to fuse, in a command that can create objects. The resulting object has aspects of both the concepts that you fused.

Sometimes fusions may randomly spawn in the game without your involvement.


Not all terms in ConceptNet are equally-well connected, which means that sometimes you can run into dead-ends and cul-de-sacs. To combat this, the Dreamer just makes stuff up if there’s not enough data. Sometimes you end up with nonsense like a planet existing inside a crab, although many times it works seamlessly.

Procedural joke-telling

Due to the way ConceptNet is confused by homonyms, the game can sometimes create unintentional ‘jokes.’ For example, a jury box in a food court, or the RAM in a computer having wool and horns.

screenshot of the procedural text adventure, Dreamer of Electric Sheep I think it meant a food chain, not a fast food chain.

Observations on ConceptNet

Since working on this project and playing around in the dreams it creates, I’ve made a few observations on ConceptNet:

  • A lot of terms (perhaps even most) are not very well connected in the relations that the dreamer uses. Finding a subset that is highly-connected, while still containing a wide variety of terms is a lot of work!
  • There are a lot of mistakes in the database: especially typoes, and inverted relations (e.g. playroom at ball, instead of ball at playroom). Some of the typoes might helped by pruning the database of terms with very few connections. Homonyms also present a problem in applications that require some degree of realism.
  • Offensive stereotypes are of course present in the database. Games and applications built using ConceptNet must have a way of dealing with this problem. In the case of Dreamer of Electric Sheep, I'm inviting people to email me to blacklist bad terms. I've already blacklisted quite a few.
  • ConceptNet is a massive, off-putting 10GB download. However, I discovered towards the end of this project that if you strip out all the non-English terms, and keep just the four relations Dreamer uses, the resulting database is just 20MB. Providing official downloads of commonly-used subsets might be one way for the Commonsense Computing Initiative group to make using ConceptNet in applications less off-putting to developers.

Now that I’ve discovered the relevant portion of the database is much smaller and easier to analyse than I thought, it makes me want to do a more ambitious project with it…

screenshot of the procedural text adventure, Dreamer of Electric Sheep

blog comments powered by Disqus


30 July 2018