Be Bernd

Aus hyperdramatik
Wechseln zu: Navigation, Suche

Be Bernd ist ein interaktives Medienspiel aus dem Jahr 2018, das AR, VR, ein Arduino basiertes Radiospiel sowie ein Textconsolen-Game enthält. Das Spiel wurde bei den Festivals A.Maze, re:publica, der Brettspiel Convention Berlin, dem VR Ham und dem Next Level gezeigt. Das Spielbrett besteht aus einem Tisch, unter dem ein XY-Plotter montiert ist, der via Magnet eine Spielfigur über das Spielbrett (ein Stadtplan) bewegt und an dem alle weiteren Devices befestigt sind. Narrativ ist es in einem Cli-Fi Szenario angesiedelt. Die Spieler*innen sollen dabei an verschiedenen Stellen des Spielorts Berlin Informationen sammeln und anschließend austauschen. Die Idee war, so eine Debatte über Wissensbestände, Klimakrise und Gruppenprozesse, in denen die Spieler*innen stecken, zu starten.

Story

Das Spiel ermöglichte die Auswahl zwischen vier verschiedenen Orten, an denen jeweils zwischen zwei unterschiedliche Entscheidungen getroffen werden können. Um eine Entscheidung zwischen diesen beiden Optionen treffen zu können, mussten die Spieler*innen getrennt voneinander Informationen auf den jeweiligen Devices sammeln und anschließend die gesammelten Informationen mtieinander diskutieren. Das Szenario war dabei eine durch die Klimakrise bedrohte Stadt, die vor der Überflutung gerettet werden muss. Die Orte in der Stadt dienten als Exempel für mögliche Szenarien.

Das Spiel wurde mehrfach überarbeitet und die Story dabei angepasst, da die Entscheidungen bei den Spieler*innen den Eindruck eines Gewinnens und Verlierens zu Anfang vermeiden sollten, diese sich aber trotzdem einstellte. Dies führte in den späteren Versionen des Spiels dazu, dass die Entscheidungsfindung stärker in ein Richtig/Falsch überführt wurde und Entscheidungen dadurch weniger willkürlich getroffen wurden.

Bild von Spieler*innen bei BeBernd

Spielmechaniken

Das Spiel funktioniert mit zwei Core Game Loops: Eine Phase des individuellen Explorierens und eine Phase des gemeinsamen Diskutierens. Das Spiel beginnt mit einer gemeinsamen Erzählung, welche die Spieler*innen narrativ abholt und auf einen Stand bringt. Darauf folgt ein technisches Tutorial, das eine Einführung in die Devices gibt. Anschließend wird die erste gemeinsame Entscheidung getroffen und einer der vier möglichen Standorte ausgewählt. Dort gibt es eine kurze Narration, an dessen Ende zwei Optionen präsentiert werden, zwischen denen sich die Spieler*innen am Ende der Explorierphase entscheiden müssen. Anschließend beginnt die erste Phase des Explorierens, die sechs Minuten dauert. In dieser Phase können die Spieler*innen auf ihren Devices durch unterschiedliche Mittel Informationen finden. Diese Informationen werden in der nächsten Phase zwischen den Spieler*innen diskutiert und eine Entscheidung zwischen den beiden Möglichkeiten getroffen. Anschließend suchen die Spieler*innen das nächste Ziel und der Ablauf wiederholt sich, mit dem Unterschied, dass die Phase des Explorierens nur vier Minuten dauert. Im letzten Ablauf dauert die Phase nur zwei Minuten dauert. Somit wird das Wissen, dass sich mittlerweile über die Nutzung der Devices hergestellt hat, berücksichtigt und der zeitliche Stress nimmt im Lauf des Spiels zu. Das Ende bildet eine Narration, die, abhängig von den getroffenen Entscheidungen, variiert.

Technischer Aufbau

OSC Kommunikation

Alle Teile des Spieles sind in einem voreingenstelltem Netzwerk. Die folgenden IP-Adressen wurden verwendet: (ACHTUNG: FIREWALL DEAKTIVIEREN) Brain (Sister Mary): 192.168.1.124 Tablet: .1430 Radio (Arduino): .134 Console (Grace Hopper): .133 Port: 1330 VR Brille: .109 / .126 als Option

