Skalierbare VR-Trainingssimulatoren entwickeln Architekturleitfaden für Enterprise Learning

Skalierbare VR-Trainingssimulatoren entwickeln: Architekturleitfaden für Enterprise Learning

VR-Trainingsprojekte scheitern oft auf vorhersehbare Weise. Ein Team entwickelt einen Prototyp für ein Brandschutzszenario in Unity, demonstriert ihn auf einer Quest 3 und stößt dann auf Probleme, als das LMS-Team nach dem Datenformat des Headsets fragt. Sechs Wochen später existiert zwar ein funktionierendes Szenario, aber die LMS-Integration ist fehlerhaft. Die Architekturentscheidungen, die dies verhindert hätten, wurden nicht getroffen, da das Projekt mit der Demo und nicht mit der Datenpipeline begann.

Dieser Artikel erklärt, wie man einen VR-Trainingssimulator entwickelt, der auch bei wachsenden Inhaltsbibliotheken, Backend-Integrationen und steigenden Teilnehmerzahlen wartungsfreundlich bleibt. Der Fokus liegt auf VR-Training für Unternehmen: Backend-Integration, LMS-Anbindung, skalierbare Unity-Projektstruktur und VR-Anwendungsarchitektur für langfristige Wartbarkeit.

Die richtige Engine für die Entwicklung von VR-Trainingssoftware wählen

Jedes Entwicklungsprojekt für VR-Trainingssoftware beginnt mit derselben grundlegenden Entscheidung: Die Auswahl der Engine und der Headset-Plattform muss getroffen werden, bevor andere Architekturentscheidungen folgen. Diese frühen Festlegungen beeinflussen den gesamten Entwicklungsprozess mit Unity für VR-Anwendungen. Ein späterer Wechsel der Engine oder Hardwareplattform ist während des Projekts mit erheblichem Aufwand verbunden und daher in der Praxis meist keine realistische Option.

Im Enterprise-Umfeld ist Unity heute die Standardwahl für die Entwicklung von VR-Trainingssimulatoren. Dafür sprechen unter anderem folgende Gründe:

  • Gute Unterstützung für Standalone-Headsets
  • Eine ausgereifte OpenXR-Implementierung
  • Ein größerer Pool an C#-Entwicklern als bei Unreal

Wenn jedoch fotorealistische Darstellungen zwingend erforderlich sind, ist Unreal Engine ebenfalls eine sinnvolle Wahl. Allerdings gestaltet sich der Aufbau und die langfristige Besetzung von Unreal-Teams über mehrere Jahre meist schwieriger. Dieser Faktor gewinnt insbesondere dann an Bedeutung, wenn Unternehmen ihre Trainingsbibliothek kontinuierlich um neue Szenarien erweitern möchten.

Für Standalone-VR-Headsets gilt die Meta Quest 3 derzeit als die bevorzugte Plattform im Enterprise-Bereich. Sie benötigt keinen angeschlossenen PC, lässt sich mit Meta for Work vergleichsweise einfach verwalten und erreicht bei gut optimierten Projekten problemlos flüssige 72 Hz.

Innerhalb von Unity ist die Universal Render Pipeline (URP) die sinnvollste Wahl für Standalone-Headsets. Sie wurde speziell für mobile GPUs entwickelt und unterstützt Fixed Foveated Rendering. Dabei werden die Randbereiche des Sichtfelds mit einer geringeren Auflösung gerendert, wodurch die GPU entlastet wird, ohne die wahrgenommene Bildqualität wesentlich zu beeinträchtigen.

Die High Definition Render Pipeline (HDRP) bietet zwar eine deutlich höhere grafische Qualität, wurde jedoch in erster Linie für leistungsstarke Desktop-GPUs entwickelt. Ihre Rendering-Architektur und ihr Funktionsumfang sind nicht für die tile-basierte mobile GPU-Architektur von Standalone-Headsets wie der Meta Quest ausgelegt. Deshalb ist URP die praktischere Wahl für Enterprise-VR-Projekte.

Diese Entscheidung sollte bereits bei der Einrichtung des Projekts getroffen werden, da ein Wechsel der Render-Pipeline während der Entwicklung mit erheblichem Aufwand verbunden ist.

Unity-Projektarchitektur: Eine skalierbare Architektur für VR-Trainingssoftware

Bei einem monolithischen Unity-Projekt im Enterprise-Trainingsumfeld treten die größten Probleme meist nicht dann auf, wenn die Anwendung nicht mehr funktioniert. Sie entstehen jedes Mal, wenn Inhalte aktualisiert werden müssen. In einem gut konzipierten System sollte die Korrektur einer einzelnen Schrittbeschreibung in einem Sicherheitstrainingsszenario nicht dazu führen, dass Szenendateien geändert werden müssen und dadurch Regressionen in anderen Modulen entstehen.

Diese Modularität bildet die Grundlage einer skalierbaren Architektur für Enterprise-VR-Trainingssoftware. Sie ermöglicht die Weiterentwicklung von Trainingsszenarien, Integrationen und Analysefunktionen, ohne dass das gesamte Projekt umstrukturiert werden muss.

Für größere Projekte hat sich eine Modul-pro-Szenario-Struktur mit einem gemeinsam genutzten Runtime-Kern als besonders bewährt:

Assets/
_Core/
   XRRig/
   ScenarioManager/
   AnalyticsClient/
   UIFramework/
Modules/
   FireSafety/
     Scenes/
     Prefabs/
     ScriptableObjects/
   EquipmentInspection/
StreamingAssets/
   Configs/

ScriptableObjects sind der geeignete Datentyp für die Konfiguration von Trainingsszenarien. Schrittfolgen, Bestehens- und Fehlerkriterien, Zeitlimits sowie Lokalisierungsstrings sollten dort gespeichert werden. Die Zustandsmaschine des Szenarios liest diese Daten zur Laufzeit aus den ScriptableObjects. Wird beispielsweise eine Schrittbeschreibung geändert, muss lediglich ein Datenobjekt angepasst werden – nicht jedoch die C#-Logik. Dieser Unterschied ist besonders wichtig, wenn Inhaltsänderungen zunächst von Fachexperten geprüft werden müssen und nicht jedes Mal einen vollständigen Entwicklungszyklus erfordern sollen.

Die standardmäßig mit der Anwendung ausgelieferte Konfiguration wird unter StreamingAssets/Configs/ gespeichert. Heruntergeladene Konfigurationsaktualisierungen sollten hingegen unter Application.persistentDataPath abgelegt werden. Beim Start der Anwendung lädt der ScenarioManager zunächst die lokal vorhandenen Aktualisierungen und greift nur dann auf die mitgelieferte Standardkonfiguration zurück, wenn keine neuere Version verfügbar ist. Dadurch kann das Backend überarbeitete Schrittbeschreibungen oder neue Schwellenwerte bereitstellen, ohne dass eine vollständige APK-Version veröffentlicht werden muss. Unternehmen, die ihre Compliance-Schulungen beispielsweise quartalsweise aktualisieren, können Konfigurationsänderungen auf diese Weise wesentlich schneller bereitstellen als durch die Verteilung einer neuen Anwendung auf eine per MDM verwaltete Headset-Flotte.

Der ScenarioManager steuert außerdem den gesamten Lebenszyklus einer Trainingseinheit und übermittelt xAPI-Statements erst nach dem erfolgreichen Abschluss eines Szenarios. Dadurch wird verhindert, dass unvollständige Datensätze im Learning Record Store (LRS) gespeichert werden.

Backend-Services: Was tatsächlich serverseitig laufen muss

Standalone-Headsets können eigenständige Trainingsszenarien auch ohne Backend ausführen. In produktiven Deployments werden jedoch in der Regel eine zentrale Konfiguration, Multi-User-Koordination, xAPI-Pufferung, Analytics-Aggregation und Authentifizierungsdienste benötigt. Dafür reichen oft einige wenige Endpoints in einem .NET– oder Node.js-Service aus:

Endpoint Zweck
GET /scenarios/{id}/config Gibt die aktuelle Szenariokonfiguration als JSON zurück
POST /sessions Erstellt einen Session-Datensatz und gibt ein Session-Token zurück
POST /sessions/{id}/statements Puffert xAPI-Statements für die Weiterleitung an den LRS
GET /sessions/{id}/status Wird für Instructor-Dashboards verwendet

Für cloud-native Deployments kommen häufig eine containerisierte .NET- oder Node.js-API, eine verwaltete relationale Datenbank und Object Storage für Konfigurationspakete zum Einsatz.

