Für die standardmäßige Nutzung für Lehre und Forschung, sehen Sie bitte in die [ReadMe-Datei](https://gitup.uni-potsdam.de/mm_vr/vr-klassenzimmer/blob/master/README.md). Diese Seite behandelt das notwendige Setup um Änderungen am Projekt vornehmen zu können und es für eigene Arbeiten (z.B. Abschlussarbeiten) zu verwenden.
## Installationen
Zunächst benötigen Sie einige Programme um das VR-Klassenzimmer im Entwicklermodus zu starten. Hier werden diese Programme aufgelistet und Beispielquellen verlinkt
*[git](https://git-scm.com/downloads) ist ein Versionskontrollprogramm, mit dem Sie die aktuelle Version des Projekt herunterladen können und ihre Änderungen versionieren.
*[gitExtensions](http://gitextensions.github.io/) ist eine GUI für git. Es gibt diverse GUIs für git, jedoch haben einige von denen bekannte Probleme mit unity, weshalb zu Extensions geraten wird.
*[git lfs](https://git-lfs.github.com/) ist eine Erweiterung für git, die sich um Dateien kümmert, die nicht menschenlesbar sind, da sie zu groß oder binär sind.
*[unityHub](https://unity3d.com/de/get-unity/download) bietet eine Übersicht über Ihre Unityprojekte, verwaltet verschiedene Unity-Versionen und bietet viele Tutorials und hilfreiche Addons.
*[unity](https://unity3d.com/get-unity/download/archive) ist eine GameEngine und die Entwicklungsumgebung der VR Umgebung vom VR-Klassenzimmer. Um die benötigte Version herauszufinden, nutzen Sie unityHub, fügen Sie das Projekt dort hinzu und laden Sie die vorgeschlagene unity Version herunter um das Projekt zu öffnen. *ACHTUNG* beim Nutzen einer falschen unity-Version können unerwartete Fehler auftreten und die Zusammenarbeit mit anderen Entwicklern ist quasi unmöglich.
*[unity](https://unity3d.com/get-unity/download/archive) ist eine GameEngine und die Entwicklungsumgebung der VR Umgebung vom VR-Klassenzimmer. Um die benötigte Version herauszufinden, nutzen Sie unityHub, fügen Sie das Projekt dort hinzu und laden Sie die vorgeschlagene unity Version herunter um das Projekt zu öffnen. _ACHTUNG_ beim Nutzen einer falschen unity-Version können unerwartete Fehler auftreten und die Zusammenarbeit mit anderen Entwicklern ist quasi unmöglich.
**Optional**
*[SRanipal Unity SDK](https://developer.vive.com/resources/vive-sense/eye-and-facial-tracking-sdk/download/latest/) Eye and Facial Tracking SDK (aktuell nutzen wir nur eyetracking)
*[viveport](https://www.vive.com/de/setup/viveport/) kann die Lösung sein, für unerklärbare Fehler...
*[Blender](https://www.blender.org/) praktisches Tool zur Erstellung von Modellen und 3D-Objekten, und die Umgebung zu ändern.
* Für Unterrichtsgespräche:
*[Graph Editor von yEd](https://www.yworks.com/products/yed/download): Erstellung der Strukturbäume
* Software für die Audioaufnahme: Nach eigenen Vorlieben
...
...
@@ -20,18 +22,22 @@ Zunächst benötigen Sie einige Programme um das VR-Klassenzimmer im Entwicklerm
Aktuell gibt es zwei Versionen des Frontends, je nachdem welche Sie bearbeiten wollen folgen Sie dem richtigen Setup:
Alte Seite -->
Alte Seite --\>
*[nodeJS](https://nodejs.org/en/download/) ist eine Entwicklungsumgebung für Webanwendungen basierend auf JavaScript. In diesem Projekt ist nodeJS für das Frontend verantwortlich.
*[redux Toolkit](https://redux-toolkit.js.org/introduction/quick-start) ist ein Package für nodeJS und versorgt das Frontend mit notwendigen Funktionen.
*[electron](https://www.electronjs.org/docs/tutorial/installation) bietet für das Frontend eine Browser-unabhängige Oberfläche und stellt so das Frontend als vollwertige App dar.
Neue Seite -->
Neue Seite --\>
*[Angular](https://angular.io/guide/setup-local)
## Einarbeitung
Nachdem nun eine ganze Batterie an neuer Software auf Ihrem System zu finden ist, stehen Sie vor einem historisch gewachsenen Projekt mit diversen Entwicklern. Dies kann beim ersten Kontakt überwältigend sein und Sie wünschten sich etwas mehr Übersicht. Diese Probleme soll dieses Kapitel ansprechen
### Einen Überblick verschaffen
Je nachdem in welchem Bereich Sie entwickeln wollen, müssen Sie sich natürlich mit der Entwicklungsumgebung auseinander setzen. Hierfür gibt es diverse Quellen auf YouTube, Stackoverflow, usw. Es werden Ihnen natürlich keine konkreten Tipps zu diesem Projekt gegeben, jedoch ist es sinnvoll zu erfahren wie die Entwicklungsumgebung aufgebaut ist. Im Folgenden wird hier auf die Struktur der VR-Umgebung eingegangen und _kurze Eingewöhnungsübungen werden markiert_.
Zum derzeitigen Stand (06.01.2021) gibt es zwei Versionen des VR-Klassenzimmers. Eine Version ist auf die Nutzung mit einer Vive-Brille spezialisiert (master branch) und die andere auf die Oculus-Brillen (oculusVersion branch). Je nach Hardware sollten Sie also die richtige Version in git (extensions) auschecken. Ist das Projekt geöffnet, sehen Sie eine Ordnerhierarchie. Alle Assets (Ordner) unter "AssetStore" sind von Drittentwicklern entworfen und wurden nicht maßgeblich geändert. In den Ordnern beginnend mit "own" wie "ownScripts", "ownPrefabs", usw. liegen eigene Entwicklungen. Der Ordner "Scenes" beinhaltet verschiedene Sitzordnungen für die virtuelle Klasse und Tutorial- oder Menü-Umgebungen. Für eigene Tests zur Eingewöhnung in das Projekt ist der Ordner "Scenes" zu empfehlen, wobei "Testumgebungen" vor dem ersten git Push wieder entfernt werden sollten. _Um eine Orientierung aufzubauen, versuchen Sie zum Beispiel das selbst geschriebene Script zu finden, welches ein Audio-Ambiente für die Szenen verwaltet._
...
...
@@ -48,7 +54,8 @@ Die Funktionalität von Teach-R ist nach den jeweiligen Sinneinheiten in Unity P
@@ -59,7 +66,6 @@ Die Funktionalität von Teach-R ist nach den jeweiligen Sinneinheiten in Unity P
The ApplicationManager is part of the **Core Featurepack** of Teach-R and provides functionality regarding the global data management as well as the correct initialization within the unity gameloop of all other assets with the help of the event hooks it provides.
@@ -87,29 +93,32 @@ The ApplicationManager is part of the **Core Featurepack** of Teach-R and provid
> **OnLateUpdate** \
> Action event that can be used to use the lateUpdate functionality in non-monobehavior scripts.
</details>
</details>
## Theoretische Grundlagen
Da dieses Projekt in erster Linie ein Forschungsprojekt ist, sollten Entwicklungsentscheidungen bestmöglich auf wissenschaftlichen Quellen beruhen. Bereits erforschte Umstände mit dem Projekt finden Sie [hier](https://www.uni-potsdam.de/de/multimedia/projekte/anwendungen/vr-klassenzimmer). Eine Wissenssammlung über genutzte Quellen der Entwicklungen wird hier auf Grund der Übersichtlichkeit nicht verlinkt. Ausgearbeitete Veröffentlichungen werden aber auf der verlinkten Seite geteilt und studentische Arbeiten, in Zukunft auch auf Wunsch bereitgestellt.
## Abschluss einer Entwicklung
Da Sie einen Beitrag zur Forschung, Ihrem eigenen Portfolio und zu Teach-R mit Ihrer Arbeit gebracht haben, sollten Sie darauf achten, dass Ihre Arbeit nachhaltig sichtbar sein kann. Dafür beachten Sie bitte folgende Punkte:
* [ ] Ihre Entwicklung ist in einer README beschrieben (entweder das README des packages oder im entsprechenden Unterordner)
* [ ] Ihre Entwicklungen befinden sich in einem package gekapselt entsprechend der oben beschriebenen Hierarchie.
* [ ] Der letzte Stand Ihrer Entwicklung muss mit der neuesten Version des development-branchs gemerged werden.
* [ ] In der Konsole werden keine Fehler geworfen, die nicht auf dem development-branch sind. Überprüfen Sie dies in allen Szenen.
* [ ] Die Performance von Teach-R muss weiterhin eine flüssiges Bild generieren (FPS in runtime mindestes 30)
* [ ] Die Coach Website (teach-r.uni-potsdam.de) ist weiterhin funktional. Sie kann Verhalten der vSuS, Themen, Impulse, Lautstärke, Wetter und Präsentationsfolien steuern.
* [ ] Die Coach Website (teach-r.soft.cs.uni-potsdam.de) ist weiterhin funktional. Sie kann Verhalten der vSuS, Themen, Impulse, Lautstärke, Wetter und Präsentationsfolien steuern.
* [ ] Wenn in Ihrer Entwicklung bestehende Prefabs erweitert wurden, müssen die Prefabs "overwritten" werden. So befindet sich die neu implementierte Funktionalität in allen Szenen, in denen das Prefab genutzt wird.
Nun können Sie einen Merge-Request stellen. Dieser wird von einem Maintainer umgesetzt.
## Dokumentation für Programmierer
Der Bezug von Klassen untereinander, die Funktionsweisen und Existenzen von Funktionen sowie viele andere hilfreiche Aspekte finden Sie in unserer [Dokumentation](https://mm_vr.pages.uni-potsdam.de/vr-classroom-docs/).
## Taking credit for your work
Nachdem ein substanzieller Beitrag geliefert wurde im Code, kann Ihr Name als Entwickler der Software mit aufgeführt werden. Sobald die Software also referenziert wird, wird auch Ihr Name mit erwähnt. Um in dieser Form zitiert zu werden, passen Sie bitte die "citations.cff" an, in dem Sie sie um Ihre Daten erweitern, in dem vorliegenden Stil.