rimpy-custom / RimPy

Mod Manager For Rimworld game
438 stars 48 forks source link

Texture optimization no longer works #160

Open msnspk opened 8 months ago

msnspk commented 8 months ago

Apologies for the vague title, I haven't been able to track down the specific cause of the bug(s) yet, but the texture optimization feature no longer works. I previously used RimPy and the texture conversion feature the last time I played RimWorld in May 2023 and everything was working great.

First, no .dds files are actually created. When I select a mod and convert its textures, none of the resulting .dds files are actually written to the file system. This was pretty easy to verify by converting a bunch of textures (roughly 67,000) and then using a fuzzy finder to search for them, only to see that they were missing and never created. Evidence of this bug also shows up when converting mods multiple times with the Convert new textures only option selected. The expected behavior is that previously-converted mods would not generate any new converted textures/.dds files, but since those files are never actually being written to the file system, RimPy goes ahead and keeps doing the full conversion every time.

When running the texture conversion feature, RimPy spits out this error to the console:

/bin/sh: symbol lookup error: /bin/sh: undefined symbol: rl_trim_arg_from_keyseq

Second, sometimes the texture conversion process hangs and has to be cancelled manually, or else it will never complete. When this occurs, RimPy gives this error in the console:

Exception in thread Thread-10:
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
  File "/home/user/Games/RimWorld/RimPy/shutil.py", line 791, in move
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.steam/steam/steamapps/workshop/content/294100/2895299310/Textures/TDbadtime_rimpy_converted.dds' -> '/home/user/.steam/steam/steamapps/workshop/content/294100/2895299310/Textures/TDbadtime.dds'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/Games/RimWorld/RimPy/multiprocessing/pool.py", line 125, in worker
  File "/home/user/Games/RimWorld/RimPy/utils/utils.py", line 99, in convertToBC7
  File "/home/user/Games/RimWorld/RimPy/shutil.py", line 811, in move
  File "/home/user/Games/RimWorld/RimPy/shutil.py", line 435, in copy2
  File "/home/user/Games/RimWorld/RimPy/shutil.py", line 264, in copyfile
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.steam/steam/steamapps/workshop/content/294100/2895299310/Textures/TDbadtime_rimpy_converted.dds'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/user/Games/RimWorld/RimPy/threading.py", line 932, in _bootstrap_inner
  File "/home/user/Games/RimWorld/RimPy/threading.py", line 870, in run
  File "/home/user/Games/RimWorld/RimPy/rimpy.py", line 1315, in <lambda>
  File "/home/user/Games/RimWorld/RimPy/rimpy.py", line 1330, in multiProcessing
  File "/home/user/Games/RimWorld/RimPy/multiprocessing/pool.py", line 868, in next
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.steam/steam/steamapps/workshop/content/294100/2895299310/Textures/TDbadtime_rimpy_converted.dds'

Manually creating the offending file ('/home/user/.steam/steam/steamapps/workshop/content/294100/2895299310/Textures/TDbadtime_rimpy_converted.dds') allows the texture conversion process to finish, but again, no .dds files are actually written.

Out of the 644 mods that I have subscribed to/installed (though don't necessarily play the game with), only three of them caused the texture conversion process to hang:

In my testing, these issues consistently occur on Linux and Windows, though I only observed RimPy's console output on Linux. The issues occur regardless of what encoder is used.

My Windows installation is an up-to-date version of Windows 11 with Python 3.12.2

My Linux installation is an up-to-date version of Arch Linux with kernel version 6.7.7 and Python 3.11.7

nakomaru commented 7 months ago

It's still working fine on Windows for me. I wonder if this is a file system permissions issue. RimSort's todds is no comparison as it does not have RimPy's waifu2x conditional upscaling, but should work.