Bringing Civ 6-style quick animations to Civ 5

mikhailk

Chieftain
Joined
Sep 25, 2010
Messages
9
Location
Canada
Like many others, I still prefer Civ 5 over Civ 6, especially with Vox Populi, but one thing I greatly appreciate in Civ 6 is the option to have very quick combat and movement animations, rather than having to choose between very long animations which make AI turns take forever and a complete lack of animations, which is what you get in Civ 5 if you enable 'quick combat' or 'quick movement'.

Years ago, Gedemon made a mod for Civ 5 ('Faster Aircraft Animations'; https://forums.civfanatics.com/resources/faster-aircraft-animations-v-3.19675/) which dramatically speeds up animations for aircraft. This mod has since been integrated into Vox Populi. This makes me suspect that perhaps it would be possible to mod the animations for all units, not just aircraft, to be faster by a factor of, say, 2x or 3x or 4x. What's more - I suspect it might be trivially easy, since the mod which does this for aircraft only entails 3 lines of code. The problem is, I have no idea which values to change or how to find them.

The code which accomplishes this in Vox Populi is:
UPDATE ArtDefine_UnitMemberCombats SET MoveRate = 3*MoveRate;
UPDATE ArtDefine_UnitMemberCombats SET TurnRateMin = 3*TurnRateMin WHERE MoveRate > 0;
UPDATE ArtDefine_UnitMemberCombats SET TurnRateMax = 3*TurnRateMax WHERE MoveRate > 0;

Does anyone have any idea how to extend this change to all units? I think having Civ 6-style quick combat and movement animations in Civ 5 would be fantastic!
 
Faster Animations from my modpack v20 (aircraft code from "FasterAircraft Aniomations"), put in sql:
Code:
-- Aircraft rebase animations.
UPDATE MovementRates SET TotalTime = 0.04 WHERE Type = "AIR_REBASE";
UPDATE AnimationPaths SET MissionPath = 0 WHERE Type = "ANIMATIONPATH_AIRFADEIN";
UPDATE AnimationPaths SET MissionPath = 0 WHERE Type = "ANIMATIONPATH_AIRFADEOUT";

-- Aircraft animation speed.
UPDATE ArtDefine_UnitMemberCombats SET MoveRate = 2 * MoveRate;
UPDATE ArtDefine_UnitMemberCombats SET TurnRateMin = 2 * TurnRateMin WHERE MoveRate > 0;
UPDATE ArtDefine_UnitMemberCombats SET TurnRateMax = 2 * TurnRateMax WHERE MoveRate > 0;
UPDATE ArtDefine_UnitMemberCombats SET AttackRadius = 4 * AttackRadius WHERE MoveRate > 0;


-- faster movement for all other units
-- this unfortunaltey may cause units to not stop the movement animation, although they already reached their tile in rare cases.
UPDATE MovementRates SET IndividualOffset = 0; -- delay between part-units from a unit
UPDATE MovementRates SET RowOffset = 0; -- delay between rows of part-units from a unit
UPDATE MovementRates SET TotalTime = TotalTime/4; -- the total time a part-unit needs to reach the plot

-- dont know what these do
-- UPDATE ArtDefine_UnitMemberCombats SET ShortMoveRate = 0.5*ShortMoveRate;
-- UPDATE MovementRates SET PathSubdivision = 0.5;
-- UPDATE AnimationPaths SET MissionPath = 0;
-- UPDATE Missions SET Time = 0;
-- UPDATE Missions SET Visible = 0;

-- no clue how to speed up the combat animations.. but such an animation would center the screen to it alawys and this would suck, even if it would be 10 times faster..
-- so we will stick to quick combat setting instead.
I also took a look at the DLL code, but did not found anything to make combat animations faster, although I'm no expert.
 
There is also a mod called Quick Turns,

Thanks for the recommendation! I've checked it out, but even with that mod I find the turns take too long, since it doesn't speed up the combat animations themselves - but in conjunction with quicker combat animations, if such a thing turns out to be possible, I think it would be a fantastic addition to my modpacks!

You can try to reduce the Total time of the Movement rates, like that:
UPDATE MovementRates SET TotalTime = TotalTime/2;
It should reduce the time for the animation of unit movement. (but not combat animation)

Thanks for putting me on the right path!

Faster Animations from my modpack v20 (aircraft code from "FasterAircraft Aniomations"), put in sql:
Code:
-- faster movement for all other units
-- this unfortunaltey may cause units to not stop the movement animation, although they already reached their tile in rare cases.
UPDATE MovementRates SET IndividualOffset = 0; -- delay between part-units from a unit
UPDATE MovementRates SET RowOffset = 0; -- delay between rows of part-units from a unit
UPDATE MovementRates SET TotalTime = TotalTime/4; -- the total time a part-unit needs to reach the plot

-- no clue how to speed up the combat animations.. but such an animation would center the screen to it alawys and this would suck, even if it would be 10 times faster..
-- so we will stick to quick combat setting instead.
I also took a look at the DLL code, but did not found anything to make combat animations faster, although I'm no expert.
Thanks so very much for the detailed explanation! I'm going to test this out on my own and see if I can get movement animations to be dramatically faster.

Honestly, CivFanatics is such an outstanding community. Thank you all for your help! :)
 
