Jump to content

Recommended Posts

I.     Introduction

As we all know, Don't Starve(DS) and Don't Starve Together(DST) animations are composed of 3 parts, each being separated: anim.bin, build.bin and atlas-0.tex.

But it is very usual than the layers in anim.bin does not match those in build.bin and atlas-0.tex. While there is no immediate tool to solve this problem, there are two indirect methods.

II.     Tools

1.autocompiler.exe

It can be found in Don't Starve Mod Tools. You can find it in Steam's library or Github (maybe not up to date) or this forums.

All other tools can be found here (my platform is Windows 10 x64, I have only tested them myself): https://forums.kleientertainment.com/forums/topic/142963-tool-some-animation-tools

2.Klei Anim

You need animc.exe and animd.exe. There is an alternative in case you can't run the two applications. For decompiling, use python2 script deanim.py and debuild.py. For compiling, use enanim.py. However, the author of these scripts did not write a compiler for build.xml, the work is then done by buildanimation.py at C:\Steam\steamapps\common\Don't Starve Mod Tools\mod_tools\tools\scripts\.

Python2 is already included in Don't Starve Mod Tools.

3.Notepad

A text editor of any kind, like Notepad++, Notepad3, VS Code.

4.Ktools

You need krane.exe to extract animation.

5.TEX tool or something that can view atlas-0.tex, not necessary.

6.Spriter

III.        Find Files

In DST, most animation files are in C:\Steam\steamapps\common\Don't Starve Together\data\anim\, the same with DS.

There are two exceptions with DST, DLC contents go to \anim\dynamic\ and \databundles\anim_dynamic.zip\anim\dynamic\. Most DLC contents are encrypted into an unextractable file *.dyn, but non-DLC contents are just an archive renamed to  *.dyn. Therefore, wilson.dyn(aka. wilson.zip) can be extracted into some atlas-0.tex while wanda.dyn can't.

There are some simple rules to name a file. The most obvious way to name a file is to name it the same as its prefab, like spider.zip. Next there can be some suffix like spider_basic.zip, spider_build.zip, spider_wolf_build.zip. Otherwise you can just open scripts\prefabs\*.lua to see how many animation files are registered, and the same with every other related prefabs. This may not be enough sometimes.

IV.         Decompile build.bin

Extract each of *.zip to a folder, for each build.bin, decompile it into build.xml. Open build.xml and you see a lot of <Symbol> like

Quote

  <Symbol name="swap_object">

    <Frame framenum="0" duration="3" x="9.25" y="-48.2999992" w="73" h="306" />

    <Frame framenum="5" duration="1" x="6.89081717" y="-55.9839592" w="59" h="236" />

    <Frame framenum="6" duration="1" x="17.0354004" y="-54.4175987" w="85" h="263" />

    <Frame framenum="7" duration="1" x="18.125" y="-53.375" w="104" h="259" />

    <Frame framenum="8" duration="1" x="7.08941984" y="-131.259201" w="112" h="288" />

  </Symbol>

Your task is to collect these <Symbol> from all the build.xml. If <Symbol> name collides, you can decide on your own which image you want to see according to those atlas-0.tex.

Say you get a new build.xml loaded with all <Symbol>, and a <Atlas name="atlas-0.tex" />(This is required for krane.exe to proceed without error). Compile this xml into bin file. Now you get a new build.bin. If you use animc.exe just compile it together with any anim.xml. If you use buildanimation.py, make sure you do it correctly because I didn't try that way.

V.   Extract Images

krane.exe demands anim.bin, build.bin and atlas-0.tex, so you need to fulfill it in order to get all images. The only thing you need to ensure is that anim.bin covers all layers in build.bin. Any of such anim.bin is capable. Or you can easily decompile and edit anim.xml and compile to create one.

Say you have every atlas extracted. Now gather all image folders.

VI.         Extract Animation

krane.exe demands anim.bin, build.bin and atlas-0.tex, so you need to fulfill it in order to get all animations. Use new build.bin that contains all layers. Use any atlas-0.tex.

Say you get many *.scml, gather them (and rename them).

VII.      Clean Workspace

In the above two steps krane.exe has generated many unwanted files. Just delete them.

VIII.   View them in Spriter

Open *.scml in Spriter.This is the result of Nostalgiac Wendy+Wigfrid Hat+Spear+Snurtle Armor+...

 

Method2:

IV.         Extract Image

krane.exe demands anim.bin, build.bin and atlas-0.tex, so you need to fulfill it in order to get all animations. The only thing you need to ensure is that anim.bin covers all layers in build.bin. Any of such anim.bin is capable. Or you can easily decompile and edit anim.xml and compile to create one.

V.   Gather Images

Say you have many Spriter projects, open *.scml and gather <folder>. If folder name collides, you can decide on your own which image you want to see according to those images. Make sure <folder>'s id is unique. Meanwhile, gather images according to folder name.

VI.         Compile to build.bin

Say you have a scml file with all folders included. Use autocompiler.exe to compile the Spriter project into a zip with anim.bin, build.bin and atlas-0.tex.

VII.      Extract Animation

The new build.bin and atlas-0.tex contains all layers. Use them to extract anim.bin via krane.exe.

VIII.   View them in Spriter

Open *.scml in Spriter.

  • Like 2
  • Thanks 1
3 hours ago, Nolli_Ds said:

Hello i extract nightmarefuel from game and when i downoload the gif its all black not transparent what can i do?

The transparency is written in code, not animation.

    inst.AnimState:SetMultColour(1, 1, 1, 0.5)

This is a gem thank you for the comprehensive breakdown. By chance, can this process be used to extract ONI and Rotwood animations as well? I’ve decided not to continue waiting on klei to release a Rotwood Press Kit to their official website and have been compiling one of my own for the wiki, this described process would prove incredibly useful towards my goal if it is indeed backcompatable. Otherwise is there a separate walkthru you could provide?

thanks again,

mayan

On 11/22/2024 at 6:37 AM, HighFlyinMayan said:

This is a gem thank you for the comprehensive breakdown. By chance, can this process be used to extract ONI and Rotwood animations as well? I’ve decided not to continue waiting on klei to release a Rotwood Press Kit to their official website and have been compiling one of my own for the wiki, this described process would prove incredibly useful towards my goal if it is indeed backcompatable. Otherwise is there a separate walkthru you could provide?

thanks again,

mayan

Rotwood has different organization with binary files. Unfortunately you must change something to decompile rotwood's animations and images. You may want to consult people equipped with the technique of decompilation, aka. who invented ktools, ztools, etc..

  • Like 1
16 hours ago, Rickzzs said:

Rotwood has different organization with binary files. Unfortunately you must change something to decompile rotwood's animations and images. You may want to consult people equipped with the technique of decompilation, aka. who invented ktools, ztools, etc..

Thank you, I've managed to dip the big toe into ONI extractions recently, perhaps this combined with your suggestion will prove a desirable solution

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...