Jump to content

[Attention: Devs and Modders] Burst Animation Sync


Recommended Posts

Hey, guys.

I know we are few days from release and big changes cannot be done, but trying to fine tune weapon stats at weapons_gc.xml I have noticed an annoying issue: burst delay, sounds and animations don't match. After hours testing with the laser rifle, I have found values that are not perfect, but far better then default to make things a little more in sync. Problem is: animations don't change with value tweaks, and animation for stand up burst and crouched burst have different timmings!

Better values I found:

Stand Up Burst

- At config.xml:

<BurstDelay>330</BurstDelay>

- At weapons_gc.xml, laser rifle entry:

delay="1.1" burstdelay="0.47"

Crouched Burst

- At config.xml:

<BurstDelay>330</BurstDelay>

- At weapons_gc.xml, laser rifle entry:

delay="0.6" burstdelay="0.47"

Note that optimal BurstDelay (config.xml) and burstdelay (weapons_gc.xml) are the same for both stand up and crouched, but delay (weapons_gc.xml) differ from stand up to crouch. It is the time between the shot command and first bullet fired (stand up soldier rises the weapon so it needs more time, crouched soldiers just fire with the weapon already pointed to the target). Crouch delay value (0.6) is default for laser rifle. I have no clue about the difference between BurstDelay @ config.xml and burstdelay @ weapons_gc.xml, my results are experimental, but I know that both seems to make difference trying to sync things.

Below I provide you guys two saves and I would like if you can test and see it for yourselves, and help me to find a solution. Procedure (for each save, at first without tweak the values I mentined): select the soldier out of the transport ship (Hiroto), don't turn him, point the cursor over the ground at some distance direct in front of his facing, hold ctrl and click to fire the burst at the ground. Observe the sync elements (projectiles delay, sound, weapon kick, light over the soldier). End turn and repeat until you can see the small details clearly. Maybe you want to reload and repeat sometimes. After you get the feeling, you can tweak the values and repeat the procedure. You will see the differences.

[ATTACH]3826[/ATTACH]

[ATTACH]3827[/ATTACH]

Now what? I think that better bet is to sync stand up and crouched animations, so we can use the same delay value for both. Note that the light from muzzle flash over the soldier (present only at stand up burst) difficults the sync, even if I have spent hours to make it the better I can. Maybe it could be just removed.

Help me, brave guys. We need to fix it, even if it must be as a patch after release. Thanks.

shot_anim_up.sav

shot_anim_crouch.sav

shot_anim_up.sav

shot_anim_crouch.sav

Edited by Alexandre Lange
rearranged text for better clarification
Link to comment
Share on other sites

This sounds like it will be really useful to add a little more polish, even as an unofficial patch.

If it's any use, it should be possible to alter the animation speeds as well. To do this, you need to unpack the spectres from GC_UnitsXML using an unpacker (you should be able to use the same one as for unpacking the mapping tiles; there should be some information on this in the stickied introduction to mapping thread).

It's worth noting that you'd need to look at this for all armour/weapon and alien/weapon combinations, so it's likely to be a lengthy task. but I thought it worth highlighting in case you're interested.

Link to comment
Share on other sites

It's nothing near to all you guys have already done. So, my pleasure to try to payback with something. Anyways, I have no skill or experience modding, so I am limited to find issues. Cannot do much beyond value tweaks to solve things. That's why I am here asking for help.

Could anyone sync the timmings of stand up and crouch bursts (make time pointing/aiming, weapon kicks and lights from muzzle flashes over the soldier occurs at the same instant/time count for both)?

Link to comment
Share on other sites

I could be wrong, but I think 'frametime' controls how long it takes to play the animation. Try changing one of the values and see if it makes a difference?

