Wir Haben Fragen

Aus hyperdramatik
Wechseln zu: Navigation, Suche

Projekt-Beschreibung

Ankündigungstext für das Next Level Festival 2021

Wir haben Fragen vor Ort beim Zeche Zollverein
Bildschirmfoto der App

Wir sind beim Ausflug in unsere erste eigene Augmented Reality auf einige Fragen gestoßen, die uns in unserem Versuch mit AR eine Erfahrung für Publikum zu gestalten sowohl aufgehalten als auch weitergebracht haben. Diese Fragen möchten wir gerne in den Raum werfen, zur Diskussion stellen und damit vielleicht weiterführende Fragen anregen: Wie können Menschen über AR kommunizieren, wenn sie nicht zur gleichen Zeit am selben Ort sind?

Wie würde ich einen Button in der realen Welt bauen? Wie bringe ich AR als Erfahrung weiter weg von einer Computer-Spiel Erfahrung? Wie kann ich diese Grenze eher hin zur Reallife Erfahrung verschieben?

Eine Arbeit von: Leonie Bramberger, Maria Huber

Video: https://www.youtube.com/watch?v=ZN5mIyuBc6c



Beschreibung der Performance

Die Zuschauenden erhalten bei uns ein Tablet gegen Vorlage eines Pfands. Wir erklären ihnen anschliessend was sie erwartet, wobei wir unterschiedliche Varianten dieser Einleitung ausprobiert hatten, siehe Lernerfahrungen Leonie und Maria .

Ein Einleitungsbeispiel könnte sein:

"Möchtest du mit machen bei unserem AR-Walk "Wir haben Fragen?"
Die erste Frage, die wir haben ist: Möchtest du ein Tablet, das schon viele Menschen vor dir hatten oder eines das eher weniger Menschen hatten?
Das hier ist ein AR Walk. Das bedeutet wir haben das Aussengelände als 3D Modell nachgebaut und du kannst dich mit Hilfe deines Tablets und GPS durch diese 3D Welt hindurch bewegen. In dieser Welt haben wir Fragen versteckt, die du beantworten kannst. Durch das Beantworten der Fragen kannst du die Objekte im Raum verändern bzw. wachsen lassen. Du kannst auf das Tablet tippen und dadurch die Antwortbutton auswählen. Das Ganze ist GPS basiert und man kennt das von Google Maps, machmal lacked das ein bisschen oder zieht ein bisschen hinterher, deshalb brauchst du ein bisschen Geduld bei deinem Spaziergang. Andere Menschen vor dir haben die Fragen auch schon beantwortet und die Objekte verändert. Du kannst ihre Antworten also auch sehen. Die Fragen befinden sich auf dem gesamten Aussengelände, du kannst vor allem in diese und diese (zeigen der Richtungen) Richtung losgehen. Wenn du keine Fragen mehr findest, bist du wahrscheinlich fertig. Wir freuen uns, wenn du die Fragen ehrlich beantwortest, am Ende werden wir dich fragen, ob du deine Antworten für andere speichern möchtest. Viel Spass!"

Nach der Einführung begeht das Publikum das Gelände selbstständig. Am Ende werden sie gefragt, ob sie noch eine Frage haben, die sie gerne in der Welt platzieren würden für andere und ob sie ihre Antworten für Nachfolgende speichern möchten.

Gesprächsprotokolle: Wünsche, Ideen und Fragen bei der Entwicklung

  • Wie kann man Interaktionen in der physischen Welt und AR zusammen verbinden?
  • Wie kann ich durch Positionierung in der realen Welt Fragen in der AR Welt beantworten? (reale Positionierung und ideele Positionierung)
  • Wie können Menschen kommunizieren wenn sie nicht zur gleichen Zeit am selben Ort sind?
  • An welchem Ort macht man das? Wie ist Ort mit der AR Erfahrung verknüpft? Wie bezieht man den realen Ort und seine Spezifika mit ein? Was ist die AR Welt? - Parallelwelt, Tool?
  • Wie kann ich meine Präsenz als vorhergehende für andere sichtbar machen? // Als Spur?
  • Wie können Menschen kommunizieren wenn sie nicht zur gleichen Zeit am selben Ort sind?
  • Welche Strukturen bietet mir die Game Engine um eine Erfahrung zu gestalten?
  • Wie kann ich Grundprinzipien wie z.B. Speichern und Laden verwenden, um ein cooles Erlebnis zu schaffen, ohne direkt verknüpfte Dinge, wie Buttons zu verwenden? Wie kann man Motiontracking, also die Position in der Welt für viel mehr Game Momente benutzen?

