Star Wars Jedi Knight: Jedi Academy:
Rating: | Silver |
Release(s) Tested: | Steam |
Application Version: | N/A |
WINE/Proton Version: | OpenJK (see below) |
Test Scope: | Entire single-player campaign
Mods: Enhanced Saber Realism |
Input Method: | Keyboard & Mouse |
Launch Options: |
|
Date of Report: | 7 June 2023 |
Summary
Enjoyable when you get it working properly, this game rates either Silver or Gold depending on your hardware, mods, and a bit of luck.
Installing & Running
The game does not perform well out-of-box. To get this game working on Steam, you have a few options, rated from least to most complex:
- Luxtorpeda
- OpenJK (release)
- OpenJK (from source)
The option you will need depends on your susceptibility to the infamous cutscene bug, in which cutscenes do not start properly and soft-lock the game. This bug occurs on Windows as well, but is less common there. More details about the bug itself are below.
You can test for this bug by completing the first level and seeing whether Luke's cutscene (in which he is addressing a group of students) works properly. If it does, you are good to go! If it does not, you should move to the next option in this list.
Installation Option #1: Luxtorpeda
The process for this is nearly identical to that for the preceding game Jedi Outcast:
- Install Luxtorpeda from https://github.com/dreamer/luxtorpeda.
- Restart Steam if necessary, then select Luxtorpeda as the compatibility tool for the game (i.e. not Proton!).
- Launch the game and allow Luxtorpeda to download and install OpenJK, which is a Linux-native port of the JA game engine. You don't need to download anything yourself.
At this point, the game should launch and run correctly.
OpenJK stores its configuration in a different location from the game directory. If you are migrating from a Windows installation, you should copy the contents of your jaconfig.cfg
file into the following (mod files will not be in base
, but in a folder with the mod's name):
$HOME/.local/share/openjk/base/openjk_sp.cfg
Luxtorpeda/OpenJK may create this file from scratch every time you launch the game. After finalizing your settings, consider making this file read-only via the following command:
chmod 400 openjk_sp.cfg
If you desire a widescreen resolution, you can set it within this file. However, aspect ratios other than 4:3 will cause issues with cutscenes e.g. the characters may be slightly out-of-frame. The benefits of widescreen usually outweigh the negatives, even for new players.
Installation Option #2: OpenJK (release)
If cutscenes do not work properly with Luxtorpeda, download the release version of OpenJK for Linux. Installation is relatively simple; just copy the files to the following:
File: | Destination: |
openjk_sp.x86_64
openjk.x86_64
openjkded.x86_64
rd-vanilla_x86_64.so
rdsp-vanilla_x86_64.so |
/path/to/Jedi Academy/GameData/ |
cgamex86_64.so
jagamex86_64.so
jampgamex86_64.so
uix86_64.so |
/path/to/Jedi Academy/GameData/OpenJK/ |
You should not launch the game from Steam after doing this. Instead, run the game via the following command:
/path/to/Jedi Academy/openjk_sp.x86_64
Multiplayer executables can be run in a similar fashion.
Installation Option #3: OpenJK (from source)
If neither Luxtorpeda nor the OpenJK release version are working for you, it is possible to compile any OpenJK version you want. This also allows you to make some modifications that will allow older mods to run, if your game is crashing with them.
To get started, clone the repository for OpenJK and check out any commit you want (the one that worked for me is below):
git clone https://github.com/JACoders/OpenJK.git openjk cd openjk git checkout d3e8c8d7
Install dependencies and prepare the build folder via the following:
apt-get install build-essential cmake libjpeg-dev libpng-dev zlib1g-dev libsdl2-dev mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/path/to/Jedi\ Academy/GameData ..
Finally, use the command make
to compile OpenJK. This process can take a while to complete; for me, around 5-10 minutes. If you encounter any errors (I didn't), you will need to fix those before proceeding to the next step.
After compilation succeeds, you can use the following one-line command to copy all files to their correct locations. Make sure to change the first JK_DEST
in this command to your game folder. If you haven't created GameData/OpenJK
from trying the previous installation options, you should create that folder first.
export JK_DEST=/path/to/Jedi\ Academy/GameData; cp openjk_sp.x86_64 "$JK_DEST"/openjk_sp.x86_64; cp openjk.x86_64 "$JK_DEST"/openjk.x86_64; cp openjkded.x86_64 "$JK_DEST"/openjkded.x86_64; cp code/rd-vanilla/rdsp-vanilla_x86_64.so "$JK_DEST"/rdsp-vanilla_x86_64.so; cp codemp/rd-vanilla/rd-vanilla_x86_64.so "$JK_DEST"/rd-vanilla_x86_64.so; cp code/game/jagamex86_64.so "$JK_DEST"/OpenJK/jagamex86_64.so; cp codemp/game/jampgamex86_64.so "$JK_DEST"/OpenJK/jampgamex86_64.so; cp codemp/ui/uix86_64.so "$JK_DEST"/OpenJK/uix86_64.so; cp codemp/cgame/cgamex86_64.so "$JK_DEST"/OpenJK/cgamex86_64.sp
You should now be able to run Jedi Academy via:
/path/to/Jedi Academy/openjk_sp.x86_64
As with the previous installation option, you should not run the game through Steam.
Optional Installation Steps (only if needed):
It is possible that after trying all of the above options, cutscenes may still not work. In addition, although most mods will work with OpenJK, mods with custom animations may crash whenever a save is loaded. To fix either of these issues, you will first need to install OpenJK from source as instructed above.
After doing so, open openjk/code/game/NPC_stats.cpp
and comment out the assert statement on line 501:
//assert(keyFrame < animations[animNum].numFrames);
^^ add two slashes in front of the line to comment it out
Save this file, then open openjk/code/server/sv_init.cpp
and make the following change on line 314 to give some extra frames for cutscenes to load properly:
VV change the loop counter from 3 to 10
for ( i = 0 ;i < 10 ; i++ ) {
ge->RunFrame( sv.time );
sv.time += 100;
re.G2API_SetTime(sv.time,G2T_SV_TIME);
}
After making these fixes, invoke make
again and copy the compiled files to your game folder as before.
Results & Issues
The startup movie with the LucasArts logo had no audio. Some sound effects were missing on the menu itself.
Some visual effects didn't look quite right on OpenJK compared to the original retail game. The most significant of these was the "cloaking effect" used by some NPCs. There were also some flickering textures, but these were rare.
Some grass effects were only drawn at an absurdly close distance to the player, making for an annoying pop-in effect. Thankfully, most levels did not rely heavily on this visual feature.
Out-of-box, this game did not perform well and had very choppy mouse movement. Installing OpenJK (either through Luxtorpeda or manually) resolved almost all input and microstutter issues.
For the most part, the game ran very smoothly. Aiming was much easier in this game than in its predecessor Jedi Outcast; however, the AT-ST remained difficult to control. Because this game does not rely as heavily on guns as Jedi Outcast, any aiming difficulties fell into the "trivial" category.
On both Windows and Linux, this game has an issue in which some cutscenes do not start, effectively soft-locking the game (the scene opens, but there is no dialogue or animation). It is possible to skip these cutscenes in some cases, but doing so deprives the player of important story information. This issue was considerably worse on Linux than it ever was on Windows (in the latter OS, reloading the save or level would usually solve it; but not on Linux).
Someone else recently discovered that this bug is caused by a race condition in which the level starts before the cutscene objects are fully ready. It would seem this bug is becoming more common in part because hard drives have become faster since the game's release, speeding up loading times and increasing the chance that the level starts before it is actually "ready".
All traditional approaches to fix this issue—enforcing vertical sync, limiting FPS, reloading saves, and so on—were unsuccessful. The OpenJK release did not resolve this issue for me either. The only solution that worked was to make the source code modifications described above and compile my own version of OpenJK. After doing this, I encountered no issues with cutscenes at all.
Note: because this bug is at least partially dependent on hardware, and very much so on your computer's software, you may need to take different steps than I did. Hopefully, someone will develop a proper patch and integrate it into OpenJK soon.
The game crashed semi-frequently with animation mods installed, especially in the final two areas. Crashes were random, necessitating frequent saves to avoid losing progress.
It should be pointed out that the Enhanced Saber Realism mod I used has been very well-tested in the community (itself being a fork of a previous, very popular mod). The instability was therefore caused by some level of incompatibility with OpenJK itself. I would assume that OpenJK is "stricter" in some way about how animation files are defined than in the original Jedi Academy engine. If this is true, it is possible that some other classic mods may not work as intended.
Notes
There are a few issues with the Steam version of this game, applying to both Windows and Linux:
Issue: | Resolution: |
Volumetric shadows look very bad or have buggy behavior, especially on character faces. | Use simple shadows instead. |
On the t3_stamp level (avoiding spoilers; this is the save file name), you may near the end of the level only to have it restart from the beginning. |
Run from the start of the level to the end—this will be easy, as the enemies don't respawn—and the ending should work normally. |