nestriness / nestri

[Experimental] Open-source GeForce NOW alternative with Stadia's social features
https://nestri.io
GNU Affero General Public License v3.0
1.41k stars 19 forks source link

[🐛 Bug] Error, no command specified to run the game. Exiting. #72

Open dgudim opened 4 weeks ago

dgudim commented 4 weeks ago

Following the step-by-step guide I can't get it to start. Doing /etc/startup.sh > /dev/null & never produces .X11-unix in tmp.

Running it without & gives the following message: Error, no command specified to run the game. Exiting.

hraphael commented 4 weeks ago

I have the same problem and running it with /etc/startup.sh netris-proton -wr <game>.exe does seems to work but the script is then stuck in a loop where it tries to install winehq. Running it with -pr noes not work because proton is not installed.

suchipi commented 4 weeks ago

I can't get it to work, either. It definitely seems you have to pass the game command directly to /etc/startup.sh rather than waiting for .X11-unix as the readme says, but no matter what game I give it, it crashes. I installed xterm into the container to try to run it with something small, but that crashes, too. The log output in /tmp says:

xterm: Xt error: Can't open display: :0

It's worth mentioning that the readme said to set up nvidia-docker, but the nvidia-docker repo says it's been deprecated and replaced with nvidia container toolkit, so I installed and set up that instead of nvidia-docker.

wanjohiryan commented 4 weeks ago

Hey, this has been fixed by #73

wanjohiryan commented 4 weeks ago

@suchipi it seems like your Xterm error might be unrelated to the startup.sh, can you give more details.

Try docker pulling the latest server image like so:

docker pull ghcr.io/netrisdotme/netris/server:nightly

Then try running again. Tell us if you get the Xterm error again.

dgudim commented 4 weeks ago

The previous issue is fixed now, it seems to startup, but wine and proton just die instantly and the game does not start.

Here is my attempt to start it video.webm

Here are the logs entrypoint-stdout---supervisor-_be6c0w1.log game-stdout---supervisor-wd2ccmr9.log supervisord.log

wanjohiryan commented 3 weeks ago

Hey @dgudim

Thank you so much for the video, this is the most comprehensive feedback anyone has given so far. From the video, I can tell that wine has trouble getting a display to draw its dialog on, which means that Xorg is not working for some reason. From the entrypoint.log file I can see that X11 shows errors there too. Confirming my suspicion(s).

However, this raises the question, how comes the X11 unix socket is present?

Also, from the entrypoint logs,

Fatal server error:
(EE) no screens found(EE) 
(EE) 

I have seen this error before, but I cannot remember what I did to solve it.

@ehfd what do you think?

Oh, and what tool did you use to record your terminal @dgudim ? Thanks :)

dgudim commented 3 weeks ago

If I can help you with debugging, I'll do what I can

Oh, and what tool did you use to record your terminal @dgudim ? Thanks :)

asciinema (https://github.com/asciinema/asciinema) (then converted to gif using https://github.com/asciinema/agg, then to mp4 and sped up some boring parts with ffmpeg :) )

ehfd commented 3 weeks ago

You need to clear all junk files which are supposed to lock the state of the screen and restart again. For more information, you need the Xorg.0.log.

dgudim commented 3 weeks ago

Sorry for the delay, I almost got this working. The steps I took are as follows:

  1. Set default target of systemd to multiuser (instead of loading into graphical and then shutting down xorg)
  2. Removed nvidia drm fbdev kernel option (nvidia_drm.fbdev=1)
  3. Switched to using root docker instead of rootless and turned on cgroups in the nvidia container toolkit (they should be disabled when running in rootless)

Now everything seems to start normally and doesn't die. But upon loading the website I get a black screen and a COEP error

image

image

dgudim commented 3 weeks ago

Adding the header with a header modifier extension worked as a temporary solution. Now I get this image However, the cursor is not captured so I am not able to do anything

wanjohiryan commented 3 weeks ago

Hey, that's really nice. At least you figured out the docker issue.

For the CrossOrigin Isolation header, they are now fixed... you should be able to play without requiring any extension(s).

As for the cursor, are you getting any announce_error logs on your console? If so, reload the page. It should fix that.

dgudim commented 3 weeks ago

Hey.

For the CrossOrigin Isolation header, they are now fixed

Nice!

As for the cursor, are you getting any announce_error

No, but I am getting Uncaught (in promise) DOMException: The options asked for in this request are not supported on this platform when I click on the screen, I am trying from linux, don't know about windows, don't have any windows machines

Edit: Tested in a VM, the cursos binds, but it's not even close to 1:1 and after clicking 'yes' in the install prompt, the game didn't launch

Edit 2: Modified supervisor config to launch xterm, it worked! So it looks like the only real showstopper here is the requestPointerLock thingy probably

dgudim commented 3 weeks ago

Seems like it's related to this piece of code, but I am not sure

    const [u] = ct();
    u.value && (await u.value.requestFullscreen(),
    u.value.requestPointerLock({
        unadjustedMovement: !0
    }))
wanjohiryan commented 1 week ago

Thank you for the info @dgudim it seems like adjustMovement has an issue on Linux. Could you please write your system information on this open issue #77