RhenaudTheLukark / CreateYourFrisk

Rhenaud The Lukark's Unitale fork
GNU General Public License v3.0
132 stars 56 forks source link

CYF fails to show screen output on linux #66

Closed daniel071 closed 4 years ago

daniel071 commented 4 years ago

Describe the bug When running the Linux 64bit executable file for CYF 0.6.4, the program runs but outputs just a black screen. When I press Z and go into the mod, I can hear the background music playing and the colour changes.

To Reproduce Steps to reproduce the behavior:

  1. Go to https://github.com/RhenaudTheLukark/CreateYourFrisk/releases/tag/v0.6.4 and download the CYF.v0.6.4.-.Linux.64-bit.zip version
  2. Extract the zip
  3. Give the .x86_64 file execution permission
  4. Run it

Expected behavior I expected the title screen to show up that asks you if you want to go to overworld or mods.

Screenshots When I first start CYF: When I first start CYF

When I press Z a couple of times: When I press Z a couple of times

Setup:

Additional context I've tried older versions of CYF and the 32 bit version of CYF and they both result in the same error

Eir-nya commented 4 years ago

Do you have any of: libglu1-mesa, libxcursor2 and libxrandr2 installed? Also try running the .x86, and also try using ldd on both the .x86 and .x86_64 and sharing the output. You may also check and share the log at ~/home/<your user name>/.config/unity3d/Nobody's Getting Paid Here/Create Your Frisk/output_log.txt to see if there is any unusual output.

Finally, if all else fails, download a windows release of CYF and use Wine to run it on your Linux machine.

zeldigas commented 4 years ago

Same problem. x86 behaves exactly the same way. Ldd output for x64

    linux-vdso.so.1 (0x00007ffc9bdee000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5627aac000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f562788d000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5627685000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f56272fc000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5626f5e000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5626d46000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5626955000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f5627cb0000)

For x86

    linux-gate.so.1 (0xf7f79000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7f4e000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7f2f000)
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf7f25000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf7d9f000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7c9d000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7c7f000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7aa3000)
    /lib/ld-linux.so.2 (0xf7f7b000)

Logs of 64 execution and contents of file can be found here: https://pastebin.com/0J5TcPZ3

zeldigas commented 4 years ago

I found that pressing f4 to exit full screen mode fixes the problem. After that even getting back to full screen mode works

Eir-nya commented 4 years ago

I may have seen this before. Just did a bit of research. Do you happen to have two monitors? The relevant line is in your pastebin:

requesting fullscreen 1 x 1 at 0 Hz

This means when CYF initially opens for you, it's opening in fullscreen mode and only showing the very top left pixel of the window.

When I looked this up, I saw some threads from other Unity projects reporting the same thing, mainly on Linux systems with multiple monitors. In addition, given what you reported with pressing F4, the fix may simply be to force CYF to start in windowed mode on Linux (which wouldn't be that bad).

daniel071 commented 4 years ago

I found that pressing f4 to exit full screen mode fixes the problem. After that even getting back to full screen mode works

For me pressing f4 didn't work but pressing alt+enter did exit fullscreen successfully, and now I'm able to use CYF

daniel071 commented 4 years ago

@WD200019 I've checked if I have any of the packages installed and it seems that I don't however, now that I exited and re-entered fullscreen, it works.

I have the screenshot of pacman -Q package-name here if it helps: pacman -Q

Eir-nya commented 4 years ago

Should be fixed now. The above commit uses the method I described yesterday - a simple fix to force the game to open in windowed mode if it's being opened for the first ever time. It's important to do it this way because otherwise, there are no calls to Screen.SetResolution on the first launch - and it lets Unity pick the resolution, which falters to 1x1 pixels. You said exiting fullscreen restored functionality, and the reason it does that is because going to windowed mode manually calls Screen.SetResolution(640 * windowScale, 480 * windowScale, false, 0).