Die Übertragung von xAPI-Statements an den LRS sollte asynchron erfolgen. Das Headset sendet Statements an einen Backend-Service, der sowohl als Authentifizierungsproxy als auch als Pufferungsschicht dient, bevor er sie nach einem eigenen Zeitplan an den LRS weiterleitet. Dieser Ansatz hält LRS-Zugangsdaten aus der Anwendung heraus, zentralisiert die Authentifizierung und entkoppelt den Abschluss einer Trainingseinheit von der Verfügbarkeit des LRS. Das ist besonders wichtig, wenn Enterprise-Plattformen Wartungsfenster oder Rate Limits haben. Ein Lernender sollte keinen fehlgeschlagenen Session-Datensatz erhalten, nur weil der LRS während der Trainingseinheit nicht verfügbar war.

LMS-Integration: SCORM vs. xAPI

Die LMS-Integration ist ein Bereich, in den viele Projekte zur Entwicklung von VR-Trainingssoftware zu wenig investieren. In den meisten Fällen zeigen sich die Folgen nicht während der Entwicklung, sondern erst bei einer Beschaffungsprüfung oder einem Compliance-Audit. Eine erfolgreiche LMS-Integration für VR-Trainingssoftware erfordert mehr als die reine Übermittlung eines abgeschlossenen Szenarios. Kennzahlen wie Entscheidungszeit, Fehlerraten oder ausgelassene Checklistenschritte hängen von einem gut geplanten xAPI-Schema ab, das bereits vor der Content-Produktion definiert werden sollte.

SCORM 1.2 oder SCORM 2004 funktioniert mit nahezu jeder Enterprise-Learning-Plattform. Die Reporting-Möglichkeiten bleiben für immersive Trainings jedoch begrenzt. Das liegt daran, dass SCORM ursprünglich für browserbasiertes E-Learning entwickelt wurde und im Wesentlichen Abschlussstatus sowie Punktzahl erfasst. Für einen VR-Trainingssimulator, bei dem Verhaltensdaten im Mittelpunkt stehen, reicht SCORM daher häufig nicht aus.

xAPI, auch Tin Can API genannt, basiert auf Statements: Actor, Verb, Object sowie einem Extensions-Block für zusätzliche Daten. Eine VR-Session kann beispielsweise folgende Statements ausgeben:

{
"actor": { "account": { "name": "user123" } },
"verb": { "id": "http://adlnet.gov/expapi/verbs/completed" },
"object": { "id": "urn:scenario:forklift-inspection" },
"result": {
  "score": { "scaled": 0.82 },
  "extensions": {
    "time_to_first_hazard_ms": 47200,
    "checklist_items_skipped": 1
  }
}
}
​

Diese Statements werden an einen Learning Record Store (LRS) übertragen, nicht direkt an das LMS. Der LRS speichert die rohen xAPI-Datensätze. Das LMS erhält zusammengefasste Daten entweder aus dem LRS oder vom Backend-Aggregator. cmi5 erweitert xAPI, indem es standardisiert, wie ein LMS externe Lernanwendungen startet, die Identität der Lernenden verwaltet und LRS-Verbindungsdaten austauscht. Es ist daher eine starke Wahl, wenn LMS-Interoperabilität Priorität hat.

Die Möglichkeiten dieser Konnektoren unterscheiden sich je nach LMS-Plattform. Deshalb sollte vor der Entscheidung für einen Integrationsansatz geprüft werden, welche xAPI- und cmi5-Unterstützung der jeweilige Anbieter bietet.

Der Integrationsablauf für Standalone-Headsets:

LMS-Integration in VR-Simulatoren Integrationsablauf für eigenständige Headsets

Aus Sicht der Nutzer läuft der Prozess wie folgt ab:

  • Zu Beginn verbindet eine Launcher-Seite das LMS mit dem Headset
  • Sobald der Lernende die zugewiesene Schulung im LMS-Portal öffnet, wird ein Session-Token erstellt, mit dem das entsprechende Szenario auf dem Headset gestartet wird

Für kleinere Deployments können kurze Codes verwendet werden. In größeren Enterprise-Umgebungen kommen dagegen meist Deep Links, QR-Code-Logins oder SSO-integrierte Start-Workflows zum Einsatz. Die xAPI-Statements übernehmen dabei denselben Session-Kontext, sodass die Ergebnisse dem Profil des jeweiligen Lernenden eindeutig zugeordnet werden können.

Synchronisierung mehrerer Nutzer