Das Brain steuert alle anderen Devices, den Plotter und den Sound. Das Brain ist quasi das FOH des Spiels. Der Code für die ausgehenden OSC-Befehle liegen auf dem Brain im Unity-Projekt BRAIN unter OSC-Sent. OSC Controller ist das Game-Object für OSC Befehle. Das Script für Entscheidungen liegt auf der Console.

Code OSC Kommunikation

Als Beispiel ist die OSC-Kommunikation der VR-Brille mit der Console genannt. Die Brille reagiert jeweils auf OSC-Befehle, die es von der Console bekommt.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class ReadOSC : MonoBehaviour
{
    public OSC oscReference;
   
    public TextMeshPro debug;

    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Starting OSR Read");
        //called for all messages
        oscReference.SetAllMessageHandler(OSCReceived);

        //called only if address is specific
        oscReference.SetAddressHandler("/viveFocus", ViveMessageReceived);
        oscReference.SetAddressHandler("/all", AllMessageReceived);
    }

    // Update is called once per frame
    void Update()
    {

    }

    void OSCReceived(OscMessage oscM)
    {
        Debug.Log(oscM);
        //incomeOscMessage.text = oscM.address;
        Debug.Log(oscM.values);

        //float myFloat = oscM.GetFloat(0);


    }


    void AllMessageReceived(OscMessage oscM)
    {
        Debug.Log("Message Received");
        Debug.Log(oscM.address);
        foreach (var v in oscM.values)
        {
            Debug.Log(v.ToString());
        }
        if (oscM.values.Contains("start"))
        {
            Debug.Log("starte Spielws...");
            debug.text = "start";
            //Wuerfel.GetComponent<MoveandTurn>().stopeverything();
        }

        if (oscM.values.Contains("startBerghain"))
        {
            SceneManager.LoadScene("Scenes/berghain");
            debug.text = "berghain";
        }

        if (oscM.values.Contains("startHBF"))
        {
            SceneManager.LoadScene("hbf_essen");
            debug.text = "hbf";
        }

        if (oscM.values.Contains("startTHF"))
        {
            SceneManager.LoadScene("Scenes/Tempelhof_essen");
            debug.text = "thf";
        }

        if (oscM.values.Contains("stopTHF"))
        {
            SceneManager.LoadScene("Scenes/Entry");
        }
        if (oscM.values.Contains("stopHBF"))
        {
            BackToStart();
        }
        if (oscM.values.Contains("stopBerghain"))
        {
            BackToStart();
        }

            if (oscM.values.Contains("stopTHF"))
            {
            BackToStart();
        }
            if (oscM.values.Contains("StopTutorial"))
            {
            BackToStart();
        }

            if (oscM.values.Contains("StartTutorial"))
            {
                SceneManager.LoadScene("Scenes/Tutorial");
            }
        }

    void BackToStart() {
        SceneManager.LoadScene("Scenes/Entry");
        SceneManager.UnloadSceneAsync("Scenes/berghain");
        SceneManager.UnloadSceneAsync("Scences/Tempelhof_essen");
        SceneManager.UnloadSceneAsync("hbf");
    }

        void ViveMessageReceived(OscMessage oscM)
        {
            Debug.Log("zis is chomink from ze vive focus");


        }
    }

Diverses Technisches

Zum Bewegen des Plotters:

S- Move to Start
A- Move to Alex
H- Move to HBF
F1- Startposition des Plotters
B- Berghain
T-Tempelhof

Die App des Tablets liegt hier. WETRANSFER!

Console: Sendet auch OSC-Befehle um Auswahl zurück zu geben. Radio läuft im Playmode.

Hardware_Liste für BeBernd

- 1 VR Brille
- 1 Tablet das Google AR-Core fähig ist
- 1 Arduino und zwei Rotaryencoder(Drehmomentgeber) und einen Abstandssensor(LIDAR)
- 1 Paar Kopfhörer
- 1 mal aktiv Boxen
- 2 Bildschirme
- 1 X/Y Plotter
- 2 Tastaturen
- 1 Maus
- 1 Router
- 3 Intel NUCs
- 1 kurzes HDMI
- 1 langes HDMI Kabel
- 1 3.5mm Klinkekabel zweimal Stecker
- 1 3.5mm Klinkekabel Verlängerung 1 Stecker/1 Buchse
- 1 USB Typ A auf TYP B Kable fürs Arduino
- 1 Usb Micro auf Typ A für Plotter
- 4 Mini LED Pars(Optional)

Mitwirkende

Lena Eikenbusch, Fabian Raith, Anton Krause, Janne Nora Kummer