(I'm assuming the animation files are like animations for other things, but maybe not?).

Link to comment
Share on other sites

Hey, kabill, give me a hand here! In the line below:

<frame regx="20" regy="70" name="burstshoot_SE001.png" w="39" h="76" x="0" y="77"/>

What value you think is the 'frametime'?

There are no 'frametime' value, just a lot of lines like this with different values (all file content at the spoiler, below).

<?xml version="1.0"?>

<!DOCTYPE sequence SYSTEM "sidewalkdtd">

<sequence name="D:\Chris England\New Task\Received File\Jackal_LR\LR\SE\burstshoot_se.xml" source="./burstshoot_SE*.png">

<img regx="55" regy="91" name="burstshoot_se" savedname="burstshoot_se.png" w="0.000000" h="0.000000"/>

<framelist>

<frame regx="20" regy="70" name="burstshoot_SE001.png" w="39" h="76" x="0" y="77"/>

<frame regx="20" regy="70" name="burstshoot_SE002.png" w="39" h="76" x="0" y="154"/>

<frame regx="20" regy="69" name="burstshoot_SE003.png" w="39" h="75" x="40" y="0"/>

<frame regx="20" regy="69" name="burstshoot_SE004.png" w="39" h="75" x="0" y="308"/>

<frame regx="20" regy="68" name="burstshoot_SE005.png" w="39" h="74" x="283" y="0"/>

<frame regx="20" regy="68" name="burstshoot_SE006.png" w="39" h="74" x="403" y="0"/>

<frame regx="20" regy="68" name="burstshoot_SE007.png" w="39" h="74" x="40" y="226"/>

<frame regx="20" regy="68" name="burstshoot_SE008.png" w="39" h="74" x="40" y="76"/>

<frame regx="20" regy="68" name="burstshoot_SE009.png" w="39" h="74" x="40" y="151"/>

<frame regx="20" regy="67" name="burstshoot_SE010.png" w="39" h="73" x="40" y="375"/>

<frame regx="20" regy="67" name="burstshoot_SE011.png" w="39" h="73" x="40" y="301"/>

<frame regx="20" regy="67" name="burstshoot_SE012.png" w="40" h="73" x="415" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE013.png" w="40" h="73" x="332" y="372"/>

<frame regx="20" regy="67" name="burstshoot_SE014.png" w="40" h="73" x="416" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE015.png" w="41" h="73" x="290" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE016.png" w="41" h="73" x="206" y="372"/>

<frame regx="20" regy="67" name="burstshoot_SE017.png" w="41" h="73" x="206" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE018.png" w="41" h="73" x="248" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE019.png" w="41" h="73" x="290" y="372"/>

<frame regx="20" regy="67" name="burstshoot_SE020.png" w="41" h="73" x="80" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE021.png" w="41" h="73" x="80" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE022.png" w="41" h="73" x="80" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE023.png" w="41" h="73" x="80" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE024.png" w="41" h="73" x="80" y="372"/>

<frame regx="20" regy="67" name="burstshoot_SE025.png" w="40" h="73" x="416" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE026.png" w="41" h="73" x="164" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE027.png" w="41" h="73" x="206" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE028.png" w="41" h="73" x="332" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE029.png" w="41" h="73" x="332" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE030.png" w="40" h="73" x="416" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE031.png" w="41" h="73" x="290" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE032.png" w="41" h="73" x="248" y="372"/>

<frame regx="20" regy="67" name="burstshoot_SE033.png" w="41" h="73" x="122" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE034.png" w="41" h="73" x="374" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE035.png" w="40" h="73" x="374" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE036.png" w="41" h="73" x="122" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE037.png" w="41" h="73" x="248" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE038.png" w="41" h="73" x="290" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE039.png" w="41" h="73" x="332" y="76"/>

<frame regx="20" regy="67" name="burstshoot_SE040.png" w="41" h="73" x="122" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE041.png" w="41" h="73" x="374" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE042.png" w="41" h="73" x="248" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE043.png" w="41" h="73" x="122" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE044.png" w="41" h="73" x="248" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE045.png" w="41" h="73" x="122" y="372"/>

<frame regx="20" regy="67" name="burstshoot_SE046.png" w="41" h="73" x="164" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE047.png" w="41" h="73" x="164" y="224"/>

<frame regx="20" regy="67" name="burstshoot_SE048.png" w="41" h="73" x="164" y="298"/>

<frame regx="20" regy="67" name="burstshoot_SE049.png" w="41" h="73" x="164" y="372"/>

<frame regx="20" regy="67" name="burstshoot_SE050.png" w="41" h="73" x="206" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE051.png" w="41" h="73" x="248" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE052.png" w="41" h="73" x="290" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE053.png" w="41" h="73" x="332" y="150"/>

<frame regx="20" regy="67" name="burstshoot_SE054.png" w="41" h="73" x="374" y="150"/>

<frame regx="20" regy="68" name="burstshoot_SE055.png" w="41" h="74" x="200" y="0"/>

<frame regx="20" regy="67" name="burstshoot_SE056.png" w="41" h="73" x="206" y="224"/>

<frame regx="20" regy="68" name="burstshoot_SE057.png" w="40" h="74" x="242" y="0"/>

<frame regx="20" regy="68" name="burstshoot_SE058.png" w="39" h="74" x="323" y="0"/>

<frame regx="20" regy="68" name="burstshoot_SE059.png" w="39" h="74" x="363" y="0"/>

<frame regx="20" regy="69" name="burstshoot_SE060.png" w="39" h="75" x="80" y="0"/>

<frame regx="20" regy="69" name="burstshoot_SE061.png" w="39" h="75" x="160" y="0"/>

<frame regx="20" regy="69" name="burstshoot_SE062.png" w="39" h="75" x="120" y="0"/>

<frame regx="20" regy="70" name="burstshoot_SE063.png" w="39" h="76" x="0" y="231"/>

<frame regx="20" regy="70" name="burstshoot_SE064.png" w="39" h="76" x="0" y="0"/>

</framelist>

</sequence>

Link to comment
Share on other sites

None of them, I guess. It's slightly different to the other animation files. For example:

<?xml version="1.0"?><!DOCTYPE sequence SYSTEM "sidewalkdtd"><sequence name="empblast.xml" source="./EMP_*.png">   <img regx="128" regy="164" name="empblast" w="0" h="0" />   <framelist>       <frame regx="118" regy="80" x="246" y="1072" w="237" h="134" name="EMP_00.png" />       <frame regx="118" regy="99" x="0" y="795" w="237" h="179" name="EMP_01.png" />       <frame regx="119" regy="130" x="0" y="0" w="242" h="219" name="EMP_02.png" />       <frame regx="122" regy="146" x="0" y="220" w="245" h="211" name="EMP_03.png" />       <frame regx="127" regy="144" x="735" y="0" w="252" h="215" name="EMP_04.png" />       <frame regx="120" regy="97" x="735" y="891" w="241" h="157" name="EMP_05.png" />       <frame regx="118" regy="98" x="975" y="732" w="237" h="158" name="EMP_06.png" />       <frame regx="118" regy="99" x="975" y="572" w="237" h="159" name="EMP_07.png" />       <frame regx="119" regy="99" x="735" y="572" w="239" h="159" name="EMP_08.png" />       <frame regx="119" regy="98" x="735" y="732" w="239" h="158" name="EMP_09.png" />       <frame regx="118" regy="100" x="976" y="399" w="237" h="160" name="EMP_10.png" />       <frame regx="118" regy="103" x="246" y="908" w="237" h="163" name="EMP_11.png" />       <frame regx="118" regy="105" x="246" y="574" w="237" h="168" name="EMP_12.png" />       <frame regx="119" regy="108" x="246" y="399" w="239" h="174" name="EMP_13.png" />       <frame regx="120" regy="109" x="729" y="220" w="240" h="177" name="EMP_14.png" />       <frame regx="125" regy="110" x="246" y="220" w="244" h="178" name="EMP_15.png" />       <frame regx="119" regy="99" x="246" y="743" w="238" h="164" name="EMP_16.png" />       <frame regx="123" regy="103" x="486" y="740" w="242" h="167" name="EMP_17.png" />       <frame regx="128" regy="107" x="486" y="572" w="248" h="167" name="EMP_18.png" />       <frame regx="124" regy="111" x="486" y="399" w="244" h="172" name="EMP_19.png" />       <frame regx="118" regy="114" x="970" y="220" w="237" h="176" name="EMP_20.png" />       <frame regx="118" regy="117" x="491" y="220" w="237" h="178" name="EMP_21.png" />       <frame regx="118" regy="119" x="0" y="614" w="238" h="180" name="EMP_22.png" />       <frame regx="119" regy="121" x="0" y="432" w="243" h="181" name="EMP_23.png" />       <frame regx="119" regy="106" x="486" y="908" w="247" h="166" name="EMP_24.png" />       <frame regx="120" regy="107" x="731" y="399" w="244" h="168" name="EMP_25.png" />       <frame regx="127" regy="144" x="735" y="0" w="252" h="215" name="EMP_26.png" />       <frame regx="125" regy="146" x="486" y="0" w="248" h="216" name="EMP_27.png" />       <frame regx="119" regy="130" x="243" y="0" w="242" h="219" name="EMP_28.png" />       <frame regx="118" regy="99" x="0" y="975" w="237" h="179" name="EMP_29.png" />   </framelist>   <timeline name="main" frametime="30">       <keyframe frame="1" />       <keyframe frame="2" />       <keyframe frame="3" />       <keyframe frame="4" />       <keyframe frame="5" />       <keyframe frame="6" />       <keyframe frame="7" />       <keyframe frame="8" />       <keyframe frame="9" />       <keyframe frame="10" />       <keyframe frame="11" />       <keyframe frame="12" />       <keyframe frame="13" />       <keyframe frame="14" />       <keyframe frame="15" />       <keyframe frame="16" />       <keyframe frame="17" />       <keyframe frame="18" />       <keyframe frame="19" />       <keyframe frame="20" />       <keyframe frame="21" />       <keyframe frame="22" />       <keyframe frame="23" />       <keyframe frame="24" />       <keyframe frame="25" />       <keyframe frame="26" />       <keyframe frame="27" />       <keyframe frame="28" />       <keyframe frame="29" />       <keyframe frame="30" />   </timeline></sequence>

That's from one of the particle spectres. The frametime variable is the one I've been assuming is the speed, but it doesn't exist for the unit animation file you've posted up. I wonder whether it's calling the value from somewhere else instead? Not sure without being able to sift through the files myself.

Also, re: Steam - I think you got the wrong person. My steam username is nothing like my username here, so that probably didn't help!

Link to comment
Share on other sites

Yeah, the "frametime" property is what you need. If a file doesn't have the frametime set, then you need to add the keyframe text into the file manually (make sure you use the correct number of keyframes for the animation).

It's not actually particularly time consuming to do, provided you get your hands on something like Notepad++ and use the Find in Files function. Once you figure out basic regular expressions you can do very specific find and replace operations that will allow you to modify files en-masse, including adding the large chunks of keyframe text if needed. I did quite a bit of it myself a few months back.

A simple example, this morning I just did a search in the Andron directory for frametime="50" and replaced it with frametime="35", using a filter of singleshoot_*.xml. That just updated the frametime of all of the shoot animations in that folder and subfolders.

EDIT - the process takes a few hours to learn, but it's not too hard. Just read up on it a little, I'm sure you guys can work it out between you:

http://notepad-plus-plus.org/

http://markantoniou.blogspot.co.uk/2008/06/notepad-how-to-use-regular-expressions.html

http://www.powercram.com/2009/08/notepad-guide-to-using-regular.html

http://www.slideshare.net/anjesh/the-power-of-regular-expression-use-in-notepad

I forget how to search for "any character" off the top of my head, but once you figure that out it's easy to update the frame time for a particular animation to new values across literally thousands of files.

Link to comment
Share on other sites

Yeah, the "frametime" property is what you need. If a file doesn't have the frametime set, then you need to add the keyframe text into the file manually (make sure you use the correct number of keyframes for the animation).

It's not actually particularly time consuming to do, provided you get your hands on something like Notepad++ and use the Find in Files function. Once you figure out basic regular expressions you can do very specific find and replace operations that will allow you to modify files en-masse, including adding the large chunks of keyframe text if needed. I did quite a bit of it myself a few months back.

A simple example, this morning I just did a search in the Andron directory for frametime="50" and replaced it with frametime="35", using a filter of singleshoot_*.xml. That just updated the frametime of all of the shoot animations in that folder and subfolders.

I can do this, let me work on the frametime and change all files.

Which files did you need to change? Set all values to 35?

All frametime lines and test the result with each animation?

Link to comment
Share on other sites

@TD - no, I've done all I needed to already. But I think Alexandre is proposing that he go through and set up the shoot animations so they're perfectly timed / synced with the "delay" function for each weapon. It'll make everything look nicer. I don't have time to test them all myself and get them perfect.

However, he'll need to use regular expressions to do it, so perhaps if you're good at it you should help him get started with them :)