Code

Object Growth

Wie lege ich Code auf ein Objekt ab, wie initiiere ich Code durch Button Click, wie kann ich Objekte unterschiedlich wachsen lassen xxxx xxxx xxxx

Speichern in Unity

Wie speichere ich in JSON



using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ButtonSpeicherskript : MonoBehaviour
{
    public SaveData myData;
    public string jsonDateiname;


    void Awake()
    {
        myData = new SaveData();

       /*wenn ich die App im Editor laufen lasse, lädt es die auf der Festplatte vom Conmputer gespeicherten Daten.
        *else: wenn ich die Anwendung woanders als im Editor laufen lasse (in unserem Fall Android Tablet) 
        *dann lädt es aus den .json Files, die am Tablet (dem jeweiligen Gerät) gespeichert wurden.
        *persistentDataPath ist in diesem Fall Android/data/Unityprojektname, allerdings am Tablet in den Files nicht sichtbar, aber vorhanden.
        */

        if (Application.isEditor)
        {
            if (System.IO.File.Exists(Application.dataPath + "/Resources/" + jsonDateiname + ".json"))
            {
                string gelesenertext = System.IO.File.ReadAllText(Application.dataPath + "/Resources/" + jsonDateiname + ".json");
                Debug.Log("LFX:Wir haben text gelesen" + gelesenertext);
                myData = JsonUtility.FromJson<SaveData>(gelesenertext);

                Debug.Log("LFX:Daten geladen");
            }
        }
        else
        {
            
            if (System.IO.File.Exists(Application.persistentDataPath + jsonDateiname + ".json"))
            {
                string gelesenertext = System.IO.File.ReadAllText(Application.persistentDataPath + jsonDateiname + ".json");
                Debug.Log("LFX:Wir haben text gelesen" + gelesenertext);
                myData = JsonUtility.FromJson<SaveData>(gelesenertext);

                Debug.Log("LFX:Daten geladen");
            }
        }
        
    }

    public void SaveIntoJson()

        /* genauso wie oben beim laden machen wir es hier: if App is played im Editor, 
         * dann wollen wir gerne auf die festplatte unseres Computers speichern, auf dem Unity läuft.
         * else die App läuft auf einem anderen Gerät, dann bitte auf dem jeweiligen gerät (persistentDataPath) speichern.
         */
    {
        if (Application.isEditor)
        {
            Debug.Log("LFX:Saved!");
            string meineDaten = JsonUtility.ToJson(myData);
            System.IO.File.WriteAllText(Application.dataPath + "/Resources/" + jsonDateiname + ".json", meineDaten);
            // Der String meine Daten, wird im Datenobjekt (myData) in JSON geschrieben.
        }
        else
        {
            Debug.Log("LFX:Saved!");
            string meineDaten = JsonUtility.ToJson(myData);
            System.IO.File.WriteAllText(Application.persistentDataPath + jsonDateiname + ".json", meineDaten);
            // Der String meine Daten, wird im Datenobjekt (myData) in JSON geschrieben.
        }
    }


    public class SaveData
    {
        public int savedclickcount=1;
    }
}

Wie setze ich Objekte aktiv Set.Active



public GameObject sollVerschwinden;

public void TextVerschwinden()
    {
        sollVerschwinden.SetActive(false);
        
    }

Debugging

Reihenfolge von Positiontarget, Kamera usw. im Editor

Reihenfolge in der Hierarchy

Beim Button klicken am Tablet sind wir auf gröbere Probleme gestoßen, weil der Button zwar klickbar war, aber das Feld in das geklickt werden musste nichts mit dem sichtbaren Button zu tun hatte. Am Ende war es die Reihenfolge in der Hierarchie, die der Kamera schlussendlich ermöglichte Button und Tippen am Tablet richtig zusammenzubringen. Dafür haben wir die Kamera ein Child von einem leeren GameObject gemacht, das wir Agent genannt haben und auf dem wir den NavMeshAgent.