Auch wenn Multi-User-Unterstützung für viele erste Deployments noch nicht erforderlich ist, lohnt es sich, sie frühzeitig in der Architektur zu berücksichtigen. So lassen sich später aufwendige Änderungen vermeiden. Typische Einsatzszenarien sind:

  • Instruktorgeführte Schulungen, bei denen ein Instruktor den Lernfortschritt beobachten und bei Bedarf eingreifen kann.
  • Kollaborative Trainingsszenarien, in denen zwei oder drei Lernende gemeinsam in derselben virtuellen Umgebung arbeiten.

Beide Szenarien erfordern die Synchronisierung der Headset-Positionen, der Controller- und Handposen sowie der Interaktionsereignisse.

Photon Fusion bietet eine verbesserte Client Prediction für reaktionsschnelle XR-Interaktionen. Mirror stellt eine Open-Source-Alternative mit selbst verwaltetem Networking dar. Welche Lösung sich besser eignet, hängt von der Komplexität der Interaktionen, den Skalierungsanforderungen und den Anforderungen an das Deployment ab.

Synchronisiert werden sollte nur das, was tatsächlich erforderlich ist: Position und Ausrichtung des Headsets, Hand- und Controller-Posen sowie einzelne Interaktionsereignisse reichen in der Regel aus. Der Szenenzustand wird auf dem Host verwaltet und an die Clients repliziert. xAPI-Statements werden lokal auf jedem Client erzeugt und unabhängig voneinander übertragen. Je mehr Simulationslogik in die Netzwerkschicht verlagert wird, desto schwieriger wird es, das System isoliert zu testen.

Performance-Optimierung für Ihren VR-Trainingssimulator

Für Meta Quest gelten allgemein folgende Performance-Ziele: 500–800 Draw Calls, eine GPU-Frame-Zeit unter 4,5 ms und eine CPU-Zeit unter 8 ms. Gut optimierte veröffentlichte Anwendungen liegen häufig eher bei 450–650 Draw Calls.

Zu den häufigsten vermeidbaren Performance-Problemen bei der Entwicklung von VR-Trainingssoftware gehören:

Unkomprimierte Texturen. ASTC-Texturkomprimierung ist auf Quest-Headsets essenziell. Unkomprimierte Texturen erhöhen die Speicherbandbreite erheblich und verursachen häufig Ruckler.

Mono Scripting Backend. Produktive Quest-Builds sollten IL2CPP verwenden, um eine bessere Laufzeitleistung und Kompatibilität mit modernen Meta-XR-SDK-Versionen zu erreichen.

OpenGL ES 3.1. Moderne Quest-Entwicklung sollte auf Vulkan ausgerichtet sein. Aktuelle Meta-XR-SDK-Versionen haben die Unterstützung für OpenGL ES eingestellt. Neue Quest-3-Projekte sollten Vulkan daher als Standard-Grafik-API behandeln, statt Legacy-OpenGL-ES-Konfigurationen im Build beizubehalten.

Ein weiterer wichtiger Punkt: Der Detailgrad sollte immer geplant werden, bevor Umgebungen erstellt werden. Eine nachträgliche Umsetzung ist teuer. Fixed Foveated Rendering sollte aktiviert werden, da es die Randbereiche des Sichtfelds mit geringerer Auflösung rendert. In Trainingsinhalten fällt dieser Effekt kaum auf, da die Aufmerksamkeit der Lernenden meist auf eine konkrete Aufgabe im Zentrum des Sichtfelds gerichtet ist.

Sehen wir uns den folgenden Code an:

#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;

[ExecuteInEditMode]
public class DrawCallAudit : MonoBehaviour
{
    void OnGUI()
    {
        int batches = UnityStats.batches;
        GUI.color = batches > 800 ? Color.red : Color.white;
        GUI.Label(
            new Rect(10, 10, 220, 20),
            $"Editor batches: {batches} / ~650 target");
    }
}
#endif

Das Team von Chudovo verwendet dieses minimale, ausschließlich im Editor verfügbare Tool während der Erstellung von Szenen, um Überschreitungen des Rendering-Budgets frühzeitig zu erkennen, bevor sie sich auf das gesamte Projekt auswirken. Es eignet sich gut, um bereits während der Entwicklung eine erste Einschätzung der Performance zu erhalten. Für eine umfassende Leistungsanalyse in URP-basierten Projekten bleiben jedoch der Unity Rendering Debugger und der Unity Profiler die maßgeblichen Werkzeuge.

Sicherheitsaspekte für Enterprise-Deployments

