ice-hail
v3.5.0
Published
BotW Collision generator
Downloads
24
Readme
Ice-Hail
Overview
Ice-Hail is a simple CLI tool to create valid Havok Collision data from a JSON definition file. This format is used to define collision for objects, shrines and overworld maps.
In addition to this tool, you can also install a blender add-on to directly export collision. It can be found here: Ice-Hail Blender Add-On
For the newest updates and other tools, check out my youtube channel: HailToDodongo
Installation
Install it globally with yarn or npm with:
npm install -g ice-hail
Note You'll need at least NodeJS 11.6 to use this.
Usage
Ice-Hail comes with three commands: ice-hail-create
, ice-hail-import
and ice-hail-parse
.
Each command can be called without params or with -h
to get a help printed out.
If you are only interested in creating custom shrines, take a look at the Examples section of this readme.
Create
ice-hail-create
is used to create Havok files from a JSON definition.
This will take a JSON as an input and creates a hkrb / hksc collision file.
With the -y
flag it can also be yaz0 compressed.
A few example files can be found in the repo's integration tests at: Test-Files
Example usage:
ice-hail-create test.json
ice-hail-create -y another-test.json compressed-output.shkrb
Import
ice-hail-import
is used to import 3D-Model files.
This will create a JSON file which can then be used to create a havok file.
The reason for creating a JSON is that it can be manually edited before creating a binary file.
Currently it only supports compound shapes (aka shrines and field). An import for normal collision (e.g. actors) will be added later.
Example usage:
ice-hail-import -c testModel.obj
Note You can add the
-p
flag to create a beautified JSON.
Parse [WIP]
The last command, ice-hail-parse
, is used to create a JSON file from a binary havok file.
This can be used to read out any collision file in the game to some degree.
While it can be used to read, edit and then re-create the model again, the reader is still work-in-progress.
So in most cases, re-creating the model will not result in an identical file.
Example usage:
ice-hail-parse TwnObj_SomeNiceFile.hkrb
Note Be sure that the file is not yaz0 encoded.
Examples
Shrines / Overworld
To create collision for custom shrines / overworld, you first need a 3D-Model of the collision as an .OBJ file, let's call it test.obj
.
First, run the import and create command:
ice-hail-import -c test.obj
ice-hail-create -y test.json
Then rename the output test.shksc
file to match the shrine file, which can be found in Physics\StaticCompound\CDungeon
in the dungeon pack.
For overworld exports, you can also specify an offset parameter since the coordinates are absolute:
ice-hail-create --offset 1000,0,1000 test.json
Materials
Ice-Hail currently supports multiple materials, the material being used is set by the object name.
Since Ice-Hail supports multiple objects in one file, you can also mix them.
To use them in JSON or with the blender plugin, put the material name in the object name enclosed in square brackets.
For example, to use Material_Grass
you could name one of your scene object SomeName [Grass]
.
A list of all, and mostly untested, Materials:
- Material_Soil
- Material_Stone
- Material_Sand
- Material_Metal
- Material_WireNet
- Material_Grass
- Material_Wood
- Material_Water
- Material_Snow
- Material_Ice
- Material_Lava
- Material_Bog
- Material_HeavySand
- Material_Cloth
- Material_Glass
- Material_Bone
- Material_Rope
- Material_CharControl
- Material_Ragdoll
- Material_Surfing
- Material_GuardianFoot
- Material_HeavySnow
- Material_Unused0
- Material_LaunchPad
- Material_Conveyer
- Material_Rail
- Material_Grudge
- Material_Meat
- Material_Vegetable
- Material_Bomb
- Material_MagicBall
- Material_Barrier
- Material_AirWall
- Material_Misc
- Material_GrudgeSlow
Taken from: https://zeldamods.org/wiki/Materials
Credits
Ice-Hail code by HailToDodongo (Max Bebök). Ported Yaz0 encoder by Shadsterwolf: BotW-Unpacker
Links and Stuff
Link to the BotW modding discord: https://discord.gg/NzHApcX
For Questions, ask me there (@HailToDodongo).
Disclaimer
This tool was created by reverse-engineering the game and does NOT contain any game files itself. Please also respect hard working game developers and the law. Only use ice-hail with your own games / legally created backups of your games, thank you!