Hi Serp,
-- dont know what these do
-- UPDATE ArtDefine_UnitMemberCombats SET ShortMoveRate = 0.5*ShortMoveRate;
-- UPDATE MovementRates SET PathSubdivision = 0.5;
-- UPDATE AnimationPaths SET MissionPath = 0;
-- UPDATE Missions SET Time = 0;
-- UPDATE Missions SET Visible = 0;

Is there any chance that these might affect combat animations? I ask in part because you specifically mentioned them even though you don't know what they do, so I'm wondering why you bring them up.

Again, thanks so much for your help!
 
Hi Serp,
Is there any chance that these might affect combat animations? I ask in part because you specifically mentioned them even though you don't know what they do, so I'm wondering why you bring them up.
Again, thanks so much for your help!
I simply searched the code for everything that looked like it could affect Animation speed and tried to set some values and see what changed ingame.
For the outcommented ones I did not find out what they do, but I still did not delete those lines because maybe one day I will dontinue to research and find out what they do. But no, I don't think they are related to combat.

If you want you can continue to experiment, at least regarding the problem in the comment about MovementRate, that sometimes the animations from units do not stop. Maybe you find out better values with this not happening.
 
Making a late addition to Serp, I found that TurnRateMin&Max also work on units without predefined values. For example, Archer units do not have TurnRates (so Serp's multiplication wouldn't work on them), but they are affected by it, so you can significantly speed up that frustrating refacing before combat. I cannot figure out how (and if) ShortMoveRate and ShortMoveRadius work though, tried it with low and high values, didn't see any difference. I also tried removing some animations, that didn't seem to work either.

TL;DR: Try

UPDATE ArtDefine_UnitMemberCombats SET TurnRateMin, TurnRateMax = 10; -- This is pretty much instant, lower values may make it less jarring.

Faster Animations from my modpack v20 (aircraft code from "FasterAircraft Aniomations"), put in sql:
Code:
-- Aircraft rebase animations.
UPDATE MovementRates SET TotalTime = 0.04 WHERE Type = "AIR_REBASE";
UPDATE AnimationPaths SET MissionPath = 0 WHERE Type = "ANIMATIONPATH_AIRFADEIN";
UPDATE AnimationPaths SET MissionPath = 0 WHERE Type = "ANIMATIONPATH_AIRFADEOUT";

-- Aircraft animation speed.
UPDATE ArtDefine_UnitMemberCombats SET MoveRate = 2 * MoveRate;
UPDATE ArtDefine_UnitMemberCombats SET TurnRateMin = 2 * TurnRateMin WHERE MoveRate > 0;
UPDATE ArtDefine_UnitMemberCombats SET TurnRateMax = 2 * TurnRateMax WHERE MoveRate > 0;
UPDATE ArtDefine_UnitMemberCombats SET AttackRadius = 4 * AttackRadius WHERE MoveRate > 0;


-- faster movement for all other units
-- this unfortunaltey may cause units to not stop the movement animation, although they already reached their tile in rare cases.
UPDATE MovementRates SET IndividualOffset = 0; -- delay between part-units from a unit
UPDATE MovementRates SET RowOffset = 0; -- delay between rows of part-units from a unit
UPDATE MovementRates SET TotalTime = TotalTime/4; -- the total time a part-unit needs to reach the plot

-- dont know what these do
-- UPDATE ArtDefine_UnitMemberCombats SET ShortMoveRate = 0.5*ShortMoveRate;
-- UPDATE MovementRates SET PathSubdivision = 0.5;
-- UPDATE AnimationPaths SET MissionPath = 0;
-- UPDATE Missions SET Time = 0;
-- UPDATE Missions SET Visible = 0;

-- no clue how to speed up the combat animations.. but such an animation would center the screen to it alawys and this would suck, even if it would be 10 times faster..
-- so we will stick to quick combat setting instead.
I also took a look at the DLL code, but did not found anything to make combat animations faster, although I'm no expert.
 
Top Bottom