Jump to content

S-23 "Prophet" Tactical Reconnaisance Armour


Max_Caine

Recommended Posts

Almost everything. The generic XML data file from TexturePacker is completely different to the Playground SDK spectre. You're supposed to be able to make a custom file which will export the appropriate output, but after folowing the instructions, nothing happened.

Anyway!

I've been working on the crouching animations, and something is bugging me. In the original animations there's a lot of padding before and after the actual animation takes place - theres around 11 frames of the model standing in one spot, then 5-6 frames of the model kneeling in one spot. I've done away with the padding, and I've noticed which my animaton it's very jerky, even though it's exactly the same number of frames (12-13). If someone would be willing to d/l the running/crouching animation and see for themselves if the animation is jerky, I'd appreciate it.

EDIT: Think I've found a solution, but not a proper one. the <frametime> tag governs how much time a frame stays on the screen - no idea what the unit of measurement is, but by reducing the amount of frametime, the jerkiness is much less evident. It sort-of fixes the problem but it doesn't really resolve why when I set the <frametime> tag to the same value as the GH values it does it jerkily.

Edited by Max_Caine
Link to comment
Share on other sites

Well.. not really. When I rendered it out, I could see which frames were needed and which ones seemed like bookends, so I deleted most the bookends. If you look at.. say... crouch_e from the any of the armour spritesheets, you'll notice there's 11 frames where the solider standing, 8 frames where something is happening, then 6 more frames of the solider in the kneeling position. The actual crouch animation is very short, the bookends are comparitively as long or almost as long as the animation itself. So.. I dunno! I actually have more frames than the offical animation, which means it should be a smoother transition, but it isn't unless I reduce the amount of time any particular frame remains on the screen (for reference, I reduced <frametime> fro 50 to 25).

EDIT: Anyway, jerkiness or not, there is a solution if not a final one and I'm going to crack on. Once I've done all the spritesheets for a complete weapon, I can release the rest of the (CE-only) code I've been working on and people can start playing with the armour.

EDIT 2: I suppose I could just copy the bookend frames enough times to see if that makes any difference.

Edited by Max_Caine
Link to comment
Share on other sites

If you have more frames but the animation is supposed to take roughly the same amount of real time to display then that could make it look jerky if you kept the original frametime. For example the original animation is supposed to take 10 seconds and has 10 frames so each should be displayed for 1 second. If your animation is also supposed to take 10 seconds but has 20 frames then each frame should only be seen for 0.5 of a second. Displaying each one for 1 second would make it appear jumpier because each frame is being displayed for too much time, even though when set correctly it would be a much smoother animation.

Link to comment
Share on other sites

Do you calculate it or guess? I believe frametime units are milliseconds so an animation with 20 frames would take one second to display with a frametime of 50 which sounds about right for the kneeling animations. All you need to know is the duration of your animation divided by how many frames you have to get your new frametime. Of course I could be wrong on the milliseconds...

Link to comment
Share on other sites

I didn't know the unit of measurement - I went looking for any online documentation, and for any forums where others might have used Playground, but I had no idea what the unit of measurement was, or what it even meant (I had first thought it specified how many frames there were going to be!), so I guessed.

Link to comment
Share on other sites

While I'm still working on the spritesheets, I thought I might discuss what the stats for the armour will be. I've discussed this before, but after a lot of testing with mock ups, I've come to the following conculsions regarding Prophet armour. I've also decided that this going to be CE-only, as I can take advantage of the CE extensions without having to worry how it'll affect vanilla, so I've gone for the following layout:

  <Armour name="armour.prophet"><Resistance kinetic="35" energy="30" chemical="30" incendiary="35" /><VisualParams range="22" coneAngle="180" nightRangeBonus="5" /><PsionicDefence defence="0" points="0" degradation="0" /><reflexesBoost>15</reflexesBoost>  <Props moveSpeed="300" stairsMoveSpeed="180" vaultMoveSpeed="24" /></Armour>

