Jump to content

Question of a beginner in OpenJK coding


Recommended Posts

Hi !

Like the title said, my question could look dumb, but i just began with coding with OpenJK, so please be indulgent ^^"

So I followed the tuto of eezstreet which explain how to compile open JK (the tuto here : https://jkhub.org/tutorials/article/145-compiling-openjk-win32-must-read-for-new-coders/ ). I did everything in this tuto and i successfully compiled the code, one in Debug and another in Release. Now I have all my Dll's and .exe and... I don't know what to do with that.
Of course, I tested some stuff, like sending all the files in my Vanilla JKA folder, and I always have something not working and I can't test if my code work in-game.

So my question is : Where the .dll and .exe of my Release Folder in the build must be placed to be tested in game ?

Thank you in advance :) 


Link to comment

1 install Jedi Knight jedi academy

2 patch to 1.0 version

3: Do a back of all original Dll and exe (jamp, jasp) files  in some folder... maybe better put this folder inside Gamedata. for example i have a folder called "oldexe" and inside i get all dll and exe file of original game.

4: debugging i am not much sure, with me never worked much fine. the debug version of dll and exe allows coder to test in real time the code and fix bug and interruption and exception during game.

the release version is the stable version of your custom code. you need basically to overwrite dll and exe original.

your edit are for SP or MP?

for MP you need to replace uix86.dll, cgamex86 , jampx86.dll and run with openjk_ded or openjk.exe

rdsp vanila is the single player engine, the other vanilla is the mp engine.


single players: jasp.exe is original SP exe.

jaspx86.dll is the dll of the SP, openjk_spx86.dll is the exe you build with openjk and this exe need to be runned for test game edits into SP, after you past it into gamedata folder and overwrite the SP dll

Link to comment

Are you compiling openjk or the original game source?


You'll want it to look something like this:

Release -> exes and openal32.dll, rd-vanilla_x86-x86.dll, rdsp-vanilla_x86.dll, SDL2.dll, EaxMan.dll, IFC22.dll, and a 'base' directory.

base -> jagamex86.dll, cgamex86.dll, gamex86.dll, uix86.dll

Kabay likes this

JKG Developer

Link to comment

Thank you for your answers ! Im not currently at home so i can't test it now but I will try these solutions tomorow and keep you informed if it worked !


And to answer you Darth Futuza i took the openJk downloaded in zip from the git

Link to comment

I think it's almost okay ! I can start JKA Multiplayer with the OpenJK.exe,but when I try to create a game I have the following error message :


"Ghoul2 model was reloaded and has changed, map must be restarted". 

The disposition of my DLL's are now like that :

Release Folder :

  • EaxMan.dll
  • IFC22.dll
  • OpenAl32.dll
  • openjk.x86.exe
  • openjkded.x86.exe
  • rd-vanilla_x86.dll
  • SDL2.dll
  • base folder

Base folder :

  • assets0.pk3
  • assets1.pk3
  • assets2.pk3
  • cgamex86.dll
  • games.log
  • jagamex86.dll
  • jampconfig.cfg
  • jampgamex86.dll
  • uix86.dll
Link to comment

are you working to MP or SP code? into release are missing many files. SP exe and MP dll are missing.

for explaint to you:


  • assets0.pk3 <- data asset game
  • assets1.pk3 <- data asset game
  • assets2.pk3 <- data asset game
  • cgamex86.dll <- MP dll
  • games.log
  • jagamex86.dll <- SP dll
  • jampconfig.cfg <- MP config file.
  • jampgamex86.dll <- MP dll...
  • uix86.dll <- MP ui.dll


jasp and jamp are the original exe for SP and MP.

for openjk, openjk.x86 and openjk_sp.x86 are the exe for MP and SP.

what you need to build:

- dll for replace the SP and MP dlls.

- the two executable i told, and you need to run the game NOT with jasp and jamp but with this openjk exe files, after you replace the dll with edited dlls.

