Be Bernd: Unterschied zwischen den Versionen

Aus hyperdramatik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Be Bernd ist ein interaktives Medienspiel.
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.


Die zu überarbeitende Version heißt re:publica.  
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.  


[[Datei:Bernd.JPG|300px|thumb|left|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.
Alle Teile des Spieles sind in einem voreingenstelltem Netzwerk.
Die folgenden IP-Adressen wurden verwendet: (ACHTUNG: FIREWALL DEAKTIVIEREN)
Die folgenden IP-Adressen wurden verwendet: (ACHTUNG: FIREWALL DEAKTIVIEREN)
Zeile 16: Zeile 30:
Das Script für Entscheidungen liegt auf der Console.  
Das Script für Entscheidungen liegt auf der Console.  


GO Chaser ist eine Liste aller Szenen, die hier Abläufe heißen.  
===Code OSC Kommunikation===
Dieser Chaser reagiert auf Druck der Leertaste und springt zur nächsten Szene.
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.
Will man eine bestimmte Szene aufrufen, kann man bei current ablauf die vorherige Szene eingeben (Bsp: ich will in die 5, muss dafür dort 4 drücken)
<source lang="csharp" line start="2" highlight="4-6">
Es gibt einen Ordner Abläufe, dieser beinhaltet für jede Station das Element Intro. Diese steuert die verschiedenen Punkte der anderen Stationen.  
using System.Collections;
Dort gibt es auch jeweils ein Script, das die verschiedenen Elemente, die im Intro-Moment passieren können.  
using System.Collections.Generic;
Unter End liegen vier verschiedene Enden, die das jeweils passende Ende abspielen.  
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");
        }
    }
</source>
=== Diverses Technisches===
Zum Bewegen des Plotters:  
Zum Bewegen des Plotters:  


Zeile 32: Zeile 163:
:T-Tempelhof
:T-Tempelhof


Tablet App: Julian [https://wetransfer.com/downloads/e12c9485b150350b4f483976b5a9ac4620191119163211/333d6f79013b0c3ddb7255c5ff58847120191119163212/63203c?utm_campaign=WT_email_tracking&utm_content=general&utm_medium=download_button&utm_source=notify_recipient_email WETRANSFER]!  
Die App des Tablets liegt hier. [https://wetransfer.com/downloads/e12c9485b150350b4f483976b5a9ac4620191119163211/333d6f79013b0c3ddb7255c5ff58847120191119163212/63203c?utm_campaign=WT_email_tracking&utm_content=general&utm_medium=download_button&utm_source=notify_recipient_email WETRANSFER]!  


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


Die Berlin Version und die Hamburg unterscheiden sich technisch nicht an vielen Stellen.
===Hardware_Liste für BeBernd===
 
Hardware_Liste für BeBernd:
:- 1 VR Brille
:- 1 VR Brille
:- 1 Tablet das Google AR-Core fähig ist
:- 1 Tablet das Google AR-Core fähig ist
Zeile 60: Zeile 188:
:- 1 Usb Micro auf Typ A für Plotter
:- 1 Usb Micro auf Typ A für Plotter
:- 4 Mini LED Pars(Optional)
:- 4 Mini LED Pars(Optional)
==Mitwirkende==
Lena Eikenbusch, Fabian Raith, Anton Krause, Janne Nora Kummer

Aktuelle Version vom 16. April 2020, 22:31 Uhr

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