Let me take you through it.

The armour rating is worse than Buzzard, but better than Jackal. A plasma rifle will do a minimum of 30pts of damage to a Prophet operator, so even a single shot can be deadly. I've deliberately made it's energy defence 12 pts less than Wolf, because of the sight distance. I've found a sight distance of 22 combined with a 180 degree cone gives tremendous advantage on the battlefield. I firmly believe that on most maps, sight is actually more important than cover or armour and the Prophet gives you sight in spades. It also makes night missions so much easier, both with the reduced natural sight and the improved night range. That's why I haven't gone for an improved accuracy. I found that soliders in Prophets armed with a sniper rifle and an accuracy boost would utterly demolish the opposition. However, a reflex boost make Prophets a reliable form of early defence.

Now, you don't get the opportunity to have Prophets until Landing Ships, when you already have Buzzards and Wolves, so I've reviewed the cost of a Prophet, and I've considered the following:

   <Row>   <Cell><Data ss:Type="String">ManTech.Prophet</Data></Cell>   <Cell><Data ss:Type="String">Armour</Data></Cell>   <Cell><Data ss:Type="Number">60</Data></Cell>   <Cell><Data ss:Type="Number">50000</Data></Cell>   <Cell><Data ss:Type="String">4xItems.Alienalloys;1xItems.Alenium</Data></Cell>   <Cell ss:Index="8"><Data ss:Type="String">StockItem( "armour.predator" );</Data></Cell>  </Row>

Prophets are great, but if you want to scout you can build a suit of Buzzard armour and have that floating about. With the LOS fixes (thanks llunak!) there's more reason than ever to have a Buzzard. So I reduced the barriers to entry - I had previously jacked the cost all the way up to 90000, but that's ludicurous, given that even Sentinel armour is only 60,000! So, that's gone down to 10,000 more than Wolf or Buzzard, and I might even reduce that further.

Link to comment
Share on other sites

Update: Still working on the spritesheets. I'm now working on the second-to-last set of spritesheets - crouching injured, death, standing single and burst fire. After that there's the crouching single a burst shot animations, then the standing/crouching idle shots. I figure it's going to take the weekend and probably up to Wednesday of next week to do it all, then I have the animations for a single weapon. :( . In total, I'm guessing it's going to take a month to do the non-shield animations. I'm looking into finding mouse/keyboard automation software, because there's still so much to automate.

Anyway, here's a quick shot of what they'll look like.

testdeathshoot_zpsc9487af8.gif

Edited by Max_Caine
Link to comment
Share on other sites

Shit, that's an insane amount of work you got to work on there. A shame that we couldn't divide the animations to weapons and the character. Cometothinkofit, is it really possible to do something like that? Like say, get a sprite with animations but without the weapon, and have them photoshopped or some other texture editing program and separate them in layers, so we can fit in weapons of our own in between?

By this theory, it would be pragmatically impossible to get the weapon animation into the sprite due to the 3D render of said characters and by the recent sprite you just released, the weapon is tugged around in a 3D position. So what I think could be possible is only model 3d weapons and animate them in the 3D engine, before slotting in the weapon animation files in between the character sprite layer in photoshop. Still will have alot of work needed to be done to refit the new weapon inside though.

Just throwing ideas here.

Link to comment
Share on other sites

The hardest thing to do isn't the rendering, or the post-processing, or even the spritesheet stuffing. It's the spectres. The last render I did was 250 frames from eight orthographic cameras, which took about 2 1/2 hours. Those 250 frames covered the four previous scenes I mentioned. But, because I can't work out why TexturePacker won't use the custom exporter I made I have to use the generic XML exporter then adjust spectres to fit. That's what takes ages. However, I've noticed that if I get the basic set of weapons done I can then C&P the spectres for every other tier which will cut down on the amount of work that needs doing. I honestly have no idea why TexturePacker isn't displaying the custom exporter, and there isn't a TexturePacker Community that I can ask questions of.

