SidekickStudio
v0.1.2 · Godot 4.4+ · GDScript editor plugin · MIT

Sidekick Studio

Build characters from your own Synty Sidekick packs inside the Godot editor. Import the packs, pick parts slot by slot, shape the body, paint the colours, preview any humanoid animation and export game-ready characters, or build them at runtime in your own game.

FreeOpen source (MIT)Godot 4.4 or newerNo Unity neededUnofficial · no Synty assets included

Overview

Sidekick Studio adds a Sidekick main tab to the Godot editor, next to 2D, 3D and Script. Everything happens there: the left side holds six pages, the right side shows the character live.

Import without Unity

Reads Synty .unitypackage files directly, or a pack folder from a Unity project.

Build

38 part slots, Synty presets, random characters, part size / move / turn, body shapes.

Paint

The 16 × 16 colour regions, click-to-pick on the character, glow, palettes, toon shading.

Animate

Mixamo, Synty / Unreal-mannequin and Godot humanoid clips, retargeted automatically.

Export

A .tscn with one baked mesh (one draw call) or separate parts, your choice of bone names.

Runtime

SidekickCharacter + SidekickRecipe for in-game character creators.

Licensing: Sidekick Studio contains no Synty assets. You need your own Sidekick packs and licence. The parts you import stay in your project: they are yours to use, not to share.

Install

  1. Download SidekickStudio_v0.1.2.zip and unzip it into your Godot project folder. You get addons/sidekick_studio/.
  2. Open Project › Project Settings › Plugins and enable Sidekick Studio.
  3. A Sidekick tab appears at the top of the editor. Open it.
