Tastaturbefehle in einem Unity-Spiel

  • Eigentlich handelt es sich um eine Art Demo für dieses Datenbrillenzeugs, das ich mir sicher nicht zulegen werde. Aber ich fand diese Szenerie interessant. Man kann das "Spiel" herunterladen und starten. Anfangs konnte ich herumlaufen und dies und das veranstalten. Es handelt sich um dies hier:

    (man muß es nur entpacken)
    Ist ja prima, dachte ich mir und packte es auf einen Stick (auch da lief es) und zeigte es einem Freund. Doch bei dem ging das Herumlaufen nicht mehr, genauer gesagt versagten alle Keyboard-Eingaben, bis auf ESC und Return. Auch auf einem anderen PC.
    Heute Morgen probierte ich es hier nochmal, es lief einwandfrei. Dann wollte ich ein Video davon machen und prompt versagten die Tastatureingaben und Input mit der Maus (die zur Richtungsangabe notwendig ist). Nochmal alles gelöscht und wieder entpackt. Es geht nicht mehr.
    Kennt sich da einer aus? Wieso sollten plötzlich die Eingabegeräte versagen :|
    Es gibt das einen Output.txt, da fiel mir diese Zeile auf


    Fallback handler could not load library E:/Castle Black - An Oculus Rift Experience/Castle_Black_VR_Data/Mono/.\E:/Castle Black - An Oculus Rift Experience/Castle_Black_VR_Data/Plugins/OVRGamepad.dll
    Keine Ahnung ob das etwas zu bedeuten hat.
    Übrigens sind alles Systeme Win7/64bit

  • Unter Win7 x64 habe ich wohl auch das Problem gehabt und bei mir auch lösen können, indem ich die Software für diese VR-Brille installierte.


    Ich hab' mit der Demo eine Weile herumprobiert, sowie mit einer weiteren ("The Wall"), die dasselbe Szenario zeigt, aber von einem anderen Autoren gemacht wurde und wohl auch nicht die Grundlage der "Castle Black"-Demo darstellt. Interessanterweise hatten beide Demos dasselbe Problem bei mir, nämlich dass von Beginn an die Maus-/Tastatursteuerung nicht funktionierte (außer Leertaste, ESC, F11 und Return). Einer Eingebung folgend, installierte ich mal die Software für die "Oculus Rift"-Brille, obwohl ich keine solche Brille hab'. Und siehe da, die Software installierte sich, und danach konnte ich in den Demos Maus und Tastatur zum Bewegen nutzen. Ich hab' das mehrmals hin- und herprobiert, und es war stets dasselbe: Mit OR-Software geht's in beiden Demos, ohne Software dagegen nicht.


    Die Meldungen in der output_log.txt zeigten neben dieser Meldung mit OVRGamepad.dll (die mit OR-Software dann ebenfalls verschwand) noch weitere Hinweise auf Probleme mit Eingabegeräten, z.B.:
    "NullReferenceException: Object reference not set to an instance of an object
    at OVRInput.Get (Button virtualMask, Controller controllerMask) [0x00000] in <filename unknown>:0
    at OVRPlayerController.UpdateMovement () [0x00000] in <filename unknown>:0
    at OVRPlayerController.Update () [0x00000] in <filename unknown>:0"


    Ich nehme an, dass die DLL-Meldung schnurz ist, denn diese DLL ist nur für bestimmte Gamepads (v.a. die Xbox-Pads beim Anschluss an einen PC) gedacht, wie ich durch Gewühle auf https://www.oculus.com/ und/oder einigen Foren herausfand. Diverse andere Dinge, die ich dort fand, sowie jene merkwürdigen Schwierigkeiten mit der Demo lassen mich vermuten, dass das Benutzen von Eingabegeräten in der Unity-Engine irgendwie verkorkst ist. Und mit OVRGamepad.dll haben die wohl auch schon so manche Schwierigkeiten gehabt. Ob das nun eher ein Problem von Unity oder aber der Einbindung der "Oculus Rift"-Software ist - wer weiß?


    Warum nun bei fibanocci die Demo sich erst nach einer Weile gegen's Funktionieren entschied, weiß ich nicht genau. Vielleicht hat die Demo sich irgendwo "aufgeschrieben", dass es irgendwelche Probleme mit den Eingabegeräten gibt. Das hat sie dann vermutlich in der Windows-Registry getan, denn da hinterlässt sie diverse Einträge für sich selbst, die Unity-Game-Engine sowie für "Oculus" (den Brillenhersteller). Ich kam drauf, als ich die Demo mal komplett löschte und aus der heruntergeladenen .zip-Datei erneut auspackte und bemerkte, dass die von mir geänderte Tastaturbelegung immer noch eingestellt war.


    Die OR-Software kann man über finden, zum Download steht sie derzeit auf https://developer3.oculus.com/downloads/, wo man auf "Latest Oculus Rift PC runtime is available here" klicken muss. Man lädt dann ein Programm namens "OculusSetup.exe" herunter, was dann den eigentlichen Download (0,8 bis 1,2 GByte!) erledigt sowie die Installation der Software. Ist das dann fertig, möchte das Programm mit dem Erstellen eines Kontos bei Oculus weitermachen; wenn man die Ankündigung dieses Vorhabens mit einem Klick bestätigt, kommt danach die eigentliche Kontoeinrichtung... die man durch Anklicken des "x" oben rechts einfach abbrechen kann. Die Oculus-Software tut's dann wohl trotzdem. Und die Demos akzeptieren nun auch Tastatur- und Maussteuerung.


    Die Änderung der Tastenbelegung scheint manchmal nicht ganz richtig zu funktionieren; die Tasten des numerischen Zahlenblocks tun's manchmal nur ohne "eingerastete" NUM-LOCK-Taste. Was auch nirgends steht: Mit der SHIFT-Taste wetzt man deutlich schneller durch die Gegend.


    Die zweite Demo ("The Wall"), welche meistens weniger schön detailliert ist als die "Castle Black"-Demo, findet man übrigens unter https://www.wearvr.com/apps/ga…s-castle-black-unofficial.


    In der ersten Demo kann man den Gebäudekomplex übrigens am rechten Ende der Eiswand im Komplex (unten, nicht oben auf dem Wehrgang) verlassen und in der Umgebung herumrennen. Das erlaubt ein paar Blicke auf das Äußere der Gebäude.


    Die OR-Software kann man wohl immer nur mit Hilfe des Downloaders neu herunterladen, aber nicht irgendwo installierfähig abspeichern. Für's "mal-eben-Herzeigen" der Demo ist das wohl ziemlich unhandlich; wer aber 'nen Film davon machen will oder sich immer mal wieder im "Castle Black" umsehen will, für den mag es sich lohnen, einmal die OR-Software zu installieren und sie dann so lange drauf zu lassen, bis man die Demo nicht mehr braucht.

  • Danke für den Hinweis mit dem Installer.
    Mir ist auch schon aufgefallen, dass sich dieses Spiel die Tastatureinstellungen irgendwo speichert und zwar an einem Ort, der nicht dem Ordner entspricht, wohin man es hineinkopiert hat.
    Ziemliche Schweinerei. Ich habe keine Ahnung, nach welchen Stichworten ich suchen sollte. Alles mit Unity, Oculus, usw. Habe ich aus Registry und von der Systempartition getilgt, keine Wirkung. Irgendwo muß sich eine Konfigurationsdatei eingenistet haben.
    Ich schätze, wenn ich die mal finden könnte, wäre das Problem auch so behoben.

  • Ganz so einfach wird's vermutlich nicht. Die Tastenbelegung ist tatsächlich in der Windows-Registry drin; ich habe sie jetzt durch Abspeichern der Registry (vor & nach Ändern der Tastenbelegung) als Text, einem Vergleichsprogramm sowie dem Durchwühlen des Ergebnisses mit einem Editor gefunden. Bei mir ist sie in HKEY_USERS\S-1-5-21-2017879945-2478749407-312760822-1001\Software\Ryan Cassidy\CastleBlack zu finden, zusammen mit den anderen Dingen, die man vor dem Start der Demo einstellen kann (Grafikauflösung usw.). Mehr ist da aber nicht zu finden. Ich werd' aber gleich nochmal die Oculus-Rift-Software installieren (die fehlt jetzt noch, also ist bei mir auch die Steuerung noch funktionslos). Und danach wird dann nochmal die Registry abgespeichert und erneut durch's Vergleichsprogramm geschickt. Vielleicht liefert das igendeinen neuen Anhaltspunkt.


    Ich erinnere mich aber schwach, dass ich für die zweite Demo, "The Wall", irgendwo in der Registry etwas mit "The Wall", "the-wall", "TheWall" o.ä. gefunden habe. Vermutlich sind alle diese Programme auf Basis des Unity Development Kits darauf programmiert, in der Registry Einträge zu hinterlassen wie Kinder mit Schokoladenfingern braune Flecken am Mobiliar verteilen. :rolleyes:

  • Ich habe auch nochmal die 800 MB herunterladen und installieren lassen. Die Textfassung der Registry ist nun von 400 MB auf mehr als 600 MB angeschwollen. Das wird wohl nix mit dem Vergleich.


    Ansonsten lief's wieder wie immer: Vor Installation der OR-Software keine Steuerung, danach funktioniert's. Und keiner weiß warum. ?(

  • Ich habe ein Windows 7 x64 (also 64-Bit-Version) Professional mit SP1 und aktuellen Patches. Die Demo wird von einem gewöhnlichen Benutzerkonto aus gestartet, ohne "Als Admin starten" o.ä., und fragt auch nicht nach zusätzlichen Rechten.


    Was meinst Du mit dem Oculus-Programm? Das zum Herunterladen und Installieren oder das so installierte 800-MB-Zeugs?



    Wenn ich die Demo und die Oculus-Software installiere, gehe ich immer so vor:


    Ich restauriere zu Beginn immer ein kürzlich erstelltes Betriebssystem-Image, wo das Windows niemals die Demo oder die Oculus-Rift-Software gesehen hat. Sind also keine Reste von früheren Experimenten da. Dann entpacke ich die Demo und starte sie (Ausführen der .exe-Datei im Entpackten) einmal. Die Steuerung tut's dann nicht. In output_log.txt erscheint zunächst "[VRDevice] Initialization of device oculus failed" und weitere Meldungen, z.T. mit "this message is harmless". Schließlich kommen die Zeilen:


    "<RI> Initializing input.
    <RI> Input initialized."


    Bis hierhin ist die Log-Datei identisch mit derjenigen, die ich später kriege, wenn die Oculus-Software installiert ist und die Steuerung in der Demo funktioniert. Doch während die Log-Datei bei funtionierender Demo hier endet, folgt ohne Oculus-Software noch eine Menge mehr:


    "<RI> Initialized touch support.


    The referenced script on this Behaviour (Game Object 'Fading') is missing!"


    Danach kommen Fehlermeldungen bezüglich OVRGamepad.dll sowie die vorher erwähnten mit "NullReference Exception" und "OVRInput.Get" sowie "OVRPlayerController" im Text. Letztere dominieren die Log-Datei.



    Nun führe ich das Programm "OculusSetup.exe" aus (von der Festplatte aus), das dann die 800 MB herunterlädt und installiert. Ist das beendet, starte ich die Demo erneut über die entpackte .exe, und nun tut's die Steuerung. Die Datei output_log.txt ist nun, wie oben beschrieben, viel kürzer.



    Was mir nun gerade auffällt: Diese Meldung "Initialized touch support" bedeutet, dass die "Touch"-Controller (siehe hier), die man bei der Oculus Rift benutzen kann und die für mich wie Gamepads aussehen, benutzt werden. Die Dinger habe ich aber gar nicht. Womöglich liegt da der Fehler: Die Demo glaubt, ich hätte diese Touch-Controller angeschlossen, und benutzt dann diese statt Tastatur und Maus. Wenn man nun wüsste, wie man die Demo diesbezüglich "umstimmen" könnte, das wär' schon was.

  • Zitat

    Was meinst Du mit dem Oculus-Programm?


    Ich meine das "Hauptprogramm", diese 800MB. Das erstellt einen Shortcut, den man initialisieren kann. Läßt du es laufen?


    Irgendwie habe ich den Eindruck, dass dieser ganze Kram ziemlich grottig zusammengeworft* wurde. Von Dokumentation keine Spur. Pampe mistet sich ungefragt in die Registry ein und man muß sich selbst darum kümmern, es wieder loszuwerden.
    Und diese Webseite wearvr ist absolut indiskutabel.
    Ich gehe davon aus, dass Konfigurationsdateien in diesen "Assets" untergebracht sind. Dazu gibt es einen "Explorer" (Unity AssetsExplorer1.3, kann ich dir geben, wenn du dich noch mehr ärgern willst :D )
    Ich schätze, ich lasse das dann mal. Zeitverschwendung.


    +This is Klingon

  • Das erstellt einen Shortcut, den man initialisieren kann. Läßt du es laufen?


    Nein. Nachdem ich den Kram herunterladen und installieren ließ, habe ich nichts mehr weiter damit getan. Zumal diejenigen Programme, die ich per Icon oder Startmenü/Programme erreichen konnte, meistens gleich wieder zum Einrichten eines Oculus-Kontos drängelten, was ich nicht machen will.


    Irgendwie habe ich den Eindruck, dass dieser ganze Kram ziemlich grottig zusammengeworft* wurde. Von Dokumentation keine Spur. Pampe mistet sich ungefragt in die Registry ein und man muß sich selbst darum kümmern, es wieder loszuwerden.


    Den Eindruck habe ich auch, v.a. nachdem ich gestern Abend nochmal ein Lesestündchen im Internet dazu absolvierte. Die Registry-Besudelung scheint eine Art Standard bei Unity zu sein, denn eine weitere Demo zeigte ähnliches Verhalten.


    Ich gehe davon aus, dass Konfigurationsdateien in diesen "Assets" untergebracht sind. Dazu gibt es einen "Explorer" (Unity AssetsExplorer1.3, kann ich dir geben, wenn du dich noch mehr ärgern willst)


    Ich verzichte. Nach der Lektüre gestern vermute ich, dass man zum Lösen jenes Problems, was bei mir zu sehen war, vermutlich die Quelldateien zur Demo haben und mit veränderten Einstellungen neu kompilieren o.ä. lassen müsste. Kommandozeilen-Parameter o.ä. für Eingabegeräte gibt's bei den "Endprodukten" der Unity-Programmierung nämlich nicht, und sonstige Änderungen sind wohl auch nicht vorgesehen. Eine andere gefundene Demo zeigt hingegen, dass es auch funktionieren kann; die lief bei mir auch ohne Oculus-Rift-Firlefanz.


    Zeitverschwendung.


    Sehe ich auch so. Begraben wir's an der Flußbiegung.:evil: Inzwischen hast du wohl eh genug Inspiration für dein Projekt gefunden.