But your question has already been asked, and no, that's not how Playground SDK works.

EDIT: Of course, it would be way easier if I had Playground's flimstrip tool, but good luck finding that!

Edited by Max_Caine
Link to comment
Share on other sites

Ok, even as a Texture artist, my brain just got nuclear-melted from the level of jargon you just said. :confused:

I persume from what you've just said, that texturepacker is the solution to solve all of the worlds problem, but unfortunately if frowned down upon Xenonauts and thus it's a big climb back to manual XML editing, right? And that reverse engineering through manipulating the sprites directly isn't going to work for playground SDK. Even if someone tried to do it, there is alot of trial and error far more to troubleshoot than rendering it on 3D

So we can't exactly make new groundcombat weapons for the characters to hold unless we have the models from the devs themselves, but I think I answered my next question.

Pardon me If I sound jarred, as just venturing into modding for the 2.5D games it feels woefully different than the 3D games.

Link to comment
Share on other sites

Sorry, let me try again.

Right, seeing as you've made 3 tanks for Xeno, you're already aware how sprites are made for Xenonauts. The process for making a solider animation spritesheet is somewhat more extended. Thusly:

1) Render out all frames from selected animation in a PNG format with a 480x480 size. The number of frames in an animation can vary, from 10 frames in an injured animation, to 40-50 in a death or shooting animation.

2) Post-process the 480x480 frames. This means add a 3 pixel black outline, and shrink the frame to 120x120, which is the preferred size for all solider animation frames in Xenonauts. Chris gave me a Photoshop droplet which works in Photoshop CS6 to do this automatically.

3) Create the spritesheet and the accompanying reference file. The spritesheet will have all the appropriate frame of animation. The reference file will tell the game the order in which to select frames from the spritesheet and where those frames on the spritesheet can be found. This is because to minimise space used spritesheet creation programs usually stuff the sprites in "best fit" rather than "order of sprite".

TexturePacker creates the spritesheet, and creates the appropriate reference file. It has a variety of reference file formats, for a large number of sprite-using programs. However, it does not have a Playground SDK (the engine that was used to make Xenonauts) format. This should be easily overcome, as you can make custom formats. However, I've tried and I can't work out why TexturePacker isn't using my customised for-Xenonauts format when making the reference file. So I get a file like this:

