Jump to content

Cached Compiling?


Cerez

Recommended Posts

Posted

I'm having a strange problem with compiling my custom OpenJK code: whatever changes I implement in the MP code don't show up in the final build. It feels like I have a build cache somewhere that needs cleaning. Either that, or I'm not doing something right with the OpenJK DLLs...

 

Any tips on how to start a clean build, or why my changes are not happening with my custom-built OpenJK MP binary?

 

I was thinking of running a "make clean". Could that help?

Posted

I've found something that may be a clue:

 

The "gamename" when I load up OpenJK MP Solo mode is "basejka", not "OpenJK", and that exactly how it seems to be behaving. For some reason it's still running the base engine, and not my custom build of OpenJK. ... Why? :huh:

 

The OpenJK cgamex86.dll and uix86.dll are in GameData/base, along with jagamex86.dll and jampgamex86.dll. The OpenJK binaries are in GameData, along with rd-vanilla_x86.dll and rdsp-vanilla_x86.dll. Is this a setting (at compile-time) I'm not aware of? What gives??

Posted

@@Cerez We've had some reports of usability issues recently where DLLs are saved in My Games/OpenJK/<mod folder>, and then these are loaded on subsequent runs instead of those found in the JKA GameData folder. So to answer your question: you might have old DLLs lying around in My Games/OpenJK/<mod folder> - make sure you delete them :)

 

We've come up with a fix for this problem and just need to code it up.

Cerez likes this
Posted

@@Xycaleth @@mrwonko Thanks guys. Finally managed to track it down, but this is really strange... Despite the fact that I have the OpenJK DLLs placed in my "GameData/base", the game is copying the basejka DLLs to "Documents/My Games/OpenJK/base" (even after a delete), and overriding what's in my "GameData/base" that way for some reason...

 

What I did to fix this was to manually replace these DLLs (in "Documents/My Games/OpenJK/base") with the OpenJK ones.

Posted

@@Xycaleth @@mrwonko Thanks guys. Finally managed to track it down, but this is really strange... Despite the fact that I have the OpenJK DLLs placed in my "GameData/base", the game is copying the basejka DLLs to "Documents/My Games/OpenJK/base" (even after a delete), and overriding what's in my "GameData/base" that way for some reason...

That's the usability issue that we're fixing :P
Posted

That's the usability issue that we're fixing :P

Oh good. ^_^

 

There is one drawback to my manual fix method: when I join a pure basejka server, the DLLs are reverted, and I have to copy and replace them all over again.

Posted

Oh good. ^_^

 

There is one drawback to my manual fix method: when I join a pure basejka server, the DLLs are reverted, and I have to copy and replace them all over again.

That's going to happen regardless.  It only uses pk3s from the server thus it pulls the DLLs from the base assets pk3.

Posted

That's going to happen regardless.  It only uses pk3s from the server thus it pulls the DLLs from the base assets pk3.

No, I mean it literally copies the DLLs from the base assets into "Documents/My Games/OpenJK/base", replacing my OpenJK ones. After I join a pure basejka server, the whole thing reverts to the basejka game engine permanently. I need to do the manual replacement on the DLLs again.

 

Edit:

 

That gives me an idea: what if I revoked writing permissions for the game on these DLLs? :shifty:

Posted

That's still going to happen when you join a base pure server.  The same thing happened before, it was just all happening in GameData.

 

Are yours not in a PK3 at all?  It should go back to using yours if they are in a pk3 when not sv_pure 1 and on solo.

Cerez likes this
Posted

That's still going to happen when you join a base pure server.  The same thing happened before, it was just all happening in GameData.

I'm not following... :huh: It was happening in GameData? What? The copying?

 

Are yours not in a PK3 at all?  It should go back to using yours if they are in a pk3 when not sv_pure 1 and on solo.

They're not, currently. If I were to put them in a PK3, would they still need to be in "GameData/base" for this to work? Or should I put the PK3 in "Documents/My Games/OpenJK/base"? This is so confusing... :facepalm:

Ping likes this
Posted

Are yours not in a PK3 at all?  It should go back to using yours if they are in a pk3 when not sv_pure 1 and on solo.

Okay, now we're getting there! So jampgamex86.dll, cgamex86.dll and uix86.dll need to be packaged into a PK3 and placed in "Documents/My Games/OpenJK/base" for this to work! If you do the same for "GameData/base", the game craps on you and does what it feels like. Also, if you don't package the files into a PK3, the game craps on you and does what it feels like (when joining a pure server). So that leaves you with a lot of choice. ;)

 

(Documentation, anyone?)

Posted

jamp.exe copied base dlls to the (GameData/fs_game) folder too when joining a pure base server this has not changed only the location.

 

You can put your pk3 in gamedata and it will still copy to homepath just fine.  I don't see what is confusing.  PK3s are loaded from both locations, writes/copies of any kind only happen in My Games now is the main difference between jamp and OpenJK.

Posted

You can put your pk3 in gamedata and it will still copy to homepath just fine.

Nope, that theory goes out the window... at least until the usability issue is fixed.

 

The reason it's confusing is because there are too many locations the game is placing stuff into, and it's not clear to the user what order the game is prioritising these locations in loading sequence, and what it's overwriting, and whatnot.

Posted

PK3 in gamedata will still work just fine and place it where all things are written to as I said usability is irrelevant.

 

Priorities are the same as jamp, just the homepath was empty by default on windows.

Posted

The game is only ever placing stuff into one location.

Sorry, I meant "for us to place into for the game"...

Ping likes this
Posted

PK3 in gamedata will still work just fine and place it where all things are written to as I said usability is irrelevant.

It doesn't work. When the PK3 is placed in "GameData/base", the game doesn't copy it to "Documents/My Games/OpenJK/base", and the latter takes precedence in loading, where the game will copy the basejka DLLs and basically override your custom engine. So unless you place your PK3 in "Documents/My Games/OpenJK/base", currently your custom built engine will not work.

Posted

I know that the game loads the assets alphabetically, but backwards. Whatever is after "assets" will get prioritised. I called it "openjk.pk3", the same as in the latest official releases of OpenJK.

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...