for this, i warn you to make a back up of old exe and dll of JKA before overwrite they. or if you wanna restore the oroiginal game you need to setup it again.

Link to comment

Thank you again ! This explanation is really clear, I now understand a little better how the game is built ! Its already that ! :P 

For this try i compiled a Multiplayer version, but since my last message, I also compiled a single version and this one worked without problem (I also added a new force power like in one of the tutos in the forum and it worked too).


Then I tried another build with both MP and SP and in this one, SP work but MP still saying the same error message.

So, the problem appear only with MP versions with this error message about "Ghoul2". Maybe I built bad with Cmake in the begining ? (although I took everything about MP in the configuration). 

About the missing files, its normal that the SP exe is not here, because in the version I took aboutin my previous message, I built MP only, but about the MP dll missing, when I build a Release for MP-only I only have these :

  • cgamex86.dll
  • jampgamex86.dll
  • openjk.x86.exe
  • openjkded.x86.exe
  • rd-vanilla_x86.dll
  • uix86.dll


Then I copied the "Base" folder from my original JKA game and add it in the folder with these dll, and replaced the original Dll by these in their respective places, I also add manually the missing dll"s like OpenAl32.dll, SDL2, EaxMan and IFC22.


So the problem could be that some dll and files are not built by the code when I build a Release version ?

Link to comment

well, SP need just 3 files: the openjk_sp.x86.dll for executable, the jax86.dll for .dll and the vanilla sp dll for sp engine.

i cannot help to you because also for me openjk never worked for MP pretty fine. i ever worked on SP and was a SP modder (now i left for heal trouble)

for me SP worked very fine. the 3 tutorial for SP weapon,. force power and saber color are mine and i very happy that you can found useful one of that. for MP code, you need to ask to some other... i never played and liked much MP and never interessed too much into MP mods.  :\ i not understand much the MP code because i not dive it like the SP code, so i cannot help you. 

your error is maybe "run out of space before read ghouls model ajust miniheap size" or something else?

Link to comment

I'm not going to bother to read all of these responses, because I'm just going to get confused.

Instead I'm going to give a pretty concise explanation of where everything is supposed to go, similar to @DarthFutuza's answer although perhaps a little more robust.


The following files should be in your Gamedata folder:

  • EXE files
  • rd-vanillax86.dll
  • rdsp-vanillax86.dll
  • SDL.dll
  • OpenAL32.dll (should already be present)

The following should be in your base or fs_game folder:

  • jagamex86.dll
  • jampgamex86.dll
  • cgamex86.dll
  • uix86.dll

By switching the cvar fs_game to something else (do it with a commandline parameter, +set fs_game X) you can load the modcode (the stuff I've listed above) separately and not have to overwrite files. Alternatively all of the above (except jagamex86.dll, I think) can be placed in a PK3 loosely.


The easiest method (by far) to test your code would be to run the debugger on it, which allows you to set code breakpoints that get triggered, and see the value of variables, which is a very useful thing to have. Release builds are more suited for well, releases.

Kabay likes this
Link to comment

Thank you Eezstreet ! Thanks to what you just said I finally made the MP mod working !

I zipped the 3 main MP dll's in a pk3 file, then I loaded the mod from the game in the list of mods and it worked !


Now I can discover the pleasures of modding JKA ! 

Thanks to each of you who helped me ! :)

Link to comment

You shouldn't need to place it in a pk3 by the way, that's just for when you're releasing it to the public.

And I wouldn't recommend doing that anyway!


The DLL in a PK3 method is just a carryover from when VMs were stored in the PK3 - it's not recommended that you put them in a PK3 because it will extract them to a temporary directory which might screw up updates.

Futuza likes this
Link to comment

Oh, right ! I will look for a better solution then, if it work like that I think it should not be complicated to do it in other way ^^

At least I was able to test some basic scripting in MP, but I think for the beginning I will focus on SinglePlayer mode to train myself in JKA scripting ! :) 

Thank you again for your help !

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...