hopeufindyerdad Posted May 27, 2014 Posted May 27, 2014 Yay first post! Well, I've been creeping this site and OpenJK for a little while now, and I'd like to at least get my feet wet modding and/or fiddling with JA myself. Back in the day I used a program called Ultra Utility, which somehow hooked into the console and read commands and such, and played music from the desktop. I've recently begun fiddling with python, and was wondering if something similar (however rudimentary my version might be) is a feasible thing to try! Any pointers would be great! Basically just reading and writing to the console in game is my goal, if that's how it works. And doing that with python. I'm willing to try all the hard stuff myself but I've hit a wall as far as resources go! Thanks!
Futuza Posted May 28, 2014 Posted May 28, 2014 Yes, but there's no need to hook openjk, since it is all open source. Python probably won't work all that well, since openjk is in C (with a little bit of C++), but you I guess you could maybe make python work in a weird roundabout sort of way. Others could probably give you more advice about doing that sort of thing, as I'm not really all that familiar with this particular part of the source code. I'd recommend hopping on #jacoders on irc for advice after you download the code, compile it, and then read some of the console related bits.
hopeufindyerdad Posted May 28, 2014 Author Posted May 28, 2014 Well the original Ultra Utility was actually a standalone plugin that ran alongside Jedi Academy, which unless I'm overlooking something (I probably am) would mean I could make the actual program with something other than C. Editing the game source code might be a bit much for me right now. I'll check out the IRC though, thanks! Edit: I found several links to MauDae's killtracker from JKO, but they're all dead Apparently there's a command called /condump that puts all of your console history into a text file, but reading from that would be a hassle, as I want to do things live with the game. And plus I would have to /condump every time I wanted to send a command. As far as I can tell, killtrackers integrate themselves into the launcher, not into the source code. I'm still checking things out, but would love to do all of this without editing any game code.
Didz Posted May 29, 2014 Posted May 29, 2014 Ultra Utility had to be a separate program because the retail JKA version wasn't open-source. UU uses DLL injection and runtime code patching in order to hook into the engine code while the game is running. You'll need to be very proficient with x86 assembler and runtime code patching if you intend to have this program run separately to JKA. If you don't know this already and you're using OpenJK, I'd advise completely against going this route. It will take you months, maybe years. Again, even though you write your program in Python, you will need a crapton of embedded x86 assembler code injections in order to get any sort of integration with the engine. If you're working with OpenJK, the easiest thing to do is to just add your features onto the engine's (or the DLLs') source code in C or C++. Extending JKA to support Python plugins would require you to modify the engine source code with C/C++ regardless, and this doesn't seem to align with your goals for modding JKA. For beginning modding with JKA, learning C and C++ is the way to go. If you don't understand the game's code which is written in those languages, you'll have no chance modding it. Futuza and Raz0r like this
thepolis Posted May 30, 2014 Posted May 30, 2014 Take a look at Q3 MultiMod [1]. It's possible to create a plugin without hacking the engine source. 1. http://sourceforge.net/projects/qmm/ Agent Jones likes this
hopeufindyerdad Posted May 30, 2014 Author Posted May 30, 2014 Thanks so much for the answers. This MultiMod looks great. I didn't realize it actually comes with a JKA plugin, I'll have to start messing around with it.I also managed to find the original killtracker source (as in the JKO one), on some Polish site. It's in VB so hopefully I can poke around and reproduce it, but it doesn't seem to call super weird injectors or anything. You guys are the best!
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