Tempust85 Posted December 26, 2017 Posted December 26, 2017 So I've figured out how to load another GLA ontop of the base _humanoid GLA and the cinematic map GLA. Here's the code: NPC_stats.cpp - GameFind line "if (Q_stricmp(skeletonName, "_humanoid")==0)" and put this in after the cinematic GLA stuff. // loading the "modder" animation GLA for new animations, so animators don't need to edit the base _humanoid GLA. char _humanoid_mod1Name[MAX_QPATH]; Com_sprintf(_humanoid_mod1Name, MAX_QPATH, "_humanoid_mod1"); const int mod1_animsGLAIndex = gi.G2API_PrecacheGhoul2Model(va("models/players/%s/%s.gla", _humanoid_mod1Name, _humanoid_mod1Name)); if (mod1_animsGLAIndex) { assert(mod1_animsGLAIndex == normalGLAIndex + 2); if (mod1_animsGLAIndex != normalGLAIndex + 2) { Com_Error(ERR_DROP, "_humanoid_mod1 GLA was not loaded after the normal GLA. Cannot continue safely."); } G_ParseAnimationFile(2, _humanoid_mod1Name, fileIndex); G_ParseAnimationEvtFile(2, _humanoid_mod1Name, fileIndex, mod1_animsGLAIndex, false/*flag for model specific*/); } tr_ghoul2.cpp - RendererFind line "if (!strcmp(mdxm->animName,"models/players/_humanoid/_humanoid"))" and put this in after the cinematic GLA code. // loading the "modder" animation GLA for new animations, so animators don't need to edit the base _humanoid GLA. RE_RegisterModel("models/players/_humanoid_mod1/_humanoid_mod1.gla"); This "modder GLA" takes preference over the base _humanoid & cinematic GLAs in-game, so modders can do easy animation replacements. You can make stance mods or add new animations (would need code edits obviously for new animations) without having to touch the base _humanoid GLA. Smoo, dg1995, Archangel35757 and 4 others like this
Archangel35757 Posted December 27, 2017 Posted December 27, 2017 @@DT85 - But what if we want to append new animations on top of the _humanoid.gla (not replacement only)?
Tempust85 Posted December 28, 2017 Author Posted December 28, 2017 Long answer: The initial thought was to have an easier way for modders to add new animation in (though it would require code edits for them to be added to the animtable, and to actually do something). But I noticed that the last appended GLA will override the main GLA's (and any other previously appended GLAs) animation, which is great because people like to make stance mods. Short answer: It works to add and/or replace animations. Side note: Might be possible to do this per class, not sure.
Archangel35757 Posted December 29, 2017 Posted December 29, 2017 @@DT85, when you say it overrides previous GLA's... you are saying you could have a "melee.gla" that would override existing melee animations and ADD new melee animations (as long as the new ones are added to the anims.h list)? So it only requires compiling the "delta" animations? @@eezstreet, @@mrwonko -- could we externalize the anims.h animation list so that it is read by the compiled game code from an external txt file? This would allow for easier animation modding, right?
Tempust85 Posted December 29, 2017 Author Posted December 29, 2017 Yes, it would override the existing animation in either the base _humanoid.gla or a previously appended GLA. What would be the point of making anims.h external? Any new animations would still need to be coded in to actually do something, unless of course you mean for ICARUS where you can just play an animation.
eezstreet Posted December 29, 2017 Posted December 29, 2017 If you're going to use ICARUS, you're probably better off using the map override BOTH_CIN stuff anyway Tempust85 likes this
Archangel35757 Posted December 30, 2017 Posted December 30, 2017 @@DT85, @@eezstreet - all animations from any appended custom.gla have to be added in anims.h correct? That means you have to recompile the full game code. It would be nicer, easier if modding of anims.h was externalized so it would not require recompiling the game code. Right?
eezstreet Posted January 3, 2018 Posted January 3, 2018 @@DT85, @@eezstreet - all animations from any appended custom.gla have to be added in anims.h correct? That means you have to recompile the full game code. It would be nicer, easier if modding of anims.h was externalized so it would not require recompiling the game code. Right?Right but for most purposes you can just use BOTH_CIN_x animations which can be loaded on a per-map basis and used by ICARUS. There's like 50 of them so unless you need more, you don't really need to touch the game code to add new animations which are usable by ICARUS. Anything else (extra death animations for example) would have to be added through code, and I assume it's not a problem for someone to recompile the game code there. Having something like a modder GLA allows you to have an extra set of overrides per player model.
Archangel35757 Posted January 4, 2018 Posted January 4, 2018 @@eezstreet - I'm not talking about Icarus scripting... oh well. DT85 made a good point on Discord.
Tempust85 Posted January 4, 2018 Author Posted January 4, 2018 what I'd like to do with this is break up the main gla into parts like so: - Core (runs, walks, crouch walks, jumps, stands, idles, deaths, legs, swims, face)- Guns (all gun animations)- Saber (all saber animations)- Force (all force animations, including acrobatics)- Misc (any animations that do not fit in any other category)
Archangel35757 Posted January 4, 2018 Posted January 4, 2018 @@DT85 - yeah but would that approach allow you to expand any of the individual GLA files and not impact the start/stop frames of the others? I guess it would not impact others, as each GLA would have it's own config file... ...add a Melee category for all hand-to-hand combat fighting. Also, I would suggest all acrobatics be in the Core.gla since they can be used for melee, etc.
Tempust85 Posted January 4, 2018 Author Posted January 4, 2018 It would end up the exact same as it is now game-wise, just that it's split up into parts for easier modding. Personally, I'd rather just have every animation loose like Quake 4 does with MD5anim but I'm pretty sure this appending code has some sort of memory limitations and appending 1,000+ GLA's would kill something.
redsaurus Posted January 15, 2018 Posted January 15, 2018 I tried something a bit like this a while ago - I think there were some issues where you can't split animations across more than one .gla (so no default legs anim / new torso anim) but I could have remembered it wrong.
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