What ships in each download

"Two crates arrived. Only one of them was for you, and you opened the other one." — Quartermaster Dell Vass

Every StoryForce release publishes 2 zips per platform, and they contain different things.

Both zips extract to a folder called StoryForce. Dropping the wrong one into GameData looks like it worked and then fails the moment you try to play.


What it does

A release build produces a client zip and a server zip for each supported platform. Both are built from the same source and both carry the same sealed asset pack. What differs is the code modules and the loose files sitting beside that pack.

Builds are published for Windows 32-bit and 64-bit, Linux 32-bit and 64-bit, and macOS on both Intel and Apple silicon. Each of those 6 platforms gets its own pair.


The client download

StoryForce - Client extracts to a StoryForce folder holding:

  • the 3 game modules, named jampgame, cgame and ui with your platform's suffix
  • storyforce.pk3, the sealed asset pack
  • login.cfg, where your saved account details are written
  • radialmenu.cfg, the layout of the in-game radial menu
  • loadtips.txt, the lines shown on the loading screen
  • PlayStoryForce.bat and PlayStoryForce.sh, the launchers

This is the one a player wants. See install the client.


The server download

StoryForce - Server extracts to a StoryForce folder holding:

  • one game module, jampgame with your platform's suffix
  • storyforce.pk3, the same sealed asset pack the client gets
  • storyforce_server.cfg, the config file the server must execute at launch
  • llm/, the base prompt and persona library for AI NPCs

There is no cgame or ui module, because a dedicated server draws nothing. There is no launcher and no server executable either. See installing a dedicated server.


Inside storyforce.pk3

A pk3 is a plain zip file that Jedi Academy reads game content out of. StoryForce ships exactly one, and it holds 7 folders:

  • ext_data, the NPC definitions
  • fonts, the interface typefaces
  • gfx, effects and interface artwork
  • models, player and prop models
  • shaders, surface definitions
  • sound, speech and effects audio
  • ui, every menu screen the mod adds

The same file goes into both zips, unchanged. A server needs it as much as a client does, because the NPC definitions and interface menu files live inside it.

Everything else ships loose, outside the pk3. That is deliberate. Those are the files StoryForce reads, writes and edits while it runs, and a file inside a pk3 cannot be edited in place. login.cfg gets rewritten every time you save an account. storyforce_server.cfg is yours to change. The llm/ folder has persona files written into it during play.


Which download you want

Match the download to what the machine does:

  • playing on somebody else's server, or hosting a listen server from inside the game, means the client zip
  • running a dedicated server nobody sits at means the server zip
  • running the container image means the server zip as well, purely to extract storyforce.pk3 and llm/ from it

The container image is built on a different path from the release packer, so it contains neither the asset pack nor the llm/ folder. See Docker hosting.


Things to note

  • The server zip cannot be played from. It has no cgame or ui module, so the game has nothing to draw with.
  • The client zip cannot host a dedicated server properly. It has no storyforce_server.cfg, which means no working kick or ban.
  • Neither zip contains an executable. The client zip has launcher scripts that find an OpenJK client you already have. The server zip has nothing of the kind.
  • The asset pack is not optional on a server. Without it there are no NPC definitions and no menu files, and players connect to something that barely functions.
  • Do not unpack storyforce.pk3. The game reads it as an archive. Loose copies of the same files shadow it in confusing ways.
  • Both zips extract to the same folder name. Extracting one over the other leaves a mixture, which is worse than either.

Next