Das Position Target bleibt im 3D Raum hängen

Eher ein Problem mit analoger Lösung: Da wir das Programm bewusst nicht jedes Mal neugestartet hatten, um die Ergebnisse vorhergehender Personen zu speichern, konnte es sein, dass unser Position-Target bei Rückgabe des Tablets in der Halle sich an die letzte Stelle verirrt hatte, an der es noch via GPS gesteuert worden war - in der Halle hatten wir nämlich kein GPS. Bei erneuter Ausgabe der Tablet wurde dann das Target zwar wieder mit GPS gesteuert, sein Startpunkt war aber nicht bei unserem Eingang, sondern ein eben an dieser letzten Stelle. In unserem Fall ist es immer an der gleichen Hausecke hängen geblieben. Um es zu befreien, mussten wir einfach mit dem Tablet einmal zu dieser Ecke laufen, um das Target sozusagen "abzuholen". In einer Überarbeitung wäre ein Reset Button für die Position Target Position wahrscheinlich sehr hilfreich.

Lernerfahrungen

Feedback

  • Prinzipiell galt das positive Feedback vorallem der Idee, dem Konzept und dem Bauen.
  • Das GPS Lagging wurde oft kommentiert auch mit dem Input von anderes Möglichkeiten in AR, Flächen/Bilderkennung, ein Besucher mochte allerdings den Lag sogar und verstand das als zusätzliche Challenge und Wahrnehmungsverschiebung.
  • Anleitungen und Einleitungen wurden auch unterschiedlich als zu viel oder zu wenig oder verwirrend rückgemeldet, da wir diese auch laufend angepasst oder unterschiedlich ausprobiert haben. Wieder andere haben sich ein Ende gewünscht. Also Anfang und Ende waren ein Thema, bzw. sowas wie eine Anzeige wieviele Fragen ich insgesamt überhaupt finden kann, damit es etwas zu schaffen gibt. Manche unserer unerfüllten Wünsche wurden auch im Feedback wiedergespiegelt, zum Beispiel der Wunsch statt Buttons am Screen anzutippen sich bewegen zu müssen um Fragen zu beantworten, oder andere Interaktionsmöglichkeiten mit den Fragen zu haben.
  • Tendenziell hat sich die Idee gut vermittelt sobald sichtbar wurde, dass Objekte schon verändert worden sind von vorherigen Besucher*Innen, wenn ein Tablet schon zugespamt war, dann hat es wieder schlechter funktioniert, weil dann die Auswirkungen meiner eigenen Entscheidungen nicht mehr sichtbar sind.

Für den Überblick und zur Beobachtung der Erfahrungen hat sich eine Tabelle als hilfreich erwiesen, in der zusätzlich zur Ausleihuhrzeit und Tabletname eben auch Feedback und Rückmeldungen der Besucher*Innen notiert wurde.

Lernerfahrungen Maria und Leonie

Maria: Für mich war besonders spannend auszuprobieren, auf welche Einleitung die Besucher*innen wie reagieren. Bei verschiedenen Varianten hatte ich den Eindruck, dass die Zuschauenden mit mehr oder weniger Geduld und Erwartungen an die Performance herangegangen sind. Vor allem, wenn man ihnen davor erklärt hatte, dass das Ganze auf GPS basiert und was das für den Spielfluss bedeutet, hatte ich den Eindruck, dass die Leute diese technische Begebenheit weniger als Hinderniss sondern mehr als Teil der gesamten Erfahrung mit grösserer Geduld angenähert hatten. Ich mag die Idee Fragen für andere zu hinterlassen, die sich erst während des Festivals entwickelt hatte und hätte damit gerne mehr vor Ort experimentiert. Generell die Idee einer verlgeichsweise einfachen Programm-Struktur, die Menschen die Möglichkeit gibt selbst das Programm zu verändern und so vor Ort noch wachsen kann, ist für mich eine super wichtige Erfahrung. Ich habe auch gelernt, dass Playtesting für mich im AR Kontext vor allem Sinn macht, um die Einleitungen zur Erfahrung zu gestalten und auszuprobieren.

Leonie: