Difference between revisions of "RUINER"

From FEX-Emu Wiki
Jump to navigation Jump to search
(Linux memory leak has been fixed.)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Infobox
 
{{Infobox
 
|steamappid      = 464060
 
|steamappid      = 464060
|os              = Linux
+
|os              = Windows, Linux
 
|engine          = Unreal Engine 4
 
|engine          = Unreal Engine 4
 
|arch            = x86-64
 
|arch            = x86-64
 
|cpufeats        = Unknown
 
|cpufeats        = Unknown
|compat          = Crashes
+
|compat          = Playable
 
|apptype        = Game
 
|apptype        = Game
 
|renderapi      = OpenGL
 
|renderapi      = OpenGL
Line 18: Line 18:
 
* Crashes early on with Snapdragon 888 and Freedreno
 
* Crashes early on with Snapdragon 888 and Freedreno
 
** Zink untested
 
** Zink untested
 +
** '''Snapdragon needs retesting!'''
 +
 +
=== Slow in-game on Linux version ===
 +
The Linux port of the game is creating and destroy threads at upwards of 720 threads per second. This is causing the game to run very slowly because thread creation under FEX is relatively heavy.
 +
* Caused by some VLC playback library? Game is creating and destroying a VLC object on every engine tick.
 +
* Recommended to use the Proton version until FEX's thread creation is faster and/or code sharing between threads is supported.
 +
 +
  (gdb) bt
 +
  #0  __pthread_create_2_1 (newthread=0x94e43b0, attr=0x7ffe3f3886f0, start_routine=0x7205e1856620 <Run>, arg=0x94e3b50) at ./nptl/pthread_create.c:626
 +
  #1  0x00007205e189d03d in vlc_clone_attr (th=0x94e43b0, attr=0x7ffe3f3886f0, entry=0x7205e1856620 <Run>, data=0x94e3b50, priority=<optimized out>) at posix/thread.c:482
 +
  #2  0x00007205e189cf06 in vlc_clone (th=0x94e43b0, entry=0x7205e1856620 <Run>, data=0x94e3b50, priority=10) at posix/thread.c:494
 +
  #3  0x00007205e18565a2 in input_Start (p_input=0x94e3b50) at input/input.c:183
 +
  #4  0x00007205e1411766 in libvlc_media_player_play (p_mi=0x851bd00) at media_player.c:1008
 +
  #5  0x0000000004d2b081 in FVlcMediaPlayer::SetRate (this=0x7205b6721e40, Rate=<optimized out>) at E:\repo\Plugins\VlcMedia\Source\VlcMedia\Private\Player/VlcMediaPlayer.cpp:177
 +
  #6  0x0000000004d2cf3e in FVlcMediaPlayer::TickPlayer (this=0x7205b6721e40, DeltaTime=<optimized out>) at E:\repo\Plugins\VlcMedia\Source\VlcMedia\Private\Player/VlcMediaPlayer.cpp:453
 +
  #7  0x00000000040ccea1 in UMediaPlayer::Tick (this=0x72065f819580, DeltaTime=2.84558105) at E:\engine\Engine\Source\Runtime\MediaAssets\Private\Assets/MediaPlayer.cpp:729
 +
  #8  0x00000000040cd34a in non-virtual thunk to UMediaPlayer::Tick(float) (this=0x94e43b0, DeltaTime=0) at E:\engine\Engine\Source\Runtime\MediaAssets\Private\Assets/MediaPlayer.cpp:747
 +
  #9  0x00000000020ac62e in TBaseDelegate<bool, float>::Execute (this=<optimized out>, Params=2.84558105) at E:\engine\Engine\Source\Runtime\Core\Public\Delegates/DelegateSignatureImpl.inl:537
 +
  #10 FTicker::FElement::Fire (this=<optimized out>, DeltaTime=<optimized out>) at E:\engine\Engine\Source\Runtime\Core\Private\Containers/Ticker.cpp:115
 +
  #11 FTicker::Tick (this=0x693c260 <FTicker::GetCoreTicker()::Singleton>, DeltaTime=<optimized out>) at E:\engine\Engine\Source\Runtime\Core\Private\Containers/Ticker.cpp:82
 +
  #12 0x0000000001e5e365 in FEngineLoop::Tick (this=0x6887a40 <GEngineLoop>) at E:\engine\Engine\Source\Runtime\Launch\Private/LaunchEngineLoop.cpp:3263
 +
  #13 0x0000000001e5ec5a in EngineTick () at E:\engine\Engine\Source\Runtime\Launch\Private/Launch.cpp:62
 +
  #14 GuardedMain (CmdLine=<optimized out>) at E:\engine\Engine\Source\Runtime\Launch\Private/Launch.cpp:176
 +
  #15 0x000000000411f4a8 in CommonLinuxMain (argc=<optimized out>, argv=<optimized out>, RealMain=<optimized out>) at E:\engine\Engine\Source\Runtime\Linux\LinuxCommonStartup\Private/LinuxCommonStartup.cpp:236
 +
  #16 0x00007206ace2a3b8 in __libc_start_call_main (main=main@entry=0x1e62cb0 <main(int, char**)>, argc=argc@entry=2, argv=argv@entry=0x7ffe3f388e98) at ../sysdeps/nptl/libc_start_call_main.h:58
 +
  #17 0x00007206ace2a47b in __libc_start_main_impl (main=0x1e62cb0 <main(int, char**)>, argc=2, argv=0x7ffe3f388e98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe3f388e88) at ../csu/libc-start.c:360
 +
  #18 0x0000000001e59868 in _start ()
 +
 +
=== Movie rendering problems on the Linux version ===
 +
The title screen, transition from title screen, and cutscenes in certain dialogue options are all movies. On Windows these are all using bink videos and render fine in Proton.
 +
The Linux version uses a VLC playback mechanism as part of Unreal's '''UMediaPlayer''' object, while the format still being in bink.
 +
These movies don't render correctly even on an x86 device, so it is an application bug.
  
 
== Testing Results ==
 
== Testing Results ==
Line 25: Line 57:
  
 
{{testing/start}}
 
{{testing/start}}
{{testing/entry|revision=FEX-2207|archtitle=x86-64|archhost=AArch64|result=Crashes with Freedreno|tester=Sonicadvance1}}
+
{{testing/entry|revision=FEX-2504-66-g8ff7497|archtitle=x86-64|archhost=AArch64|SoC=Radxa Orion O6|GPU=Radeon Pro W7500|result=Works fine with quirks|tester=Sonicadvance1}}
 +
{{testing/entry|revision=FEX-2207|archtitle=x86-64|archhost=AArch64|SoC=Snapdragon 888|GPU=Adreno 660|result=Crashes with Freedreno|tester=Sonicadvance1}}
 
{{testing/end}}
 
{{testing/end}}

Latest revision as of 00:05, 3 May 2025

RUINER
library_600x900.jpg


Storefronts

Steam logo.svg

Operating Systems Windows, Linux
Engine Unreal Engine 4
Architecture x86-64
CPU Features Used Unknown
Compatibility Playable
Type Game
Render API OpenGL

Steps to Run

No special instructions

Quirks

Problems/Workarounds

  • Crashes early on with Snapdragon 888 and Freedreno
    • Zink untested
    • Snapdragon needs retesting!

Slow in-game on Linux version

The Linux port of the game is creating and destroy threads at upwards of 720 threads per second. This is causing the game to run very slowly because thread creation under FEX is relatively heavy.

  • Caused by some VLC playback library? Game is creating and destroying a VLC object on every engine tick.
  • Recommended to use the Proton version until FEX's thread creation is faster and/or code sharing between threads is supported.
 (gdb) bt
 #0  __pthread_create_2_1 (newthread=0x94e43b0, attr=0x7ffe3f3886f0, start_routine=0x7205e1856620 <Run>, arg=0x94e3b50) at ./nptl/pthread_create.c:626
 #1  0x00007205e189d03d in vlc_clone_attr (th=0x94e43b0, attr=0x7ffe3f3886f0, entry=0x7205e1856620 <Run>, data=0x94e3b50, priority=<optimized out>) at posix/thread.c:482
 #2  0x00007205e189cf06 in vlc_clone (th=0x94e43b0, entry=0x7205e1856620 <Run>, data=0x94e3b50, priority=10) at posix/thread.c:494
 #3  0x00007205e18565a2 in input_Start (p_input=0x94e3b50) at input/input.c:183
 #4  0x00007205e1411766 in libvlc_media_player_play (p_mi=0x851bd00) at media_player.c:1008
 #5  0x0000000004d2b081 in FVlcMediaPlayer::SetRate (this=0x7205b6721e40, Rate=<optimized out>) at E:\repo\Plugins\VlcMedia\Source\VlcMedia\Private\Player/VlcMediaPlayer.cpp:177
 #6  0x0000000004d2cf3e in FVlcMediaPlayer::TickPlayer (this=0x7205b6721e40, DeltaTime=<optimized out>) at E:\repo\Plugins\VlcMedia\Source\VlcMedia\Private\Player/VlcMediaPlayer.cpp:453
 #7  0x00000000040ccea1 in UMediaPlayer::Tick (this=0x72065f819580, DeltaTime=2.84558105) at E:\engine\Engine\Source\Runtime\MediaAssets\Private\Assets/MediaPlayer.cpp:729
 #8  0x00000000040cd34a in non-virtual thunk to UMediaPlayer::Tick(float) (this=0x94e43b0, DeltaTime=0) at E:\engine\Engine\Source\Runtime\MediaAssets\Private\Assets/MediaPlayer.cpp:747
 #9  0x00000000020ac62e in TBaseDelegate<bool, float>::Execute (this=<optimized out>, Params=2.84558105) at E:\engine\Engine\Source\Runtime\Core\Public\Delegates/DelegateSignatureImpl.inl:537
 #10 FTicker::FElement::Fire (this=<optimized out>, DeltaTime=<optimized out>) at E:\engine\Engine\Source\Runtime\Core\Private\Containers/Ticker.cpp:115
 #11 FTicker::Tick (this=0x693c260 <FTicker::GetCoreTicker()::Singleton>, DeltaTime=<optimized out>) at E:\engine\Engine\Source\Runtime\Core\Private\Containers/Ticker.cpp:82
 #12 0x0000000001e5e365 in FEngineLoop::Tick (this=0x6887a40 <GEngineLoop>) at E:\engine\Engine\Source\Runtime\Launch\Private/LaunchEngineLoop.cpp:3263
 #13 0x0000000001e5ec5a in EngineTick () at E:\engine\Engine\Source\Runtime\Launch\Private/Launch.cpp:62
 #14 GuardedMain (CmdLine=<optimized out>) at E:\engine\Engine\Source\Runtime\Launch\Private/Launch.cpp:176
 #15 0x000000000411f4a8 in CommonLinuxMain (argc=<optimized out>, argv=<optimized out>, RealMain=<optimized out>) at E:\engine\Engine\Source\Runtime\Linux\LinuxCommonStartup\Private/LinuxCommonStartup.cpp:236
 #16 0x00007206ace2a3b8 in __libc_start_call_main (main=main@entry=0x1e62cb0 <main(int, char**)>, argc=argc@entry=2, argv=argv@entry=0x7ffe3f388e98) at ../sysdeps/nptl/libc_start_call_main.h:58
 #17 0x00007206ace2a47b in __libc_start_main_impl (main=0x1e62cb0 <main(int, char**)>, argc=2, argv=0x7ffe3f388e98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe3f388e88) at ../csu/libc-start.c:360
 #18 0x0000000001e59868 in _start ()

Movie rendering problems on the Linux version

The title screen, transition from title screen, and cutscenes in certain dialogue options are all movies. On Windows these are all using bink videos and render fine in Proton. The Linux version uses a VLC playback mechanism as part of Unreal's UMediaPlayer object, while the format still being in bink. These movies don't render correctly even on an x86 device, so it is an application bug.

Testing Results

This title has been tested on the environments listed below:

Test Entries
Revision Arch of Title SoC GPU Result Tester
FEX-2504-66-g8ff7497 x86-64 Radxa Orion O6 Radeon Pro W7500 Works fine with quirks Sonicadvance1
FEX-2207 x86-64 Snapdragon 888 Adreno 660 Crashes with Freedreno Sonicadvance1