Skyrim Annotation Tool

Making HKanno easy to work with

Skyrim | March 15, 2023

Thanks to opparco for Hkanno, the software carrying the modding animation scene

FASTER – BETTER – SIMPLER

This tool allows batch dump/update of Skyrim annotations files with presets that can replace, add or remove annotations

It is made to be friendly on user side for mod customization, but also has special features made for mod creation
You can apply changes to a whole folder, customize each animation invidiually or even do both

  • Simplified workflow for manual annotations
  • Automated
    • Annotation Dump (reading the annotations)
    • Annotation Updating
  • Automated with config files
    • Annotation replacer
    • Annotation removal
    • Annotation injection
      • with timing prompt
      • without timing prompt
  • Can operate within any folder
  • Outputs the animations in the same folder as the animations
    • No need to copy paste
  • Outputs the annotations in the same folder as the animations
    • Makes editing way easier

The tool uses presets for automated annotations. It uses a standard Json format explained below. If you’re familiar with it you can skip this step :

Json uses a Key:Value system

{“Key” : ”Value”}

Your file starts with “{“ and ends with “}”

End your file with “}”

Elements must be separated by a coma

{“Key1” : “Value1” , “Key2” : “Value2”} is valid

{“Key1” : “Value1” , “Key2” : “Value2” , } is invalid as there is no element following the “Key2:”Value2”

Insensitive to going back to the line or adding tabulations

The following lines will be read the exact same way

{“Key1”:”Value1”,”Key2”:”Value2”}

{
”Key1” : “Value1”
,
”Key2”:
”Value2”
}

You can “put multiple values” in one Key:Value pair by making the Value an array by putting them inside “[]”:

{ “Key” : [“Value1” , ”Value2” ] }

  • Selecting a preset
    • If a custom preset “Anno_Fast.json” (case sensitive) exists in the folder it will be used by default
    • Else you will be prompted
  • Selecting an animation folder
    • If the tool detects animation files (hkx extension) in the current folder, it will use this folder automatically
    • Else you can indicate it in the Json:
      • ‘”Animations Folder”: “C:/myfolder/myanimationfolder”
    • Else you will be prompted
  • Locating HKanno
    • If “hkanno64.exe” (case sensitive) exists in the current folder it will be used by default
    • Else you can indicate it in the Json
      • ‘”HKanno Path”: “C:/myfolder/hkanno64.exe”‘
    • Else you will be prompted

  • Working on animation “myanim.hkx”
  • Locating annotation file “myanim.txt”
    • if “my anim.txt” is in the same folder
      • replace the annotations inside “myanim.hkx” with the content of “myanim.txt”
      • process the automated annotations (see next step)
    • else
      • dump “myanim.hkx” to get the current annotations inside the file
      • process the automated annotations (see next step)
  • Processing automated annotations
    • Replacing annotations
      • “My old annotation” : “My new annotation”
    • Adding annotations
      • “Add” : [“0.5 Anno to add 1“ , “Anno to add 2“]
        • “Anno to add 2” does not contain a timing
        • You will be prompted to input a timing
    • Removing annotations
      • “Remove” : [“Anno to remove 1” , “Anno to remove 2”]
    • Update the animations
    • Put the updated animation back in the original folder along with the new annotation file

  • 1.0
    • Initial release
  • 1.0.1
    • Fixed issue with script not working after reading the JSON
  • 1.1
    • Complete rewrite
    • Added case insensitivity for animation files
    • Added multithreading (except for dumping as it causes issues)

Example