Cerez Posted August 14, 2015 Posted August 14, 2015 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?
Cerez Posted August 14, 2015 Author Posted August 14, 2015 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? 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??
Cerez Posted August 15, 2015 Author Posted August 15, 2015 This thing's killing me! My Mac build does what it's supposed to, and my Windows build ignores my changes. WTH?! I really need help from an OpenJK expert. @@Xycaleth, @@eezstreet, @@ensiform, @@redsaurus, @@mrwonko, ..?
mrwonko Posted August 15, 2015 Posted August 15, 2015 As always, if you don't want to run base you need to specify the fs_game on startup. Cerez likes this
Xycaleth Posted August 15, 2015 Posted August 15, 2015 @@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
Cerez Posted August 15, 2015 Author Posted August 15, 2015 @@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.
Xycaleth Posted August 15, 2015 Posted August 15, 2015 @@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
Cerez Posted August 15, 2015 Author Posted August 15, 2015 That's the usability issue that we're fixing 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.
ensiform Posted August 15, 2015 Posted August 15, 2015 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.
Cerez Posted August 15, 2015 Author Posted August 15, 2015 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?
ensiform Posted August 15, 2015 Posted August 15, 2015 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
Cerez Posted August 15, 2015 Author Posted August 15, 2015 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... 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... Ping likes this
Cerez Posted August 15, 2015 Author Posted August 15, 2015 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?)
ensiform Posted August 15, 2015 Posted August 15, 2015 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.
Cerez Posted August 15, 2015 Author Posted August 15, 2015 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.
mrwonko Posted August 15, 2015 Posted August 15, 2015 The game is only ever placing stuff into one location.
ensiform Posted August 15, 2015 Posted August 15, 2015 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.
Cerez Posted August 15, 2015 Author Posted August 15, 2015 The game is only ever placing stuff into one location. Sorry, I meant "for us to place into for the game"... Ping likes this
Cerez Posted August 15, 2015 Author Posted August 15, 2015 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.
ensiform Posted August 15, 2015 Posted August 15, 2015 What did you call the pk3? If its sorted alphabetically before assets3.pk3, of course the base one will get used first.
Cerez Posted August 16, 2015 Author Posted August 16, 2015 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now