Link to comment
Share on other sites

Thanks so much for the attention, guys!

@TD: If I can suggest you a start, take the values for laser rifle stand up burst I have listed at the oppening post and put it at the mentioned files. Get the save (at op too), go to the game and see the result: burst delay, animation and sound all matches. So, with your burstshoot_se.xml (unpacked from GC_UnitsXML.pfp file), you have your standard. Now, get the crouchburstshoot_se.xml (also unpacked from GC_UnitsXML.pfp file) and make your magic with frametime to make it sync (same delay before first shot, same delay between shots of the burst) with the stand up one (now your standard). So, the delay value we set for the laser rifle at weapons_gc.xml will work (burst delay, animation and sounds matches) for both stand up and crouched bursts! :)

We need to do it for every weapon-armor-user combination, but Chris said it is easy as soon as we have the appropriate frametime values for each kind of weapon, because we can apply it to all at same time with Find in Files function at Notepad++. If you give me just ONE file with the frametime included, I could do all the rest and test it to exaustion to give you guys the final mod.

Edited by Alexandre Lange
Link to comment
Share on other sites

Really? Sorry not to answer before, I was losting my time working! ;)

If you could sync timmings of crouchburstshoot_se.xml and burstshoot_se.xml for, let's say, the combination of jackal armor + laser rifle, to make both stand up burst and crouched burst use same delays matching the animations and sounds, I would be a happy guy!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...