sitebackground
Return to Linux Compatibility Reports

Star Wars: The Force Unleashed II:

Rating: Bronze
Release(s) Tested: Steam
Application Version: N/A
WINE/Proton Version: GE-Proton 8.1
Test Scope: Entire single-player campaign
Mods: Wet Clothes Patch
Input Method: Controller
Launch Options: STRANGLE_VSYNC=2 strangle %command% -variableTimesteps
Date of Report: 2 June 2023

Summary

A Bronze-rated game bordering on Broken, depending on your tolerance for copious bugs, crashes, and black screens. Starts off stable, but becomes progressively buggier as the game progresses.

Installing & Running

The game itself installs and runs out-of-box on Steam. However, cutscene audio will not play if Steam shader precaching is enabled. This can be resolved via the following:

  1. Go to your shader cache folder for the game (this is typically found at steamapps/shadercache/32500). If you don't see such a folder, make sure you have launched the game at least once.
  2. Within the fozmediav1 folder, add .BAK to the extension of any files within (you can also just delete them).
  3. Make this folder read-only via the following terminal command: chmod 400 fozmediav1.

This will prevent Steam's transcoded audio from overriding (and breaking) the cutscenes.

The game is very stuttery at its native 30 FPS. This can be resolved by installing the 60 FPS patch from https://community.pcgamingwiki.com/files/file/506-star-wars-the-force-unleashed-12-fps-cap-fix-60-fps-unlock/.

To further reduce microstutter and mitigate physics bugs, I recommend following my report for The Force Unleashed to install libstrangle, and setting the following launch options:

STRANGLE_VSYNC=2 strangle %command% -variableTimesteps

The combination of 60 FPS with enforced vertical sync provides a mostly smooth combat experience, although some stutters do remain.

Results & Issues

The game exhibited a black screen once every 2 or 3 launches. Closing the game and restarting fixed this.

Crashes occurred seldomly while in the game itself; however, loading a game often provoked a crash or, more rarely, a freeze.

Graphical issues were frequent and very distracting. Textures flickered, and parts of the screen randomly flashed as if debris was flying into the game camera. Some cutscenes were entirely black (more on that below), which could only be resolved by force-quitting the game and restarting it—often causing a loss of progress. Shadows and Force Lightning in particular flickered badly.

In the worst incident, the player was entirely surrounded by large, monocolor cubes. A restart fixed these problems (at least temporarily), and no issues were persistent at any part of the game. However, this artifacting greatly impeded any enjoyment of the game. None of these issues were present at all on Windows.

Game-rendered cinematics exhibited occasional hiccups (usually at the start and end of finishing moves). Audio artifacts occurred in the prerendered movies, again at start and end.

The most troublesome issue was that video cutscenes played in a random language each time (between English, French, German, Italian, and Spanish). This occurred irrespective of OS language settings and registry tweaks. Movies are essential to the story of this game and, without a consistent presentation language, the game was not playable.

The cinematics issue seems to occur because the different languages are embedded as multiple audio streams within each individual video file, but all streams are marked in the metadata as being "English". As a result, Proton chooses a stream randomly or by undefined behavior. This is likely exacerbated by the ASF/WMV/WMA proprietary codecs, which are often buggy or broken on Linux.

Multiple attempts to resolve this issue were unsuccessful. Installing codecs (including similar workarounds as used in Darksiders) provided no improvement.

The only viable workaround was to transcode the videos into a different format using ffmpeg. To do this, I first opened a terminal window in the Star Wars The Force Unleashed 2/Game/Disc/FMV/Win32/ directory and did the following:

apt-get install ffmpeg
mkdir ~/Desktop/BAK

Then, I transcoded the videos in *.mkv using the following command (this took around 5-10 minutes to complete on my hardware):

for f in *; do
    ffmpeg -i $f -map 0:5 -map 0:0 -c:a aac -c:v libx264 -preset slow -crf 18 -b:a 256k -r 30 $f".mkv"
done

I then backed up the originals and renamed the newly transcoded files via the following:

for f in *.mkv; do
    mv "$(basename $f .mkv)" "$HOME/Desktop/BAK/$(basename $f .mkv)"
    mv $f "$(basename $f .mkv)"
done

Finally, I prevented Steam from using its own transcoded video (which had the same language issue as the native movies) by opening my steamapps/shadercache/32500 folder and running the following commands:

mv transcoded_video.foz transcoded_video.foz.BAK
mkdir transcoded_video.foz
chmod 400 transcoded_video.foz

After doing this, cutscenes consistently played in the correct language (English).

Note: if you want to use a different language, you will need to change -map 0:0 in the above command to the ID of the audio stream you want to use (between 0-4). For example, -map 0:1 will use audio channel #1. This number did not match the audio channel order displayed e.g. in VLC, so you may need to guess / transcode a single test file first.

Although this fixed the language issue, transcoding produced its own problems: audio became slightly desynced from video, most notably lip sync. By itself this might have been tolerable, but the movies also became stuttery after transcoding.

Looking at the logs for ffmpeg, it appears this was caused by incomplete support for transcoding WMV/WMA on Linux. The audio and video streams were not the same length after transcoding due to dropped frames, and all videos were around half-a-second shorter than the originals. If you have access to a Windows machine, you may get better results by doing the transcoding on there. But this did not seem resolvable on Linux alone.

In addition, videos were randomly black in the game (audio, but no video). This occurred both with the original videos and the transcoded ones, though the latter seemed to be buggier. These issues were temporary and fixed by a game restart. However, as mentioned above, the movies often play after a difficult fight—before your progress is saved. If this bug occurs, you need to choose between (1) seeing the video or (2) redoing the battle.

Most of these bugs did not occur on the first level at all. The introductory cutscene always played in English, transcoded or not. I observed bugginess starting from the second level and escalating through the end of the game. The final level was especially bad with graphical bugs and choppy movie playback, requiring multiple game restarts to complete.

Notes

There is a small delay when striking enemies with a lightsaber. Although this can be mistaken for stutter, the delay was actually intended by the developers to simulate an old-school fighting game, and this same behavior can be observed on Windows. There is no way to remove this effect.