<?xml version="1.0" encoding="UTF-8"?><!-- Created with TexturePacker http://www.codeandweb.com/texturepacker--><!-- $TexturePacker:SmartUpdate:14a5af5b7641899ded04bb9f15cb67dd:13264fb5519e4d2886722bc093401828:1b4f8f135b5fca83240ae7d251af57c6$ --><!--Format:n  => name of the spritex  => sprite x pos in texturey  => sprite y pos in texturew  => sprite width (may be trimmed)h  => sprite height (may be trimmed)pX => x pos of the pivot point (relative to sprite width)pY => y pos of the pivot point (relative to sprite height)oX => sprite's x-corner offset (only available if trimmed)oY => sprite's y-corner offset (only available if trimmed)oW => sprite's original width (only available if trimmed)oH => sprite's original height (only available if trimmed)r => 'y' only set if sprite is rotated--><TextureAtlas imagePath="death_nw.png" width="322" height="498">   <frame  regx="19" regy="67" name="death_E431.png" x="2" y="2" w="48" h="78" pX="0.5" pY="0.5" oX="32" oY="16" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E432.png" x="52" y="2" w="60" h="74" pX="0.5" pY="0.5" oX="20" oY="21" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E433.png" x="114" y="2" w="52" h="66" pX="0.5" pY="0.5" oX="29" oY="29" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E434.png" x="168" y="2" w="48" h="64" pX="0.5" pY="0.5" oX="34" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E435.png" x="218" y="2" w="44" h="70" pX="0.5" pY="0.5" oX="38" oY="33" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E436.png" x="264" y="2" w="44" h="76" pX="0.5" pY="0.5" oX="37" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E437.png" x="2" y="82" w="44" h="76" pX="0.5" pY="0.5" oX="37" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E438.png" x="48" y="82" w="44" h="76" pX="0.5" pY="0.5" oX="36" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E439.png" x="94" y="82" w="44" h="76" pX="0.5" pY="0.5" oX="36" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E440.png" x="140" y="82" w="44" h="76" pX="0.5" pY="0.5" oX="36" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E441.png" x="186" y="82" w="42" h="76" pX="0.5" pY="0.5" oX="38" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E442.png" x="230" y="82" w="42" h="76" pX="0.5" pY="0.5" oX="38" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E443.png" x="274" y="82" w="40" h="76" pX="0.5" pY="0.5" oX="40" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E444.png" x="2" y="160" w="40" h="76" pX="0.5" pY="0.5" oX="41" oY="32" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E445.png" x="44" y="160" w="40" h="74" pX="0.5" pY="0.5" oX="41" oY="33" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E446.png" x="86" y="160" w="40" h="74" pX="0.5" pY="0.5" oX="41" oY="33" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E447.png" x="128" y="160" w="42" h="70" pX="0.5" pY="0.5" oX="39" oY="37" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E448.png" x="172" y="160" w="44" h="66" pX="0.5" pY="0.5" oX="39" oY="41" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E449.png" x="218" y="160" w="48" h="62" pX="0.5" pY="0.5" oX="37" oY="45" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E450.png" x="268" y="160" w="52" h="62" pX="0.5" pY="0.5" oX="36" oY="45" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E451.png" x="2" y="238" w="52" h="60" pX="0.5" pY="0.5" oX="36" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E452.png" x="56" y="238" w="50" h="60" pX="0.5" pY="0.5" oX="37" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E453.png" x="108" y="238" w="50" h="60" pX="0.5" pY="0.5" oX="37" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E454.png" x="160" y="238" w="50" h="60" pX="0.5" pY="0.5" oX="37" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E455.png" x="212" y="238" w="50" h="60" pX="0.5" pY="0.5" oX="37" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E456.png" x="264" y="238" w="50" h="60" pX="0.5" pY="0.5" oX="37" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E457.png" x="2" y="300" w="52" h="60" pX="0.5" pY="0.5" oX="36" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E458.png" x="56" y="300" w="52" h="60" pX="0.5" pY="0.5" oX="36" oY="47" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E459.png" x="110" y="300" w="52" h="64" pX="0.5" pY="0.5" oX="36" oY="43" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E460.png" x="164" y="300" w="50" h="66" pX="0.5" pY="0.5" oX="37" oY="41" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E461.png" x="216" y="300" w="54" h="68" pX="0.5" pY="0.5" oX="33" oY="39" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E462.png" x="2" y="370" w="60" h="68" pX="0.5" pY="0.5" oX="27" oY="39" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E463.png" x="64" y="370" w="64" h="66" pX="0.5" pY="0.5" oX="23" oY="41" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E464.png" x="130" y="370" w="68" h="62" pX="0.5" pY="0.5" oX="19" oY="45" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E465.png" x="200" y="370" w="70" h="58" pX="0.5" pY="0.5" oX="17" oY="49" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E466.png" x="2" y="440" w="68" h="56" pX="0.5" pY="0.5" oX="19" oY="51" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E467.png" x="72" y="440" w="66" h="50" pX="0.5" pY="0.5" oX="21" oY="56" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E468.png" x="140" y="440" w="62" h="46" pX="0.5" pY="0.5" oX="25" oY="60" oW="120" oH="120"/>   <frame  regx="19" regy="67" name="death_E469.png" x="204" y="440" w="60" h="44" pX="0.5" pY="0.5" oX="27" oY="62" oW="120" oH="120"/></TextureAtlas

And have to turn it into a file like this:

