NeoSpark314 / BeepSaber

A basic implementation of the Beat Saber VR game mechanic in the Godot Game Engine for Oculus Quest (and other VR headsets)
MIT License
105 stars 32 forks source link

Not Starting on Quest #31

Open Slash-Kill opened 2 years ago

Slash-Kill commented 2 years ago

When I Launch BeepSaber on my Quest 2 it is just a black screen.

NeoSpark314 commented 2 years ago

Are you using the .apk from the github releases or are you trying to launch from godot using the master branch? Could you try and see if adb shows some meaningfull error messages?: for example useing adb logcat -s godot:* GodotOVRMobile:*

Slash-Kill commented 2 years ago

I downloaded the .apk from the GitHub releases. I also tried running it by downloading the source code and running it in Godot using the SteamVR plugin, and got the same result.

renardroux commented 2 years ago

I'm getting the same thing (black screen). Here's what it says when I run the command you gave in your example: adb logcat -s godot:* GodotOVRMobile:* zsh: no matches found: godot:*

I tried starting it using adb and this is what it shows: adb shell monkey -p org.dammertz.vr.godot_beep_saber -c android.intent.category.LAUNCHER 1 bash arg: -p bash arg: org.dammertz.vr.godot_beep_saber bash arg: -c bash arg: android.intent.category.LAUNCHER bash arg: 1 args: [-p, org.dammertz.vr.godot_beep_saber, -c, android.intent.category.LAUNCHER, 1] arg: "-p" arg: "org.dammertz.vr.godot_beep_saber" arg: "-c" arg: "android.intent.category.LAUNCHER" arg: "1" data="org.dammertz.vr.godot_beep_saber" data="android.intent.category.LAUNCHER" ** No activities found to run, monkey aborted.

I don't really know what I'm doing, so if I can do this differently let me know.

edent commented 1 year ago

I have the same issue on the Quest 2. Is there something else I need to install?

necrashter commented 1 year ago

All versions in GitHub Releases have this issue on Quest 2, presumably because of an error that occurs while loading the splash screen texture.