Enterprise-IT-Teams legen besonderen Wert auf Authentifizierung, Datenresidenz und Geräteverwaltung. Werden diese Themen bereits zu Beginn der Architekturplanung berücksichtigt, lassen sich spätere Anpassungen und zusätzlicher Entwicklungsaufwand vermeiden.

Für die Authentifizierung sollten kurzlebige JWTs (JSON Web Tokens) anstelle fest eingebetteter Tokens verwendet werden. In Enterprise-Umgebungen erfolgt die Integration in der Regel über Azure AD oder Okta mittels Single Sign-on (SSO).

Auf der Datenseite ist zu beachten, dass xAPI-Statements personenbezogene Informationen sowie Leistungsdaten der Lernenden enthalten. Diese Daten sollten sowohl im Learning Record Store (LRS) als auch in allen zwischengeschalteten Speichersystemen verschlüsselt abgelegt werden. In den meisten Ländern gelten hierfür Datenschutzvorschriften wie die DSGVO (GDPR) oder vergleichbare gesetzliche Regelungen.

Standalone-Headsets sollten außerdem in ein Mobile Device Management (MDM) eingebunden werden. Dies kann beispielsweise mit Jamf, Workspace ONE oder dem Meta MDM erfolgen. Ein MDM ermöglicht unter anderem die Verteilung von APK-Dateien, die Verwaltung von Zertifikaten sowie das Remote-Löschen von Geräten. Gleichzeitig entfällt der manuelle Aufwand für die Aktualisierung größerer Headset-Flotten.

Darüber hinaus sollte die gesamte Backend-Kommunikation nach Möglichkeit TLS 1.3 verwenden. TLS 1.2 sollte nur dann eingesetzt werden, wenn dies aus Kompatibilitätsgründen mit bestehender Enterprise-Infrastruktur erforderlich ist. In regulierten Branchen sollte der gesamte Netzwerkverkehr ausschließlich über freigegebene Cloud-Regionen oder On-Premises-Infrastrukturen erfolgen, entsprechend den jeweiligen Compliance-Anforderungen.

Die Architektur im Überblick

Aspekt Kleines Pilotprojekt (<50 Lernende) Enterprise-Umgebung (500+ Lernende)
Content-Bereitstellung APK per MDM-Sideloading CI/CD-Pipeline mit MDM für OTA-Deployments
LMS-integration SCORM 1.2-Paket xAPI + LRS (Watershed oder Learning Locker)
Backend Minimale REST API Asynchrone Queue mit Managed Failover
Multi-user Nicht erforderlich Photon Fusion oder Mirror (Self-Hosted)
Analytik LMS-Abschlussstatus und Bewertung xAPI-Erweiterungen: Zeit pro Schritt, Fehlerrate
MDM Grundlegende Geräteverwaltung Vollständige Flottenverwaltung mit Remote-Wipe

Ein kleines Pilotprojekt benötigt nicht den vollständigen Technologie-Stack. Ein SCORM-Paket, eine APK mit einem einzelnen Trainingsszenario und ein einfaches LMS reichen aus, um das Trainingskonzept zu validieren. Die zusätzliche Architektur wird erst dann erforderlich, wenn das Projekt skaliert. Der Übergang zu einer Enterprise-Architektur gelingt jedoch deutlich einfacher, wenn die Modulstruktur und das xAPI-Schema von Anfang an sauber konzipiert wurden.

Fazit

Die Architektur eines Enterprise-VR-Trainingssimulators ist in erster Linie eine Aufgabe der Systemintegration. Für Rendering und Interaktionen stehen heute ausgereifte Werkzeuge zur Verfügung. Die größere Herausforderung besteht darin, die Datenpipeline sinnvoll zu gestalten. Sitzungsdaten müssen zuverlässig vom Standalone-Headset über das Backend und eine Warteschlange in einen Learning Record Store (LRS) gelangen und anschließend so aufbereitet werden, dass Learning-&-Development-Teams daraus verwertbare Erkenntnisse gewinnen können.

Diese Architekturentscheidungen entsprechen zugleich den Best Practices für die Entwicklung von VR-Trainingssoftware. Sie reduzieren den Aufwand für zukünftige Content-Updates, LMS-Integrationen und die Skalierung von Headset-Flotten. Individuelle VR-Trainingslösungen, die die Datenarchitektur als zentrales Designthema behandeln, schaffen eine belastbare Grundlage für langfristig skalierbare immersive Trainingsplattformen.