RequirementDetails
Godot4.4 or newer (uses Godot's built-in FBX loader). Tested on 4.7.
RendererForward+ or Compatibility.
Sidekick packsYour own Synty Sidekick packs (the Unity .unitypackage downloads, or their folder in a Unity project).
DiskRoughly 10–15 MB per imported pack.
Updating: replace the addons/sidekick_studio folder with the new one and restart the editor. Your library and recipes are kept.

Quick start

  1. Library: press Import .unitypackage… and pick one or more Sidekick packs. Import the Starter Pack first: it has the base bodies.
  2. Parts: choose a Synty preset in Start from, or press Random. Click a slot, then a part to swap it.
  3. Body and Colours: shape and paint. Click the character to pick the colour under the mouse.
  4. Animation (optional): add a Mixamo or Synty animation file to check the character in motion.
  5. Export: set a name and folder, press Export character. Drag the .tscn into any scene.

Interface

AreaWhat it holds
ToolbarNew (blank or random character), Open…, Save, Save as…, Undo, Redo, the current recipe's file name (• = unsaved changes).
Left pagesLibrary · Parts · Body · Colours · Animation · Export.
PreviewThe character, live. View buttons (Front, Side, Back, Face), Turntable, lighting preset (Studio, Daylight, Night, Flat).
Status lineWhat just happened, warnings in orange, and the import progress bar with Cancel.

Preview controls

ActionMouse / keys
OrbitLeft-drag
Move the view up / downRight-drag or middle-drag
ZoomMouse wheel
Pick a colour (and the part's slot)Left-click on the character
Identify a partHover: the part lights up and shows its slot and name
Undo / RedoCtrl+Z / Ctrl+Shift+Z
Save recipeCtrl+S while the Sidekick tab is open
Tip: the Flat light shows colours exactly as painted. Use it while matching colours, then switch back to Studio.

Library

The library is where your imported Sidekick parts live. The first time you open the Studio it shows an empty page with two buttons.

Importing

ButtonUse it for
Import .unitypackage…The Sidekick downloads as they are (for example SIDEKICK_Fantasy_Skeletons_Unity_2021_3_v1_0_4.unitypackage). Pick several at once. The file is streamed, never unpacked to disk.
Import folder…An unpacked pack, or the pack's folder inside a Unity project (Assets/Synty/…). Subfolders are searched.

What gets imported:

From the packBecomes
SK_<THEME>_<SET>_<NN>_<SLOT>_<SPECIES>.fbxOne part in the library (mesh, its 4 body shapes, skin bound by bone name).
*.sk presetsSynty's ready-made characters: parts + body shape. Listed under Parts › Start from.
T_*ColorMap*.pngColour palettes (Colours page) and the presets' colours.
Everything elseIgnored (Unity prefabs, materials, database, demo scenes).

A pack takes a few seconds. The status line counts the parts; Cancel import stops it (what was imported so far is kept). Pack names are cleaned up automatically: SIDEKICK_SciFi_Robots_Unity_2021_3_v1_0_0 becomes SciFi Robots.

Output warnings: during import Godot may print Can't open file … skeletonTexture_01_nolabel.png. Synty's FBX files point at texture files that aren't in the package. They are harmless: Sidekick Studio paints with its own colour maps.

Your packs

The table lists each pack with its part and preset counts (hover for the source file and import date). Remove deletes the selected pack's parts from the library; you can import it again any time. Importing a pack again updates it.

Library location

Default: res://sidekick_library/. Change… points the Studio at another folder (for example a library shared by several projects on your machine). It is saved in Project Settings › sidekick_studio/library_path.

Keep it private: the library holds Synty's files. Add it to .gitignore if your repository is public (the demo project's .gitignore already does). Exported characters work without it; a SidekickCharacter node that builds characters in-game needs it in your export.

Parts

Start from

Start from lists Synty's presets grouped by pack. Choosing one replaces the character (parts, body shape and colours). Presets whose parts come from a pack you haven't imported load with the parts you have, and the status line says how many are missing. Random builds a full character of one species; when the pack filter below is set, it uses that pack where it can.

Slots

The slot list shows every slot with the part it holds (— = empty). Click a slot to list its parts underneath.

GroupSlots
HeadHead, Hair, Eyebrow L/R, Eye L/R, Ear L/R, Nose, Teeth, Tongue, Facial hair
Upper bodyTorso, Upper arm L/R, Forearm L/R, Hand L/R
Lower bodyHips, Leg L/R, Foot L/R, Wrap
AttachmentsHead gear, Face gear, Back, Shoulder L/R, Elbow L/R, Hips front / back / L / R, Knee L/R

Choosing a part

Tweak the selected part

Size, Move X / Y / Z (metres) and Turn X / Y / Z (degrees) change the selected slot's part around the bone it hangs from, so wings, hats or shoulder pads keep following the animation. Reset part puts it back as made. Tweaks are saved in the recipe and baked into the export.

Body

SliderRange
BuildSkinny (−1) … Heavy (+1)
Body typeMasculine (0) … Feminine (1)
MusclesSoft (0) … Strong (1)

Quick buttons: Default, Slim, Heavy, Athletic. The sliders drive the four blend shapes every Sidekick part has, so clothes and armour follow the body.

A part with its own body shape

Select a part (Parts page, or click it on the character), then tick Give this part its own body shape. The part gets its own three sliders: a bulky coat on a slim body, heavy armour pieces, oversized boots.

Colours

Every Sidekick part is painted from one 32 × 32 colour map made of 256 colour regions (16 × 16). Several parts can share a region: skin, for example, is one region for the head, arms and legs.

ControlWhat it does
Colour regions gridBright squares are used by the current character; dim ones aren't. The selected part's regions are outlined; glowing ones have a dot. Click a square to select it.
Click on the characterSelects the colour under the mouse and that part's slot.
Show only the colours in useHides the unused squares.
Colour pickerRepaints the selected region live (no rebuild).
Glow + colourMakes the region emissive (eyes, visors, runes, lights).
Glow strengthFor the whole character (0–8).
Apply a palette…Repaints everything with a colour map from your packs (palettes and presets).
Make this colour unique to the selected partWhen parts share a region, gives the selected slot's part a free region of its own, so you can colour it separately.
Toon shadingSmooth (0) … Cel (1) lighting on the Sidekick shader.

Animation

Preview your character with real animations. Add animations… takes .glb, .gltf, .fbx, .tscn, .scn or an AnimationLibrary resource, from inside or outside the project. Each file's clips are listed (a single clip is named after its file).

Supported rigs

SourceExample boneNotes
Mixamomixamorig:LeftArmAny prefix (mixamorig1_…) works.
Synty / Unreal mannequinupperarm_lSynty animation packs, UE4/UE5 mannequin clips.
Godot humanoid profileLeftUpperArmClips imported with a BoneMap / SkeletonProfileHumanoid.

Bones are matched by what they are, and each rotation is carried over relative to both rigs' rest poses (different up / facing conventions are handled). Only the hips move, scaled to the character's leg length; every other bone keeps the character's proportions. Bones with no match (capes, hair, twist bones) follow their parent.

ControlWhat it does
Play / PauseToggles playback.
Rest poseStops and shows the bind pose.
LoopLoops the clip.
TimelineDrag to scrub (pauses).
Speed0.1× … 2×.
RemoveRemoves the selected clip's file from the list.
Tip: a file with no skeleton (an AnimationLibrary resource) is matched by bone names only, without rest-pose correction. Prefer the original .fbx / .glb when you have it.

Export

Saves the character as a scene you can drop into any level.

OptionChoices
NameThe scene's root name; the file is the name in snake_case (Captain Rex → captain_rex.tscn).
FolderDefault res://characters/.
MeshOne baked mesh (1 draw call): every part merged with the body shapes and tweaks applied; best for games. Separate part meshes: one MeshInstance3D per part.
Bone namesSidekick (Unreal style), Mixamo (mixamorig_) or Godot humanoid profile: pick what your animations use. See Bone names.
MaterialSidekick shader (colour map, glow, toon) or StandardMaterial3D (for pipelines that need a standard material).
Include the previewed animationsAdds an AnimationPlayer with every clip from the Animation page, retargeted onto the exported skeleton.
Save the recipe next to it<name>_recipe.tres, to open and edit the character later.
Save a portrait<name>_portrait.png, 256 × 256, from the current view (use Face first for a head shot).

The exported scene: Root (Node3D) › Armature › Skeleton3D › Body (+ AnimationPlayer). The baked mesh keeps each attachment slot's triangles together and lists them in the mesh's slots metadata, so a game can hide one attachment later.

Recipes & undo

A recipe is the editable description of a character: its parts, colour and glow maps, body shapes, part body shapes, colour remaps and part tweaks.

Runtime characters

To build characters in your game (an in-game character creator, random NPCs), add a SidekickCharacter node and give it a SidekickRecipe. It rebuilds whenever the recipe changes, in the editor and in game.

SidekickCharacterDescription
recipe: SidekickRecipeThe character to build.
baked: bool = trueOne mesh (fast to draw, a moment to rebuild) or one mesh per part.
model: Node3DThe built character.
set_part(slot, part)Puts a part on (replacing the slot's part); "" empties the slot.
part_in(slot) → StringThe part a slot holds.
parts_for(slot) → Array (static)Every part in the library for a slot.
set_body(size, feminine, muscles)Size −1…1, feminine 0…1, muscles 0…1.
set_region_color(region: Vector2i, color)Repaints one colour region without a rebuild.
skeleton() → Skeleton3DThe built skeleton.
rebuilt(model) (signal)After every rebuild.
@onready var hero: SidekickCharacter = $Hero

func _on_next_helmet_pressed() -> void:
	var helmets := SidekickCharacter.parts_for("att_head")
	var i := (helmets.find(hero.part_in("att_head")) + 1) % helmets.size()
	hero.set_part("att_head", helmets[i])

func _on_size_changed(v: float) -> void:
	hero.set_body(v, 0.0, 0.3)
Export: runtime building needs the parts library in your exported game. Make sure sidekick_library/ is included by your export preset. Pre-exported .tscn characters don't need it.

Library format

PathContents
<library>/catalog.jsonpacks (source file, import date, counts), parts (slot, theme, set, species, pack, triangle count), presets (pack, parts, body, colour map), palettes.
<library>/parts/<PART>.scnA Node3D (meta bones = the part's bone table with rests) and one MeshInstance3D: mesh with the blend shapes defaultHeavy, defaultSkinny, masculineFeminine, defaultBuff, skin bound by bone name. Saved compressed.

Part names follow Synty's scheme: SK_APOC_OUTL_01_10TORS_HU01 = Apocalypse Outlaws, set 01, torso (10TORS), human (HU).

Bone names

Main bones under each export naming (fingers follow the same pattern):

Sidekick (Unreal style)MixamoGodot humanoid
pelvismixamorig_HipsHips
spine_01 / 02 / 03Spine / Spine1 / Spine2Spine / Chest / UpperChest
neck_01, headNeck, HeadNeck, Head
clavicle_lLeftShoulderLeftShoulder
upperarm_l / lowerarm_l / hand_lLeftArm / LeftForeArm / LeftHandLeftUpperArm / LeftLowerArm / LeftHand
thigh_l / calf_l / foot_l / ball_lLeftUpLeg / LeftLeg / LeftFoot / LeftToeBaseLeftUpperLeg / LeftLowerLeg / LeftFoot / LeftToes
index_01_l …LeftHandIndex1 …LeftIndexProximal …

Dynamic bones (hair, capes, attachment bones) keep their Sidekick names under every naming. The Mixamo naming uses the mixamorig_ prefix Godot gives Mixamo files on import.

Troubleshooting

ProblemFix
"Unable to load addon script … plugin.gd" on first openFixed in 0.1.1. Update, then re-enable the plugin in Project Settings › Plugins.
Importing adds nothingFixed in 0.1.2. Update, restart the editor, remove any pack listed with 0 parts and import it again.
"No Sidekick parts (SK_*.fbx) in this package"The file isn't a Sidekick pack (or is a Synty non-Sidekick pack). Sidekick parts are named SK_…_10TORS_HU01 etc.
A preset loads with missing piecesIts parts come from another pack (often the Starter Pack). Import that pack.
Texture warnings in Output during importHarmless (see Library).
An animation looks twistedMake sure the file has its skeleton (use the original .fbx / .glb). Report the rig so it can be supported.
Exported character doesn't animate with my clipsExport with the bone names your clips use (Mixamo for Mixamo clips), or include the previewed animations in the export.
Colours look washed outSwitch the preview light to Flat or Studio; the Daylight preset is brighter.

FAQ & licensing

Is it free?

Yes, and open source under the MIT license: use it in personal and commercial projects, modify it, share it.

Does it include Synty assets?

No. You need your own Sidekick packs and Synty licence. Characters you build follow Synty's licence: use them in your games; don't share the parts, the library or exported characters as assets.

Is it official?

No. Sidekick Studio is made by ZEXP and is not affiliated with or endorsed by Synty Studios. Synty, POLYGON and Sidekick are trademarks of Synty Studios.

Do I need Unity?

No. The .unitypackage files are read directly.

Where do I report a bug?

Through the ZEXP contact page, with your Godot version, the pack's file name and the status line text.

Changelog

0.1.2 (2026-11-04)

0.1.1

0.1.0