Assignment 1

I searched for alternative controllers on the GDC alt.ctrl archive and Shake that Button.

A game called Guilty Smells caught my attention. In the game, the player controls a sniffing dog who is trying to find individuals carrying “UnAmerican” food. As the player moves the dog closer to people, they can smell the kind of food the person is holding. Based on the smell, the player needs to decide whether the person has foreign food. If they do, they get jailed.

I was fascinated by the concept of using smell as a part of a game. I feel like this sense is quite underutilized - also because there are no mainstream scent diffusers. But it’s a really powerful way to evoke feelings.

In Guilty Smells the smell is the central block of the game, but it could be interesting to make games that only have it as a side element to build an atmosphere. For example, when the player enters a rainy forest, they could not only hear and see but also smell it. I would imagine this could be particularly immersive with VR glasses.

Guilty Smells’ theme of enforcing an “American diet” is quite silly, since most food in the USA is “foreign”. I assume this is on purpose - the creators are ironic and trying to criticize nationalism and ridiculous immigration policies.

I also like the game’s graphic style and the unsettling music. And I think the video presentation is well done.

Here’s the video on Vimeo:

Assignment 2

The sensor

I chose to take a closer look at Adafruit’s AHT20 temperature and humidity sensor. I was first drawn to it, because I liked that it allowed many ways to interact with the body - breathing, hovering, touching.

AHT20 sensor

While experimenting with the AHT20, I quickly got many ideas for using it. I could make a game where the player blows seeds of off a dandelion by blowing into the sensor. Or it could be used to detect the proximity of an object to the body by sensing body heat.

I also realised that if I continuously blow at the sensor, it tends to get stuck at high values of relative humidity and takes a long time to lower back down to the ambient value. I found that this process can be made quicker by e.g. pointing a hair dryer at the sensor, while blowing on it.

In the end, I decided to use the temperature & humidity sensor to build a controller.

The sauna controller

Are you ready to save the world with a spoon and a cup? (and some water)

Introducing the groundbreaking SAUNA CONTROLLER.

Sauna concept sketch

Concept in short

The sauna controller is a miniature sauna building, a little physical house, that’s open at the bottom half. The user has a little bucket of water and a spoon. They can pour the water on the stove to interact with the game.

Sauna tech sketch

Inside the sauna controller

Inside the stove, there is an insulated heating element/resistor that turns electricity into heat. As the user pours water on it, the water quickly evaporates. Behind the covered upper half of the sauna, right above the stove, there in an insulated relative humidity sensor (similar to AHT20).

The humidity sensor is connected to an Arduino (e.g. wired behind the sauna), that is programmed to detect rapid rises in relative humidity, such as those caused by evaporating water. Whenever the Arduino detects a spike-like rise in humidity, an action takes place in the game.

The fan and ventilation holes at the top of of the sauna ensure that the relative humidity drops rapidly after each evaporation. This allows the controller to stay responsive even if the user throws water multiple times in succession.

Scale and grip

How the sauna controller is held and used depends on its size, which could be experimented with.

A larger sauna could be placed on an immobile surface, and the player could hold the small bucket and spoon in their hands.

A smaller sauna could be held by the player via a strap attached to their hand. In this case, the water bucket could be attached to the outer wall of the controller, so the player can use one hand to hold the sauna and the other to pour the water with the spoon.


Demo video

This demo shows that with help of a hair dryer it’s possible to consistently get the sensor to detect when there’s a sharp rise in humidity. I didn’t dare record using actual vapor, since the AHT20 is not insulated. But the working principle is similar.

Code for demo video

This is the code used for the demo above:

#include <Adafruit_AHTX0.h>

Adafruit_AHTX0 aht;

sensors_event_t humidity, temp;
float humidityVal, prevHumidityVal;
int ledPin = 9;

// Noise threshold to recognize actual rises in r. humid. from noise. Lower this value if LED is not blinking.
float noiseThreshold = 1.0;

void setup() {
  pinMode(ledPin, OUTPUT);


  if (!aht.begin(&Wire1)) {
    Serial.println("Could not find AHT? Check wiring");
    while (1) delay(10);
  Serial.println("AHT10 or AHT20 found");


void loop() {

  aht.getEvent(&humidity, &temp);  // populate temp and humidity objects with fresh data
  humidityVal = humidity.relative_humidity;

  Serial.print(" -- ");
  Serial.print(" -- ");
  Serial.println((humidityVal - prevHumidityVal));

  // If humidity increases rapidly, blink LED
  if ((humidityVal - prevHumidityVal) > noiseThreshold) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);

  prevHumidityVal = humidityVal;


Game ideas

The sauna controller has a single “action button” - the evaporating water hitting the sensor. Hence, it can be used to play any game that’s based on single-button input.

Existing games

Any game with single input, e.g. Chrome’s dinosaur game, but where the player has to jump the dinosaur over obstacles that appear on the screen. In the real game the player also has to duck, but it could be simplified to only have jumping.

Dinosaur game image If I would use this game, I would definitely make the dinosaur a reindeer.

New games

I could also make a completely new sauna game for the sauna controller. Having this controller would make the game feel more immersive.

The sauna game is a simple game, where the player is responsible for throwing water on the stones (löyly) in a sauna.

Sauna game sketch

The players task is to keep the sauna at a comfortable temperature for everybody inside. If the sauna gets too cold or too hot, people start to leave and the player loses score.

There could be random events in the game to add some diversity. For example:

  • Sometimes loud shouting people enter the sauna. This makes other people uncomfortable and they start leaving the sauna, which makes the player lose points. The player needs to add löyly to make the room hot enough that the loud people cannot shout.
  • A “professional sauna-goer” enters and keeps demanding more löyly. If the player obeys them, the sauna gets too hot and people start leaving. So, the player must ignore their commands.

In the sauna game, the humidity sensor inputs are used to track when löyly happens. The temperature would be simulated within the game - not read from the temperature sensor.