Player guide
Install TaystJK
TaystJK runs on the game files from your own copy of Jedi Academy. You need its four asset archives, and TaystJK can sit beside them or in a directory of its own.
Before you start
You need a legal Jedi Academy installation and these files from its GameData/base directory:
assets0.pk3
assets1.pk3
assets2.pk3
assets3.pk3
Download the archive for your system from the latest release:
| System | Archive |
|---|---|
| Windows, 64-bit | TaystJK-windows-x86_64.zip |
| Windows, 32-bit | TaystJK-windows-x86.zip |
| macOS, Apple silicon or Intel | TaystJK-macos-universal2.tar.gz |
| macOS, one architecture only | TaystJK-macos-arm64.tar.gz or TaystJK-macos-x86_64.tar.gz |
| Linux, 64-bit | TaystJK-linux-x86_64.tar.gz |
| Linux, 32-bit | TaystJK-linux-x86.tar.gz, whose executables end in .i386 |
Extract the whole archive. Do not copy only the executable: the renderer and game libraries beside it are needed too.
The release also has a TaystJK-windows-x86_64-AddressSanitizer.zip for diagnosing crashes;
you only need it if someone asks for a sanitizer log. Builds for Windows XP are published
separately under the winxp release.
Builds and versioning explains the release
channels.
Install for your platform
Choose your operating system to see its prerequisites and installation steps. Your selection is saved on this device.
Operating system
Windows
Install prerequisites
Use the 64-bit build unless you have a reason not to. A 32-bit process has at most 2 GB to work with, and demanding maps or asset sets can run out of that with any renderer.
Install the latest supported Microsoft Visual C++ Redistributable for the build you chose:
- the x64 package for
TaystJK-windows-x86_64 - the x86 package for
TaystJK-windows-x86
The archive already includes the matching SDL 2 and OpenAL DLLs. Keep them beside the TaystJK executable, and do not replace them with DLLs from third-party download sites.
The 32-bit build has one thing the 64-bit build lacks: EAX environmental audio, done in
software by its bundled OpenAL Soft and EaxMan.dll, so no EAX sound card is needed. Choose
x86 if you want EAX or need another 32-bit compatibility feature, and keep OpenAL32.dll and
EaxMan.dll beside the executable. See platform support.
Install TaystJK
This is the simplest layout when TaystJK is your only modded client.
- In Steam, right-click STAR WARS Jedi Knight: Jedi Academy, then choose Manage → Browse local files. Open
GameData. - Extract the TaystJK Windows archive into
GameData. - Start the executable for your build:
taystjk.x86_64.exe, ortaystjk.x86.exefor 32-bit. - Optionally create a desktop shortcut to it.
For a non-Steam copy, find the directory that holds base, jamp.exe and jasp.exe. That is
the GameData directory.
Optional: update automatically
TaystJK Updater is a third-party launcher by Slash; it is not part of TaystJK. If something goes wrong only when you start the game through the updater, report it on the updater’s repository; if it also happens when you start TaystJK directly, it is ours. Each time you start it, it checks the latest-build TaystJK release, downloads and installs a newer Windows build if there is one, and then launches the game. It also keeps itself up to date.
TaystJK desktop shortcut, which points at the updater, installs the new release and starts it. The version command then shows the new build. Video by Slash.- Download
TaystJK_Updater.exefrom its releases page. - Put it in the same directory as
taystjk.x86_64.exeortaystjk.x86.exe. - Start the game from the updater, or from a shortcut to it, instead of from the TaystJK executable. You can rename the shortcut to
TaystJKand pick the TaystJK executable as its icon.
It needs .NET Framework 4.8, which Windows 10 and 11 already include. The TaystJK directory must be writable without administrator rights. Do not run the updater as administrator, because it would then start TaystJK as administrator too.
Arguments after the updater’s name are passed on to TaystJK, so the launch options elsewhere on this page work through it. If the directory holds both builds, or the updater lives somewhere else, give the executable’s path first:
TaystJK_Updater.exe taystjk.x86_64.exe +set fs_cdPath "../JediAcademy"
The updater’s advanced usage notes cover the arguments in more detail.
macOS
Install prerequisites
Take TaystJK-macos-universal2.tar.gz, which runs natively on both Apple silicon and Intel
Macs. The arm64 and x86_64 archives each run on one of them.
Nothing else needs installing. The app bundles SDL 2 and the image and compression libraries it uses, so no Homebrew package is required.
Copy the four assets*.pk3 files from any install of the game. If you own it on Steam and
have no copy to hand, SteamCMD, which
runs on macOS, can download the Windows release:
steamcmd +@sSteamCmdForcePlatformType windows +login <your-steam-name> +app_update 6020 validate +quit
Only the PK3s in GameData/base are needed from that download.
Install TaystJK
This is the simplest layout when TaystJK is your only modded client.
- Extract the TaystJK archive and copy its
.appbundle to a directory you own. - Create a
basedirectory beside the app and put the four asset files in it, or point the app at an existing copy withfs_cdPath, as several modded clients shows. - Launch the app. Release builds are portable, so configs, screenshots and downloads are
written beside the app, in the directory that holds it, not under
~/Library/Application Support(sys_main.cpp); see builds and versioning.
The release workflow ad-hoc signs the app, so it does not need signing again. If macOS refuses to open it because it was downloaded, clear the quarantine attribute from the extracted app:
xattr -dr com.apple.quarantine "/path/to/taystjk.app"
You do not need sudo for an app in a directory you own. An update is a fresh download, so
you have to do this again after each one.
If the app still will not open, re-extract it from the archive instead of signing it
yourself. The moveandsign.sh script in the debugging guide
is for builds you compiled, not for releases.
Linux
Install prerequisites
The Linux client uses system-provided SDL 2, OpenGL, JPEG, PNG, zlib, and C++ runtime libraries. For the 64-bit release on Ubuntu 22.04, install them with:
sudo apt update
sudo apt install libsdl2-2.0-0 libgl1 libjpeg-turbo8 libpng16-16 zlib1g libstdc++6
Ubuntu 24.04 names the PNG package libpng16-16t64. Other distributions provide the same libraries under their own package names; for example:
# Fedora
sudo dnf install SDL2 libglvnd-glx libjpeg-turbo libpng zlib libstdc++
# Arch Linux
sudo pacman -S sdl2 libglvnd libjpeg-turbo libpng zlib
The 32-bit build needs 32-bit versions of the same libraries, and its executables are named
taystjk.i386 and taystjkded.i386. Prefer the x86_64 release unless you specifically need
32-bit compatibility. TaystJK’s Linux release job records the libraries the official archive is built against.
If the loader still reports a missing library, run:
ldd ./taystjk.x86_64 | grep "not found"
Install the missing library from your distribution’s package manager instead of copying a loose .so file beside the executable.
Install TaystJK
This is the simplest layout when TaystJK is your only modded client.
- Create a clean directory such as
~/.local/share/TaystJKand extract the Linux archive there. - Create
~/.local/share/TaystJK/baseand copyassets0.pk3throughassets3.pk3into it. - Make the client executable if necessary:
chmod +x taystjk.x86_64. - Launch
./taystjk.x86_64.
If you only have the game on Steam, SteamCMD
can download its Windows release, app 6020, after you set
@sSteamCmdForcePlatformType windows. Only the PK3s in GameData/base are needed from it.
First-launch checks
- Open the console with Shift + ~ and run
versionto confirm that TaystJK is running. - If the game stops with “Couldn’t load mpdefault.cfg”, TaystJK cannot see the retail
assets*.pk3files inbase/. Check where you put them, or yourfs_cdPath. - If the client cannot load a renderer or library, re-extract the complete release, check it matches your system’s architecture, and recheck the prerequisites above.
- If settings or downloaded PK3s turn up somewhere unexpected, run
pathin the console and look atfs_homepath,fs_basepathandfs_game.
Troubleshooting covers the startup errors people hit most often.
Installing several modded clients
Do not merge every client’s executables and shared libraries into one GameData directory. Different projects, or 32-bit and 64-bit builds of the same project, may ship incompatible SDL2 or OpenAL libraries.
Recommended: one shared asset directory
Keep the retail assets once and give every client its own directory:
MyGames/
├── JediAcademy/
│ └── base/
│ ├── assets0.pk3
│ ├── assets1.pk3
│ ├── assets2.pk3
│ └── assets3.pk3
├── TaystJK/
│ ├── taystjk/
│ │ └── japro-assets.pk3
│ ├── taystjk.x86_64.exe
│ └── run-taystjk.bat
└── AnotherClient/
├── another-client files…
└── run-client.bat
On Windows, put this beside the TaystJK executable as run-taystjk.bat:
@echo off
start "" taystjk.x86_64.exe +set fs_cdPath "../JediAcademy"
On Linux, the equivalent launch command is:
./taystjk.x86_64 +set fs_cdPath ../JediAcademy
On macOS, pass the same option to the app:
open /path/to/taystjk.app --args +set fs_cdPath /path/to/JediAcademy
fs_cdPath supplies the shared retail assets while TaystJK keeps its own executable, libraries, mod directory, and user files separate.
This layout is adapted from the longer multiple modded clients guide on JKHub.
Simpler alternative: copy base
Copy the complete retail base directory into each client’s directory. This uses more disk space, but needs no launch script and keeps each installation self-contained.
Put PK3s that should affect every client in that client’s base directory. Put TaystJK-only content in taystjk/, beside japro-assets.pk3.
Using another mod’s client files
TaystJK plays on modded servers with its own client-side code, so you normally install nothing else. If you want a mod’s own HUD or menus, or an older mod’s files do not seem to load, mod compatibility explains how the client picks its modules and what to do about mods that pack them inside a PK3.
Steam playtime and overlay
Optional, and Windows only. Sys_SteamInit is an empty stub everywhere else
(sys_unix.cpp).
With it working, Steam counts your TaystJK time against Jedi Academy and the overlay works, without having to launch the client through Steam.
com_steamIntegration is already on by default
(common.cpp), so there is nothing to enable. It
does nothing until you supply two files, neither of which ships with TaystJK or with retail
Jedi Academy. Put both in GameData, beside the executable:
| File | Which build |
|---|---|
steam_api64.dll |
64-bit TaystJK |
steam_api.dll |
32-bit TaystJK |
steam_appid.txt containing 6020 |
both |
6020 is Jedi Academy’s Steam app ID.
Mind the architecture. The
Steam Integration Tools
package on JKHub is the usual source for these, but it provides the 32-bit steam_api.dll
only. If you run the 64-bit build, as most people do, that package alone will not work; you
need steam_api64.dll, which comes from the Steamworks SDK.
If the file is missing the client says so at startup in red, and otherwise runs normally:
Steam integration failed: Couldn't find steam_api64.dll
The cvar is latched, so a change needs a restart. Set com_steamIntegration 0 to stop the
client looking at all.
You have to supply these yourself because the Steamworks SDK’s terms do not fit TaystJK’s
GPLv2 licence, so the library cannot be bundled. The client loads it at runtime if it finds
it, which keeps the licences apart
(sys_win32.cpp).
Next steps
- What this client adds: the HUD tools, movement styles and cosmetics
- Something is wrong: problems listed by what you see
- Host a dedicated server
- Search cvars and commands
- Compile TaystJK from source
More in this section
Details that decide what your installation can do.
Platform support
Features whose availability depends on your operating system or processor.
Platform differences →Builds and versioning
How releases are identified, and how to tell whether your build has a feature.
Read your build →Mod compatibility
Why a client feature works on one server and silently does nothing on another.
Server differences →Last changed History Edit this page on GitHub