# Tools ## rename_rig_in_glb.py Renames the rig root node in each character GLB to a consistent name (`Character`). This makes all characters share the same skeleton path `Character/Skeleton3D:bone_name`, enabling a shared animation library. ```bash python3 tools/rename_rig_in_glb.py ``` Modifies: `Bob.glb`, `Oldpop.glb`, `Masbro.glb`, `Gatot.glb` - bob-rig → Character - oldpop-rig → Character - masbro-tpose → Character - gatot-tpose → Character Creates `.glb.bak` backups on first run. Re-runnable; restores from backup each time to ensure idempotency. After running, you must reimport in the Godot editor (or via `godot --headless --import`). ## build_animation_pack.gd Headless script that extracts all animations from `animation-0.glb`, applies rest-pose correction against `Bob.glb` (the reference rig), and saves as `assets/characters/animations/animation-pack.res`. ```bash godot --headless --path . --script tools/build_animation_pack.gd ``` Run `rename_rig_in_glb.py` first so the reference skeleton has the expected path. The animation-pack contains 15 animations used by the player: - idle, walk_forward, backflip_1 - take_tile_1, take_tile_2, drop_tile_1, drop_tile_2, spawn_tile_1 - pickup_1, put_1, holding_1 - hit_1, hitted_1, getting_hit_1, stun_1 All tracks use original Blender bone names with path `Character/Skeleton3D:bone_name` so they resolve regardless of which character model is active. ## generate_version_json.py Generates version.json for game update checks.