<?xml version="1.0"?><!DOCTYPE sequence SYSTEM "sidewalkdtd"><sequence name="death_e.xml" source="./death_E*.png"> <img regx="60" regy="88" name="death_e" savedname="death_e.png" w="0" h="0"/> <framelist>     <frame  regx="19" regy="68" name="death_E001.png" x="2" y="2" w="60" h="78" />   <frame  regx="20" regy="72" name="death_E002.png" x="64" y="2" w="46" h="82" />   <frame  regx="34" regy="74" name="death_E003.png" x="112" y="2" w="40" h="84" />   <frame  regx="38" regy="74" name="death_E004.png" x="154" y="2" w="38" h="82" />   <frame  regx="41" regy="74" name="death_E005.png" x="194" y="2" w="28" h="84" />   <frame  regx="42" regy="74" name="death_E006.png" x="224" y="2" w="28" h="84" />   <frame  regx="41" regy="74" name="death_E007.png" x="254" y="2" w="28" h="84" />   <frame  regx="40" regy="74" name="death_E008.png" x="284" y="2" w="30" h="82" />   <frame  regx="39" regy="73" name="death_E009.png" x="2" y="88" w="28" h="82" />   <frame  regx="38" regy="73" name="death_E010.png" x="32" y="88" w="28" h="80" />   <frame  regx="38" regy="73" name="death_E011.png" x="62" y="88" w="28" h="80" />   <frame  regx="38" regy="72" name="death_E012.png" x="92" y="88" w="26" h="80" />   <frame  regx="38" regy="70" name="death_E013.png" x="120" y="88" w="26" h="78" />   <frame  regx="37" regy="69" name="death_E014.png" x="148" y="88" w="28" h="76" />   <frame  regx="37" regy="68" name="death_E015.png" x="178" y="88" w="28" h="76" />   <frame  regx="36" regy="67" name="death_E016.png" x="208" y="88" w="28" h="74" />   <frame  regx="35" regy="63" name="death_E017.png" x="238" y="88" w="30" h="70" />   <frame  regx="33" regy="59" name="death_E018.png" x="270" y="88" w="30" h="66" />   <frame  regx="36" regy="56" name="death_E019.png" x="2" y="172" w="34" h="64" />   <frame  regx="38" regy="54" name="death_E020.png" x="38" y="172" w="36" h="60" />   <frame  regx="38" regy="53" name="death_E021.png" x="76" y="172" w="36" h="60" />   <frame  regx="38" regy="53" name="death_E022.png" x="114" y="172" w="36" h="60" />   <frame  regx="38" regy="54" name="death_E023.png" x="152" y="172" w="36" h="60" />   <frame  regx="38" regy="54" name="death_E024.png" x="190" y="172" w="36" h="60" />   <frame  regx="38" regy="54" name="death_E025.png" x="228" y="172" w="36" h="62" />   <frame  regx="38" regy="55" name="death_E026.png" x="266" y="172" w="36" h="62" />   <frame  regx="38" regy="55" name="death_E027.png" x="2" y="238" w="36" h="62" />   <frame  regx="38" regy="56" name="death_E028.png" x="40" y="238" w="38" h="62" />   <frame  regx="39" regy="56" name="death_E029.png" x="80" y="238" w="42" h="62" />   <frame  regx="39" regy="55" name="death_E030.png" x="124" y="238" w="50" h="60" />   <frame  regx="39" regy="54" name="death_E031.png" x="176" y="238" w="58" h="58" />   <frame  regx="39" regy="52" name="death_E032.png" x="236" y="238" w="64" h="58" />   <frame  regx="40" regy="50" name="death_E033.png" x="2" y="302" w="68" h="54" />   <frame  regx="40" regy="48" name="death_E034.png" x="72" y="302" w="72" h="52" />   <frame  regx="41" regy="43" name="death_E035.png" x="146" y="302" w="74" h="48" />   <frame  regx="41" regy="39" name="death_E036.png" x="222" y="302" w="76" h="46" />   <frame  regx="41" regy="31" name="death_E037.png" x="2" y="358" w="78" h="36" />   <frame  regx="42" regy="22" name="death_E038.png" x="82" y="358" w="78" h="28" />   <frame  regx="42" regy="19" name="death_E039.png" x="162" y="358" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E040.png" x="240" y="358" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E041.png" x="2" y="396" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E042.png" x="80" y="396" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E043.png" x="158" y="396" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E044.png" x="236" y="396" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E045.png" x="2" y="424" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E046.png" x="80" y="424" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E047.png" x="158" y="424" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E048.png" x="236" y="424" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E049.png" x="2" y="452" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E050.png" x="80" y="452" w="76" h="26" />   <frame  regx="42" regy="19" name="death_E051.png" x="158" y="452" w="78" h="28" />   <frame  regx="42" regy="19" name="death_E052.png" x="238" y="452" w="78" h="28" />   <frame  regx="42" regy="19" name="death_E053.png" x="2" y="482" w="78" h="28" />   <frame  regx="42" regy="19" name="death_E054.png" x="82" y="482" w="78" h="28" />   <frame  regx="42" regy="19" name="death_E055.png" x="162" y="482" w="80" h="28" /></framelist></sequence><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" />       <keyframe frame="31" />       <keyframe frame="32" />       <keyframe frame="33" />       <keyframe frame="34" />       <keyframe frame="35" />       <keyframe frame="36" />       <keyframe frame="37" />       <keyframe frame="38" />       <keyframe frame="39" />       <keyframe frame="40" />       <keyframe frame="41" />       <keyframe frame="42" />       <keyframe frame="43" />       <keyframe frame="44" />       <keyframe frame="45" />       <keyframe frame="46" />       <keyframe frame="47" />       <keyframe frame="48" />       <keyframe frame="49" />       <keyframe frame="50" />   </timeline></sequence>

Which involves a lot of tedious to-ing and fro-ing. Revising the spectres is the biggest time sink, tbh. I've automated quite a lot of it now, and I hope to automate the rest so all I have to do is a final check through.

Now, making the body separate to the weapon was already suggested several times during development. This was shot down for technical reasons, and having done this, I can see why. The game is stuck in that if you want to make a new weapon, and have the model hold it, then yes, you need the model from the dev or if you can work out an effective way of erasing a weapon and replacng it, then you'd be a hero.

EDIT: As a very old (and now very distant) friend once said to me. "Wah lau, eh! The game better wake up its idea!"

Edited by Max_Caine
Link to comment
Share on other sites

Either you have a taste of my local culture from the net or we are really living in a small world.

Well vehicles were the easiest so taking a pot-shot at it wasn't so hard actually. My works require absolutely no animation at all and the spectres (if thats what you called it) were fairly straightforward. But *whistle* seems 100 times more hefty than what I have done, literally. You sure you've taken your own anti-depressants?

Jokes aside, I don't think the devs will be able to part with their 3D models, but if 1)they could possibly make the non-weapon versions of the sprites and release it for us, that would be the first step. What I think could next be possible is to have some sort of 2)animation program(flash?) to play the animation of the weapon held in hand, than try to animate the weapon in 2D and follow that tracked weapon. Then 3) separate part of the sprite obscuring the weapon into a different layer to overlap the 2D weapon animation.

4)That would be the case, but again it will generate new issues of it's own.

Yeah, it's the wee hours for me, so I am thinking out loud.

Edited by LordJulian
Link to comment
Share on other sites

Like I said, a very old, and now very distant friend from an earlier era. He sent me both Neil Humphries books, and taught me how to talk cock a little. I've got to say, Chris was very kind to me - not only did he let me have the droplet, but he let me have access to most of the weapon models. I'm not sure how far his largesse extends.

Edited by Max_Caine
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...