Dreamer 2: Electric Sheep Boogaloo
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.
It can be played here (mobile, desktop), or on itch.io (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.
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!
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:
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.
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.
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…
blog comments powered by Disqus