Full adb output: ``` 09-18 18:12:47.718 6923 6950 I godot : Godot Engine v3.2.4.VoxelWorks.custom_build.58aaf19d2 - https://godotengine.org 09-18 18:12:47.724 6923 6950 I godot : OpenGL ES 2.0 Renderer: Adreno (TM) 650 09-18 18:12:47.744 6923 6950 I godot : OpenGL ES 2.0 Batching: ON 09-18 18:12:47.749 6923 6950 I godot : 09-18 18:12:47.860 6923 6950 V GodotOVRMobile: Creating OVR Mobile session. 09-18 18:12:47.972 6923 6950 I godot : Initializing VR 09-18 18:12:47.973 6923 6950 I godot : Available Interfaces are [{id:0, name:OVRMobile}, {id:1, name:Native mobile}]: 09-18 18:12:47.973 6923 6950 I godot : Found OVRMobile Interface. 09-18 18:12:47.973 6923 6950 V GodotOVRMobile: OvrMobileSession::initialize() called 09-18 18:12:48.312 6923 6950 V GodotOVRMobile: vrapi version string: '1.1.73.0-505990233-505990233 Aug 16 2023 16:35:32 Development' 09-18 18:12:48.312 6923 6950 V GodotOVRMobile: render target size multiplier: 1.000000 09-18 18:12:48.312 6923 6950 V GodotOVRMobile: vrapi render target size: w 1440 / h 1584 09-18 18:12:48.323 6923 6950 V GodotOVRMobile: Create Framebuffer(...): mTextureSwapChainLength=3 09-18 18:12:48.330 6923 6950 V GodotOVRMobile: Create Framebuffer(...): mTextureSwapChainLength=3 09-18 18:12:48.400 6923 6950 V GodotOVRMobile: Entered Oculus Mobile VR mode. 09-18 18:12:48.400 6923 6950 V GodotOVRMobile: vrapi_SetPerfThread( RENDERER, 6950 ) 09-18 18:12:48.405 6923 6950 I godot : _refresh_settings() 09-18 18:12:48.411 6923 6950 I godot : Success initializing OVRMobile Interface. 09-18 18:12:48.411 6923 6950 I godot : _perform_switch_scene to res://game/GodotSplash.tscn 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: Condition "!f" is true. Returned: ERR_CANT_OPEN 09-18 18:12:48.419 6923 6950 E godot : At: scene\resources\texture.cpp:502:_load_data() - Condition "!f" is true. Returned: ERR_CANT_OPEN 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: Failed loading resource: res://.import/godot_splash_512.png-13f9fa0a27fba044c612778c1d2a33ae.s3tc.stex. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.419 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: Failed loading resource: res://OQ_Toolkit/OQ_UI2D/theme/godot_splash_512.png. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.419 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: res://OQ_Toolkit/OQ_Helpers/OQ_SplashScreen.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://OQ_Toolkit/OQ_UI2D/theme/godot_splash_512.png 09-18 18:12:48.419 6923 6950 E godot : At: scene\resources\resource_format_text.cpp:440:poll() - res://OQ_Toolkit/OQ_Helpers/OQ_SplashScreen.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://OQ_Toolkit/OQ_UI2D/theme/godot_splash_512.png 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: Failed to load resource 'res://OQ_Toolkit/OQ_Helpers/OQ_SplashScreen.tscn'. 09-18 18:12:48.419 6923 6950 E godot : At: core\io\resource_loader.cpp:208:load() - Condition "err != OK" is true. Returned: RES() 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: Failed loading resource: res://OQ_Toolkit/OQ_Helpers/OQ_SplashScreen.tscn. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.419 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: res://game/GodotSplash.tscn:7 - Parse Error: [ext_resource] referenced nonexistent resource at: res://OQ_Toolkit/OQ_Helpers/OQ_SplashScreen.tscn 09-18 18:12:48.419 6923 6950 E godot : At: scene\resources\resource_format_text.cpp:440:poll() - res://game/GodotSplash.tscn:7 - Parse Error: [ext_resource] referenced nonexistent resource at: res://OQ_Toolkit/OQ_Helpers/OQ_SplashScreen.tscn 09-18 18:12:48.419 6923 6950 E godot : **ERROR**: Failed to load resource 'res://game/GodotSplash.tscn'. 09-18 18:12:48.419 6923 6950 E godot : At: core\io\resource_loader.cpp:208:load() - Condition "err != OK" is true. Returned: RES() 09-18 18:12:48.420 6923 6950 E godot : **ERROR**: Failed loading resource: res://game/GodotSplash.tscn. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.420 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.420 6923 6950 I godot : ERROR: : could not load scene 'res://game/GodotSplash.tscn' 09-18 18:12:48.596 6923 6950 V GodotOVRMobile: Updated Controller 'Oculus Touch Left Controller' (Godot id 1; Oculus id 0) 09-18 18:12:48.596 6923 6950 V GodotOVRMobile: Updated Controller 'Oculus Touch Right Controller' (Godot id 2; Oculus id 1) 09-18 18:12:48.622 6923 6950 I godot : _perform_switch_scene to res://game/BeepSaber_Game.tscn 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Condition "!f" is true. Returned: ERR_CANT_OPEN 09-18 18:12:48.671 6923 6950 E godot : At: scene\resources\texture.cpp:502:_load_data() - Condition "!f" is true. Returned: ERR_CANT_OPEN 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Failed loading resource: res://.import/BeepCube_Emission.png-4718fe8807143be756879824c06c3f2e.s3tc.stex. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.671 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Failed loading resource: res://game/data/BeepCube_Emission.png. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.671 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Can't load dependency: res://game/data/BeepCube_Emission.png. 09-18 18:12:48.671 6923 6950 E godot : At: core\io\resource_format_binary.cpp:655:poll() - Method failed. Returning: error 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Failed to load resource 'res://game/BeepCube_new_material.material'. 09-18 18:12:48.671 6923 6950 E godot : At: core\io\resource_loader.cpp:208:load() - Condition "err != OK" is true. Returned: RES() 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Failed loading resource: res://game/BeepCube_new_material.material. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.671 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: res://game/BeepCube.tscn:5 - Parse Error: [ext_resource] referenced nonexistent resource at: res://game/BeepCube_new_material.material 09-18 18:12:48.671 6923 6950 E godot : At: scene\resources\resource_format_text.cpp:440:poll() - res://game/BeepCube.tscn:5 - Parse Error: [ext_resource] referenced nonexistent resource at: res://game/BeepCube_new_material.material 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Failed to load resource 'res://game/BeepCube.tscn'. 09-18 18:12:48.671 6923 6950 E godot : At: core\io\resource_loader.cpp:208:load() - Condition "err != OK" is true. Returned: RES() 09-18 18:12:48.671 6923 6950 E godot : **ERROR**: Failed loading resource: res://game/BeepCube.tscn. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.671 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.672 6923 6950 E godot : **SCRIPT ERROR**: Parse Error: Can't preload resource at path: res://game/BeepCube.tscn 09-18 18:12:48.672 6923 6950 E godot : At: res://game/BeepSaber_Game.gd:13:GDScript::reload() - Parse Error: Can't preload resource at path: res://game/BeepCube.tscn 09-18 18:12:48.672 6923 6950 E godot : **ERROR**: Method failed. Returning: ERR_PARSE_ERROR 09-18 18:12:48.672 6923 6950 E godot : At: modules\gdscript\gdscript.cpp:599:reload() - Method failed. Returning: ERR_PARSE_ERROR 09-18 18:12:48.694 6923 6950 E godot : **ERROR**: Condition "!f" is true. Returned: ERR_CANT_OPEN 09-18 18:12:48.694 6923 6950 E godot : At: scene\resources\texture.cpp:502:_load_data() - Condition "!f" is true. Returned: ERR_CANT_OPEN 09-18 18:12:48.694 6923 6950 E godot : **ERROR**: Failed loading resource: res://.import/beepsaber_logo.png-13130700089e6a561f233df12ecc3d23.s3tc.stex. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.694 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.694 6923 6950 E godot : **ERROR**: Failed loading resource: res://game/data/beepsaber_logo.png. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.695 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.695 6923 6950 E godot : **ERROR**: res://game/BeepSaberMainMenu.tscn:4 - Parse Error: [ext_resource] referenced nonexistent resource at: res://game/data/beepsaber_logo.png 09-18 18:12:48.695 6923 6950 E godot : At: scene\resources\resource_format_text.cpp:440:poll() - res://game/BeepSaberMainMenu.tscn:4 - Parse Error: [ext_resource] referenced nonexistent resource at: res://game/data/beepsaber_logo.png 09-18 18:12:48.695 6923 6950 E godot : **ERROR**: Failed to load resource 'res://game/BeepSaberMainMenu.tscn'. 09-18 18:12:48.695 6923 6950 E godot : At: core\io\resource_loader.cpp:208:load() - Condition "err != OK" is true. Returned: RES() 09-18 18:12:48.695 6923 6950 E godot : **ERROR**: Failed loading resource: res://game/BeepSaberMainMenu.tscn. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.695 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.695 6923 6950 E godot : **ERROR**: res://game/BeepSaber_Game.tscn:13 - Parse Error: [ext_resource] referenced nonexistent resource at: res://game/BeepSaberMainMenu.tscn 09-18 18:12:48.695 6923 6950 E godot : At: scene\resources\resource_format_text.cpp:440:poll() - res://game/BeepSaber_Game.tscn:13 - Parse Error: [ext_resource] referenced nonexistent resource at: res://game/BeepSaberMainMenu.tscn 09-18 18:12:48.695 6923 6950 E godot : **ERROR**: Failed to load resource 'res://game/BeepSaber_Game.tscn'. 09-18 18:12:48.695 6923 6950 E godot : At: core\io\resource_loader.cpp:208:load() - Condition "err != OK" is true. Returned: RES() 09-18 18:12:48.696 6923 6950 E godot : **ERROR**: Failed loading resource: res://game/BeepSaber_Game.tscn. Make sure resources have been imported by opening the project in the editor at least once. 09-18 18:12:48.696 6923 6950 E godot : At: core\io\resource_loader.cpp:279:_load() - Condition "found" is true. Returned: RES() 09-18 18:12:48.696 6923 6950 I godot : ERROR: : could not load scene 'res://game/BeepSaber_Game.tscn' ```
leandrodreamer commented 1 year ago

