Strings of Life

This a project in which I had to extend an existing project, an AR Escape Room, to reduce the needed supervision as much as possible.

The escape room is about a fictional assignment given by Mitch Winehouse. The players have to find out what happened to Amy Winehouse and what Elvis had to do with it.

Trailer

Gameplay

The game can be played with 3 to 6 people. The players get a single tablet at the start, and can find one extra tablet and one phone.

The tablet can be used to scan images and interact with items which are visible when scanning a particular image.

Mechanics

One of the things I came up with to reduce the needed supervision was an automatic hint system. This system should send hints which were actually valuable to the players and would send them into a direction they hadn’t explored before.

To achieve this I made a Statemachine which would keep track of a few things the players have done, like interacting with an item or scanning an image. The Statemachine keeps track of lists which contain all things the player can interact with. It also keeps track of the time a player has been in a single scene, how long it took for them to find a device, etc.

The company I made this project for asked me not to share any code, so I’ve decided to describe what each part of the Statemachine does.

The Statemachine is used with Hint classes to check if they should be sent. These checks are performed with HintStatement and HintPrerequisite. These compare the values assigned to them to the Statemachine.

The Hint class contains one HintPrerequisite and a List of HintStatement. Once all of these pass the Hint can be send to the player.

To give the players a useful hint, hints are grouped into HintSeries. These are used to check how much progress is made in one specific area. Once a hint should be sent, these HintSeries are checked to find the one with the lowest amount of progress.

This way, the hint is more likely to be helpful for the players since they haven’t explored a lot in this area.

One of the things I really wanted to do during this project was to make it easy for non-programmers to be able to create new hints. I did this using Custom UnityEditors for the Hints.

This Custom Editor made it possible to add new HintStatements to a Hint by simply clicking on the + button and adjusting the values.

Without Editor With Editor