Lyliya / RocketStats

BakkesMod plugin for session information (MMR, Win, Loss, Streak, eg.) in game and in OBS
https://bakkesplugins.com/plugins/view/30
MIT License
29 stars 9 forks source link

No icons in WINE (Linux) #30

Open Anuskuss opened 1 year ago

Anuskuss commented 1 year ago

The plugin loads and works but isn't fully functional. Same error message when installing manually or through BakkesMod itself:

Error - Check that this folder is present in BakkesMod: data/RocketStats

Running in Linux is done through Proton (Wine) which emulates a Windows environment. I don't know how those files get loaded but maybe try using absolute paths?

Skidamek commented 1 year ago

same, bump.

Arubinu commented 1 year ago

Hello, as we often repeat, WIC is missing on the version of Windows you are using, and this is used via ImGui for displaying images.

No one has found a solution to date on Linux, if you unblock the situation, we're a taker.

Anuskuss commented 1 year ago

WIC is missing on the version of Windows you are using

I don't think that's it. I installed windowscodecs via protontricks and the error is still there. Could you maybe add more errors messages if you don't mind?

Larsluph commented 1 year ago

Problem is that this error isn't caused by RocketStats but ImGUI itself, so we don't have any info on what is causing this error to happen. The only thing that we know is that ImGUI is unable to load images found in RocketStats/Resources in this repo.

Amzd commented 1 year ago

As far as I can find this plugin doesn't call LoadForImGui before it checks IsLoadedForImGui :thinking:

I can't find documentation on them but their names imply that you need to call load before the isloaded would ever return true? Not sure why it would work without this on windows.

edit:

okay so I found that GetImGuiTex should also load the image but I don't think this is called before IsLoadedForImGui checks in many cases.

https://github.com/bakkesmodorg/BakkesModSDK/blob/fc83258a066c1fee199c355f4eef40d716175036/include/bakkesmod/wrappers/ImageWrapper.h#L36

Arubinu commented 1 year ago

The third parameter of the "ImageWrapper" class precisely requests the loading for ImGui.

Amzd commented 1 year ago

Ah yep I see :facepalm:

Anuskuss commented 4 months ago

Any news about this? I decided to debug this but without success. Anyway I did remove this (pointless?) check https://github.com/Lyliya/RocketStats/blob/b07d11e2fcb40ca117b5a3a5d81728b39a39c717/RocketStats/Managements/WindowManagement.cpp#L436 which allows me to change the theme (I now use a theme which doesn't have any icons).

But I did find out that RocketStats uses functionality from BakkesModSDK to load images so I figured that this was the wrong place to submit the bug report as it's most likely a bug in BakkesModSDK instead (https://github.com/bakkesmodorg/BakkesModSDK/issues/75).

Arubinu commented 4 months ago

Thank you for taking the time to address this concern. Our plugin is not the only one that has this problem and after a lot of research we noticed that WINE does not understand WIC (Windows Imaging Component).

I hope BakkesMod has a solution :)

Anuskuss commented 4 months ago

@Stanbroek figured out that TGAs work so I went ahead and converted all PNGs to TGAs and it works now :)

RocketStats_PNG2TGA.zip

If someone wants to try it out you'll need to grab the ZIP and move the bakkesmod directory into

~/.local/share/Steam/steamapps/compatdata/252950/pfx/drive_c/users/steamuser/AppData/Roaming/bakkesmod

and override all files. The other files are only needed if you wanna compile it yourself.

I guess for the RocketStats devs TGAs could be useful as they are much lighter computation-wise and sometimes even beat PNG size-wise but I don't want you to do that just for Linux compatibility as I'm sure BakkesMod can find a workaround or WINE manages to emulated WIC correctly someday.