All versions in GitHub Releases have this issue on Quest 2, presumably because of an error that occurs while loading the splash screen texture.

seems like something in recent Quest updates have broke it, you can use this fork that is ported to godot 4 and openxr: https://github.com/leandrodreamer/BeepSaber/releases

(i keep it on my own fork because most of OQ_Toolkit is not ported)

necrashter commented 1 year ago

Thank you, @leandrodreamer ! Your port works like a charm.

Before your post, I tried building 3.x version of Beep Saber myself using Godot 3.5.2. I followed these instructions on how to deploy the Oculus Mobile Godot plugin, but it didn't work. However I don't think it's worthwhile to debug the issue since Oculus Mobile plugin is deprecated and you've already ported the game to Godot 4 and OpenXR.

If anyone is curious about how Godot 3.x performs on Quest 2, this release of Godot Oculus Quest Toolkit contains a Beep Saber demo and it works on Quest 2.

@leandrodreamer if you have free time, I kindly encourage you to work on your Beep Saber fork. Or at least you can briefly describe what needs to be done about OQ_Toolkit so that others can continue. I think it might be better to continue the development in a separate repository since the original developer @NeoSpark314 seems to be inactive. Also I like how you renamed the game to "OpenSaber" in your fork, it fits better.

edent commented 1 year ago

@leandrodreamer that works brilliantly on the Quest 2 - thanks :-)

leandrodreamer commented 1 year ago

Before your post, I tried building 3.x version of Beep Saber myself using Godot 3.5.2. I followed these instructions on how to deploy the Oculus Mobile Godot plugin, but it didn't work. However I don't think it's worthwhile to debug the issue since Oculus Mobile plugin is deprecated and you've already ported the game to Godot 4 and OpenXR.

i managed to port it myself to godot 3.5.2 by replacing oculus mobile with openxr, but again a lot of OQ_toolkit depends on it and also performance is not as good as it is in godot 4