Hi all. I've got a few uneducated questions here, I was hoping someone could give me a hand.
First of all, I've been out of the entire JO/JA modding scene for quite a while, and only recently started getting back to it. A few months ago I was working on a saber mod, which was meant to change several key aspects of saber combat. Eventually I dumped it because I got furstrated by the fact that my mod depended on new animations which I could never make (due to lack of tools support).
Recently my interest was sparked again by the fact that there is a way to make new animations for JA. I was going to port my code over to the JA source and continue working on it, when I stopped by the JA coding forums and discovered this whole OJP thingy. I'd very much like to make my mod compatible with the OJP, because I doubt anyone would ever play my mod if it didn't include all the bells and whistles you guys are implementing (and it would be a terrible waste not to benifit from the existing work put into other fields I don't indend to modify).
The problem is, since the OJP code is constantly updated, there isn't a good way to develop a stand-alone mod without having to constantly update the project files. Moreover, when my mod is released, it will quicly become outdated. As far as I know the Q3A engine doesn't offer any way to componentize mods (one of the main reasons I dislike editing it, which is closely related to it being - ugh - procedural), so there is no way to encapsulate my custom code into a seperate component that can be updated independantly from the OJP.
Therefore, what I'd like to know is whether there is a standard practice I'm not aware of for developing mods based on constantly updated external source files. I'd appreciate a little input here, because I'm quite frustrated.
Well, that's what CVS (
www.cvshome.org) is for. You could get direct access to our CVS repository and then get regular updates that should automatically merge with your copies as long as you haven't changed something that was changed in the lastest update (in that case, there would be a "conflict" and you'd have to sort thru things and merge them manually).
It's all very easy to do once you have everything set up.
We welcome anyone that wants to use our code as long as they follow the rules and don't pull any sort of glory stunts (like changing a few lines of code and then releasing as OJP++ or something).
So what sort of mod are you talking about?
Originally posted by razorace
Well, that's what CVS (
www.cvshome.org) is for. You could get direct access to our CVS repository and then get regular updates that should automatically merge with your copies as long as you haven't changed something that was changed in the lastest update ....
Uh - this is what he means - to make a mod, he's going to change the source.
Yeah, he could get in to a spaghetti mix of problems and try to sort out the mess-ups manually ...
Bottom line, if OJP doesn't *stop* changing source at some point, people will have a hard time *beginning*.
People can just base their mods off of what is released publically. I realize that complicates things when it comes time to updating the OJP portion of their mod but perhaps you can just set a second copy of everything you impliment into your OJP based mod, this way you can re-impliment it later when it comes time for updating the OJP base code.
I realize it's more than likely not this simple but I'm sure we can find a work around this if we set our minds to it.
Originally posted by Wudan
Uh - this is what he means - to make a mod, he's going to change the source.
Yeah, he could get in to a spaghetti mix of problems and try to sort out the mess-ups manually ...
Bottom line, if OJP doesn't *stop* changing source at some point, people will have a hard time *beginning*.
That doesn't make any sense. That would be stopping all progress on the project for a select few of modders that want to create mods that change stuff that's currently being updated by OJP AND when they aren't willing to submit their own work.
The merger process is 90% automatic and is very easy to fix when it's not with our code change tagging system.
Thanks for replying so promptly.
The more I think about it, I realize it just isn't possible to use OJP as a base - as long as it isn't released, that is, and I doubt that's going to happen any time soon. The only option is to snoop around your source every now and then (if it really is completely open) and fish out stuff I like, in which case you couldn't really say I was "basing" my mod off yours.
Just out of curiosity, has there ever been a project for Q3 that implements calls to external (non-VM) binaries? I doubt it's feasible, but making a sort of plugin interface would really be something.
Anyway, the goal of my (intended) mod is to elinimate COMPLETELY the messy way saber combat is done in JO/JA. I've had this idea knocking around my cortex since my days of JK modding. Basically, I want to make duels up-close-and-personal like they're supposed to be, based on startegy, timing, aim, and most importantly, balance, like they're supposed to be. Duelling isn't about who runs up to who's back first and runs their blade through them, or about who force jumps higher, it's about staying focused and balanced, anticipating opponents' moves and responding accordingly.
(Now before someone rattles off about pings and how a mod that is based on precise timing will never be playable over the internet, I'll just say flat out: I don't care about lag. As far as I'm concerned, my mod is LAN only. This is because I'm more interested in implementing my ideas to the fullest than toning them down to suit everyone's connection speed. This might sound a bit selfish, but considering the fact that such a mod would radically change saber fighting, I don't expect it to become mainstream anyway, so making it suitable for public servers isn't a top concern. Naturally I'll try to make it as bandwidth-efficient as possible, but it'll still require a lot more traffic than the standard saber system.)
Back to topic. The system is based on the following principles:
1) Complete control over attack / defense moves, ragardless of direction of movement. To be more specific, left mouse button controls strikes from the left to the right, right mouse button controls R to L strikes, and an extra button (preferably a thumb mouse button) for blocking/parrying. Combinations of the three (in predefined sequences) will result in special combos (a la Mortal Kombat). Examples of combos are double clicking left to do a twirl attack, or left-right-left for a flurry. This system is mostly in place already, though it needs a lot of refining. One of the main things I want to add is automation of the system, by making a "saber moves" external text file that defines the attack animation, base damage, button sequence, etc.
2) Balance. While moving - running / jumping /etc. - balance (and consequently, aim) is way off when compared to a standing position. That is why you don't see Jedi running around duelling in the movies. Keeping your weight centered is crucial to aiming successful strikes (or parrying succesfully). I thought of implementing a system that uses a balance meter in conjunction with the aggressivity of the attack to determine successful hits and damage. My goal is to force players into using swing/parry strategies (using the system I mentioned in (1)) while standing still or moving very slowly. Think of the sword fighting mechanics of the original Prince of Persia. They were very simple, but lots of fun. Wait for the opponent to strike, parry, and then quickly strike back before he slashes at you again.
Examples: heavy stance would mean high aggressivity for your attacks, but a long recovery time to a balanced state (throwing the weight of the blade over your head leaves you completely off balance). Running will cause your balance to sway from left to right, so your chance of hitting a successful blow runs much lower. Parries / blocks are also determined by balance. If you're standing still facing an opponent who's running towards you swinging a heavy attack, you're got a very good chance of knocking him off his feet with a successful parry.
That's about the core of the mod I hope to achieve. I'm staying clear of all superficialities like new Force powers and player skins, because those tend to bog down progress (often to the point of killing the mod - "newbie syndrome" as I call it, but that's another story :p). Now, I would grealt benefit from OJP improvements in such fields as better collision detection, damage stats reporting, and many other miscellanious modifications/additions I read about here and there on these forums. I just hope it'll be possible.
As far as the concept of basing a mod off of OJP code, you do have two options.
One is to start basing the code off it now, and keep getting updates from the repository. This is not as bad as it sounds! Once you've got the hang of using the CVS system, you'll be getting updates regularly and merging them into your code pretty routinely. Yeah sure, initially it will be a bit of a pain, but you soon get used to working that way.
I know a few of you are having problems getting initial access to the repository. And hopefully that can be worked out soon. But once your all set-up, I'll think you'll find it easier to keep updated than your thiniking it will be.
The second option is to hang back a bit and wait. While OJP at the moment is an ongoing project, I'm fairly sure at some point it will reach a saturation point where most of the really useful, worthwhile features have been added.
(For those of you who say nothing THAT worthwhile has been added yet:
1. I disagree on a few counts
2. I've got a feeling more and more people will want to contribute as the OJP get's more established. I could be right, I could be wrong - but at least we are trying...)
Anyway - if you are following the second option. (This is what I am personally doing), then your best bet for the moment is to carry on the work your doing for your mod, but instead of keeping it in a seperate project, just contribute it to the OJP. That way, you keep all your work in sync with everyone elses, and then once you start your individual mod, all your work will still be there.
...in the process, you help contribute to the community as well.
Sure, this does mean you may need to shuffle around your plan a bit etc. But I'd say it's worth it in the long run.
btw - this is exactly what I am doing at the moment. THe work I have sumbitted for the droideka to the OJP -for example - will be directly used in my planned OJP-based mod...
Well, that's my 2 cents anyway. Do with it as you may ;)
As far as the saber system your proposing, it sounds a lot like the system Razor is cooking up in many ways. Again, it would be more worthwhile for us to pool our efforts, rather than each of us working on 5 different saber mods - at least for the moment...
As far as the saber system your proposing, it sounds a lot like the system Razor is cooking up in many ways. Again, it would be more worthwhile for us to pool our efforts, rather than each of us working on 5 different saber mods - at least for the moment...
Agreed. Here are the related threads....
Enhanced WIP: Saber System (
http://www.lucasforums.com/showthread.php?s=&threadid=120027)
Enhanced Brainstorming: Saber System (
http://www.lucasforums.com/showthread.php?s=&threadid=117698)
I like how you are starting to pop in when no one expects it, you're becoming like UGG!
Heh, Emon, last time I posted here I had more posts than you, now look at you :)
then your best bet for the moment is to carry on the work your doing for your mod, but instead of keeping it in a seperate project, just contribute it to the OJP. That way, you keep all your work in sync with everyone elses, and then once you start your individual mod, all your work will still be there.
I'd gladly contribute, only I had the idea that OJP is going to be a general improvement pack, and not a gameplay-altering mod (which might not be liked by many players). I personally think that if saber gameplay strays too far off from the original game's, it shouldn't be forced on anyone interested in using OJP for it's other features. That's why I didn't even offer to contribute - I don't expect my mod to replace the current system, because it's simply too different.
We have two distros to handle that issue. Please read the ojp readme for details.
I like how you are starting to pop in when no one expects it, you're becoming like UGG!
You talking to me?