Internship

General information

Date completed June 2020
Role in team Intern / Developer / Project Manager
Environment Unity 2019.3.0f2
Language C#

Description

For my internship, I asked the head of the company Sensiks whether Lisanne Bakker, Remco Liqui Lung and I could work with them to create an experience to aid in mental health therapy. We ended up working together with the psychiatrist Eric Vermetten from the Ministry of Defense to create a VR experience to help Post Traumatic Stress Disorder patients calm down in between intensive therapy.

Sensiks

Sensiks is a company started by its CEO Fred Galstaun to create the Sensory Reality Pods. These pods can be compared in size to English phonebooths, but on the inside make use of a multitude of exciting technologies to combine VR sights with wind, warmth and olfactory stimuli. Sensiks aims to use this technology for healthcare, improving quality of life, PTSD, addiction, research and a whole lot more.

Concepting

During the first period of our internship, after a few sessions of explanations and tips by Eric, we presented Fred and Eric with a couple of different options that we figured were feasible for the purpose of calming down PTSD patients during therapy.

In the end, there was one project among the many presented that Eric particularly fancied; a project presented by Lisanne Bakker by the name of Hills.

Hills would be an experience in which patients would find themselves in a natural environment where they could experience different playful interactions with as little pressure to perform as possible.

Interactions

As mentioned, it was important to us that the patients would have plenty of interactions to engage in, but they had to stay playful and bring no pressure to perform.
One of the first interactions we added was a simple bucket with coconuts lying around and a number indicating the amount of coconuts inside the bucket.
You can play as long as you want, and quit at any time, with no punishment for not completing the challenge, but giving a fun way to achieve something small.

Catching fireflies

Another interaction we added was catching fireflies with a magical object. This one was also enjoyed greatly by testers because once you’ve caught the fireflies you can use it to send lights into the world, which functioned as an instant reward for their efforts.

Direct relaxation exercises

Besides the more indirect ways of getting the patients to calm down, we also wanted to have more traditional relaxation exercises with a magical twist. An example of this can be found above; it’s a breathing exercise, but depending on where you are the world responds to the breathing differently.

When you’re close to water, waves move towards or away from you depending on whether you’re breathing in or out. When you’re in a forest, leaves come towards you and swirl around you when breathing in and fall to the floor when breathing out. In the GIF above, you can see what happens when you’re standing in an open field.

Code snippet showing how the different effects on breathing are enabled.

if (timer < breatheInTime) {
    ContinuousBreatheInEffects();
    if(timer + Time.deltaTime >= breatheInTime)
        HoldBreathEffects();
}
else if (timer < breatheInTime + holdBreathTime) {
    ContinuousHoldBreathEffects();
    if(timer + Time.deltaTime >= breatheInTime + holdBreathTime)
        BreatheOutEffects();
}
else if(timer < breatheInTime + holdBreathTime + breatheOutTime) {
    ContinuousBreatheOutEffects();
    if (timer + Time.deltaTime >= breatheInTime + holdBreathTime + breatheOutTime) {
        currentCycle++;
        if (currentCycle == amtOfCycles) {
            Destroy(gameObject);
        }
        else {
            BreatheInEffects();
        }
    }
}

Muscle relaxation exercise

Another example of a traditional relaxation exercise we implemented is the muscle relaxation exercise. In this one, patients are encouraged to tighten the muscles as shown on the 3D model and in sync with the visual effects that float away when the muscle is relaxed and group up on the muscle when it needs to be tensed.

Magical additions

To really give the environment a magical feeling, we also added small interactions patients could have to momentarily amuse or bemuse them. One of these is the shell that can be found at the beach. Once the patient puts the shell close to their ear, they start hearing waves out of it. If the patient waits for a couple seconds more, music will start playing. At first, the music comes from the shell, but it slowly envelops the player entirely.

If the patient looks around carefully, they’ll find butterflies that move and light up in colors based on the music. If the music becomes louder, they move faster and away from the center, and if it calms down again, they too return slowly to their start positions.

We wanted to make the controls as natural as possible, so instead of having a menu to change songs, the player can shake the seashell and a different song will play.

if (Mathf.Abs(velocityRightHand.y) > 0.01f) {
  if (shakeTimerRight < timeTillShake + 0.01f)
      shakeTimerRight += Time.deltaTime;
}
else {
    if (shakeTimerRight > 0f)
        shakeTimerRight -= Time.deltaTime;
}

if (shakeTimerRight > timeTillShake) {
    if(shakeEvent != null)
        shakeEvent.Invoke(rightHandGrabObject);
}

private void Shaken(GameObject go) {
    if (!shakeAllowed || !vrtkObject.IsGrabbed(go) || !fullsong)
        return;

    Debug.Log("Shake with correct hand");

    shakeAllowed = false;
    SwitchSong();
    Invoke("EnableShaking", timeForShake);
}
%d bloggers like this: