Jump to content

Krane is sort of broken


MF99K

Recommended Posts

@Ipsquiggle or @PeterA

Could you clarify what is the meaning of there being more than one animation with the same name within a single animation bank? For example, this is the list of duplicate anims (this is krane's output) for @Kzisor's example, the "wall" animation bank:

 

Duplicate anim 'fullA' in bank 'wall'
Duplicate anim 'fullA_hit' in bank 'wall'
Duplicate anim 'fullB' in bank 'wall'
Duplicate anim 'fullB_hit' in bank 'wall'
Duplicate anim 'fullC' in bank 'wall'
Duplicate anim 'fullC_hit' in bank 'wall'
Duplicate anim 'threequarter' in bank 'wall'
Duplicate anim 'threequarter_hit' in bank 'wall'
Duplicate anim 'half' in bank 'wall'
Duplicate anim 'half_hit' in bank 'wall'
Duplicate anim 'onequarter' in bank 'wall'
Duplicate anim 'onequarter_hit' in bank 'wall'
Duplicate anim 'broken' in bank 'wall'

 

In any case, @Kzisor, I made duplicate anims a warning instead of an error. The behavior set is that the last animation with a given name will overwrite the previous ones. Whether that is the correct behavior depends on the feedback I get from the question above. I pushed the changes as version 4.3.1 to GitHub. I'll upload it to the forums soon.

Link to comment
Share on other sites

@bizziboi, sorry for not mentioning you before, but if you do happen to know the answer to the question I asked Ipsquiggle and PeterA in my previous post, I'd be quite grateful if you could share it.

 

@Kzisor, I posted version 4.3.1 of the ktools to the forums. The changes are what I had mentioned before: duplicate anims within an animation bank have been demoted to a warning from a fatal error, with the semantics that the last animation with a given id overwrites the previous ones. I'm still waiting on an official response on what the correct semantics would be.

Link to comment
Share on other sites

  • Developer

@simplex It might have something to do with the way the 8-way animations are being handled? For example, the anim contains both fullA_hit_90s and fullA_hit_45s, which get compiled down to fullA_hit with different facing flags set. (This is the same as run_side and run_down both becoming run with different direction flags.) The _90s and _45s suffixes are a recent-ish feature.

Edit: Just got a better grasp of the context here. I don't recall if the data you're working with is aware of suffixes anymore, but nonetheless: In the same way that most character/creature animations have multiple anims of the same name, separated by direction flags, walls now have this also. However, their flags will be different than the ones typically used by characters (because charcaters were 4-facing and walls are 8-facing). To test this theory: Are there any problems with decompiling the beefalo? They are 6-facing now, and should also be using these extended flags.

Link to comment
Share on other sites

21 minutes ago, Ipsquiggle said:

@simplex It might have something to do with the way the 8-way animations are being handled? For example, the anim contains both fullA_hit_90s and fullA_hit_45s, which get compiled down to fullA_hit with different facing flags set. (This is the same as run_side and run_down both becoming run with different direction flags.) The _90s and _45s suffixes are a recent-ish feature.

Edit: Just got a better grasp of the context here. I don't recall if the data you're working with is aware of suffixes anymore, but nonetheless: In the same way that most character/creature animations have multiple anims of the same name, separated by direction flags, walls now have this also. However, their flags will be different than the ones typically used by characters (because charcaters were 4-facing and walls are 8-facing). To test this theory: Are there any problems with decompiling the beefalo? They are 6-facing now, and should also be using these extended flags.

That settles my question perfectly, thank you.

My code does handle the traditional '_facing' suffixes, but not the newer '_rotation' ones (they must have been introduced while I was away from Don't Starve modding). I'll update the code accordingly.

Link to comment
Share on other sites

  • Developer

For what it's worth, this is the relevant part from the most up-to-date facing code from the build tools:


FACING_RIGHT = 1<<0
FACING_UP = 1<<1
FACING_LEFT = 1<<2
FACING_DOWN = 1<<3
FACING_UPRIGHT = 1<<4
FACING_UPLEFT = 1<<5
FACING_DOWNRIGHT = 1<<6
FACING_DOWNLEFT = 1<<7

#...

def ExportAnim(endianstring, xmlstr, outzip, ignore_exceptions):
    #...
        
        dirs = (re.search("(.*)_up\Z", name),
                re.search("(.*)_down\Z", name),
                re.search("(.*)_side\Z", name),
                re.search("(.*)_left\Z", name),
                re.search("(.*)_right\Z", name),
                re.search("(.*)_upside\Z", name),
                re.search("(.*)_downside\Z", name),
                re.search("(.*)_upleft\Z", name),
                re.search("(.*)_upright\Z", name),
                re.search("(.*)_downleft\Z", name),
                re.search("(.*)_downright\Z", name),
                re.search("(.*)_45s\Z", name),
                re.search("(.*)_90s\Z", name))
        
        facingbyte = FACING_RIGHT | FACING_LEFT | FACING_UP | FACING_DOWN | FACING_UPLEFT | FACING_UPRIGHT | FACING_DOWNLEFT | FACING_DOWNRIGHT
        
        if dirs[0]:
            name = dirs[0].group(1)
            facingbyte = FACING_UP
        elif dirs[1]:
            name = dirs[1].group(1)
            facingbyte = FACING_DOWN
        elif dirs[2]:
            name = dirs[2].group(1)
            facingbyte = FACING_LEFT | FACING_RIGHT
        elif dirs[3]:
            name = dirs[3].group(1)
            facingbyte = FACING_LEFT
        elif dirs[4]:
            name = dirs[4].group(1)
            facingbyte = FACING_RIGHT
        elif dirs[5]:
            name = dirs[5].group(1)
            facingbyte = FACING_UPLEFT | FACING_UPRIGHT
        elif dirs[6]:
            name = dirs[6].group(1)
            facingbyte = FACING_DOWNLEFT | FACING_DOWNRIGHT
        elif dirs[7]:
            name = dirs[7].group(1)
            facingbyte = FACING_UPLEFT
        elif dirs[8]:
            name = dirs[8].group(1)
            facingbyte = FACING_UPRIGHT
        elif dirs[9]:
            name = dirs[9].group(1)
            facingbyte = FACING_DOWNLEFT
        elif dirs[10]:
            name = dirs[10].group(1)
            facingbyte = FACING_DOWNRIGHT
        elif dirs[11]:
            name = dirs[11].group(1)
            facingbyte = FACING_UPLEFT | FACING_UPRIGHT | FACING_DOWNLEFT | FACING_DOWNRIGHT
        elif dirs[12]:
            name = dirs[12].group(1)
            facingbyte = FACING_UP | FACING_DOWN | FACING_LEFT | FACING_RIGHT

 

Link to comment
Share on other sites

  • Developer
On 3/25/2016 at 3:38 PM, simplex said:

I noticed the buildanimation.py included with the mod tools (Steam or GitHub versions) does not include the newer logic for animations with the extra facing directions. For what is worth, I included support for them (in the buildanimation.py script itself) in my fork of the mod tools.

Good to know @simplex. You're correct we haven't updated the python code yet, as it contains some other code we're not ready to release yet.

Link to comment
Share on other sites

17 minutes ago, PeterA said:

Good to know @simplex. You're correct we haven't updated the python code yet, as it contains some other code we're not ready to release yet.

I submitted a pull request from my fork of the mod tools. I explain further the changes in my 5 commits ahead of upstream in the pull request, but most importantly the changes fix clickbox calculation in the scml compiler and add support for animations with 5 or more facing directions.

 

EDIT: Though I haven't tested if the recent changes broke any compilation steps under Windows; checking if there aren't any path or similar issues under non-Linux platforms is still necessary.

Link to comment
Share on other sites

Actually I reported the 8 faced issue like 5 months ago and several times, as well as the lack of the 8 faced animation support in the autocompiler but got ignored each time.

Anyway thanks for this amazing tool and for the fix.

EDIT: Actually 7 months ago almost to the day. First report is 21th of August 2015 on ktools download page

Link to comment
Share on other sites

1 hour ago, mf99k said:

there were two when I looked

Oh my. One is clearly marked -source, the other -win32. Also read this section of the description:

Quote

ktools primary release format is as source code, compilable under every platform using CMake, as per the instructions in the README. A Windows binary release is also included (the ZIP ending with "-win32").

 

Link to comment
Share on other sites

20 minutes ago, Muche said:

Oh my. One is clearly marked -source, the other -win32. Also read this section of the description:

 

I know, I downloaded the correct one. I just wanted to make sure I wasn't doing something wrong. Better safe than sorry.

Link to comment
Share on other sites

10 hours ago, mf99k said:

I know, I downloaded the correct one. I just wanted to make sure I wasn't doing something wrong. Better safe than sorry.

No problem. I just found it somewhat odd that you still hadn't downloaded it given you helped me fix previous issues and release the newer versions in the first place.

Link to comment
Share on other sites

3 hours ago, simplex said:

No problem. I just found it somewhat odd that you still hadn't downloaded it given you helped me fix previous issues and release the newer versions in the first place.

I hadn't had a chance yet, I've been overwhelmed with school projects lately

Link to comment
Share on other sites

If you type the command 'dir' from the same folder, are anim.bin and build.bin listed in the output?

Sorry for asking you to perform such simple checks, I'm just puzzled about the issue since the path/filesystem related code hasn't changed in ages, so I'd just like to discard anything obvious first.

@SageOfLegend

Try the command 'krane . whandler_beard'. This is an alternate syntax (and the one I personally use) where the folder where the anim.bin and build.bin are located is given instead of their paths directly.

I'm afraid that results in the same issue.

 

 

krane-errors4.png

Link to comment
Share on other sites

3 minutes ago, SageOfLegend said:

I'm afraid that results in the same issue.

I just booted into Windows to double check (since it was working fine on Linux on my end), and I really can't reproduce your issue.

Though, looking at your previous screenshot... why is there a cmd.exe file in the ktools-4.4.4 folder? Does anything change if you run the regular, system cmd.exe? To start it, press Win+R and enter "cmd" in the "Run" prompt that appears ("Win" stands for the Windows key, between Ctrl and Alt).

Link to comment
Share on other sites

@simplex

Running cmd in the same folder has the same effect as running cmd using the Windows key/Run prompt and using "cd" to navigate to the folder. I was testing these issues the way you suggested initially and had the same results. I placed the cmd file in there 1. to see if it would randomly fix it and 2. to save the time of typing in the "cd" command every time I tried something new.

I know that some people are having this issue and some aren't, and that it can work at first and then stop working for some people, and work just fine for others. It may be difficult to replicate for yourself!

Link to comment
Share on other sites

13 minutes ago, SageOfLegend said:

@simplex

Running cmd in the same folder has the same effect as running cmd using the Windows key/Run prompt and using "cd" to navigate to the folder. I was testing these issues the way you suggested initially and had the same results. I placed the cmd file in there 1. to see if it would randomly fix it and 2. to save the time of typing in the "cd" command every time I tried something new.

I know that some people are having this issue and some aren't, and that it can work at first and then stop working for some people, and work just fine for others. It may be difficult to replicate for yourself!

Can you confirm the 32 bit MSVC2013 redistributable package is indeed installed on your system (the vcredist_x86.exe file from here)?

If that fails, could you try running cmd.exe as administrator, just to make sure this isn't due to permission issues on the input files?

And finally, if all else fails, could you zip up and upload the whole ktools-4.4.4 folder as it is on your system, with the input files in it?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...