Models, sounds, fonts

Files of your own, in the game. Blender exports, Ogg tunes, TrueType faces - and the game's own textures swapped for a PNG.

A model from Blender (glTF)

  1. Export from Blender as glTF Binary (.glb). Units: the game's - a villager is about 10 tall, a doorway about 3 wide. +Y is up, +Z is forward. Textures embedded, or a .gltf with its files beside it.
  2. Import: the model picker's Import a model… (anywhere a model is picked), or copy the file into the project's assets\ folder.
  3. Use it: as an object's Model on a map (a prop, a building, a whole ground with Solid on), as a weapon's look, or as a character with Roam - the fox.
  4. Animate it: Blender actions come along as clips. A Mesh's Clip loops one; Roam plays Walk and Idle clips; a weapon's Clip loops while held; a timeline's glTF clip switches them in a cutscene.
The model viewer showing the rune blade
Double-click a file under FF3 ▸ Models - yours are listed first - to see it in the viewer.
A monster of the game's in the viewer, mid animation
The game's own models play their motions here; Export .glb takes one to Blender with its skeleton, weights and the motion playing - + all motions with every motion of the pack. With a project open it lands in the project's exports folder; without one, Save As.
What carries over: geometry, normals, texture coordinates, textures, vertex colours, node transforms, skins and animations. Lighting is the game's - a shade from the normal, as its own models have - so do not bake dramatic lighting into the textures.

A character remade: a high-res Luneth

The game's characters and monsters can be given a new mesh while their skeleton and every battle motion stay the game's. Works on the Steam game too - the result is the game's own format.

  1. Open the model (FF3 ▸ Models ▸ j101 is the first character) and Export .glb - + all motions to check your work against every swing in Blender.
  2. In Blender, model over it. Keep the armature as it came; weight your mesh to its bones (the vertex groups already carry the game's names: hara, mune, L_ude, R_te…). Do not move or rename bones. Export a .glb with the skin.
  3. Back in the viewer, with a project open: Remake from glTF…, pick your file (or Import a model… right there). The model reloads as yours; the transport plays the game's motions on it. Undo remake puts the game's back.

No rig? Skip step 2. A plain mesh, standing with its arms down, is bound to the character's skeleton for you when you Remake with it: scaled to the character, stood on its feet, weighted from the original's own skinning. The rigged copy appears in assets\ as <name>-rigged.glb - open it under Models and the transport plays every game motion on it, so you can orbit and scrub for a wrong weight before it ever goes in the game. The closer the mesh's shape to the original character's, the better.

Fix what is left by hand. Tick weights under that viewer: the mesh shows one bone's weight as heat (blue none, red all) with the skeleton over it. Left-drag paints (add, erase or smooth, radius and strength as set, mirror for the other side), right-drag orbits, Alt+click picks the bone under the cursor. Play a motion while you paint - a sleeve that stays behind is painted where it stays. Undo takes a stroke back; Save weights writes them into the file and remakes the game model from it.

The model viewer with j101 remade at 10,320 triangles, the Remake and Undo buttons in the bar
j101 remade at 24× the triangles (a Blender subdivision of the export, as a test): the game's motions play on it.
Four frames of a battle with the remade Luneth attacking a goblin
The same model in a live battle - idle, the attack run, the hit.
On OpenFF the client draws your glTF directly - smooth weights as painted, any triangle count, any textures - through the game's skeleton and motions (Remake writes defs/models/j101.json for it). On Steam the game's own format has its rules: a vertex goes through one bone, or one of the blends the original had (a few at the knees, elbows and hips) - smooth weights snap to the nearest and the status line says how many; 10,922 triangles per model; textures 512 KB per model. Either way the bones must keep the original's names, and a mesh with no weights is bound to the nearest bone.

A sound or a tune

  1. FF3 ▸ Audio ▸ Import a sound…. An Ogg Vorbis or WAV file.
  2. Pick music (a BGM number the game does not use, 59 and up) or effect (an archive of your own, SE300_00 and up).
  3. A Music behaviour's Bgm and a Sound's Archive / Number list it; so do the timeline's music and sound clips and C#'s Game.Audio.

A font

  1. FF3 ▸ Text ▸ Import a font…. A .ttf or .otf.
  2. The client draws every line of text from it; glyphs it lacks fall back to the game's faces. The preview shows sample text at the game's sizes.

Pictures and textures

  1. FF3 ▸ Images: the menus' pictures. Open one, Replace… with a PNG of the same size. Import a PNG… adds a new one under a name of your own for the menus to reference.
  2. FF3 ▸ Textures: a model's skin. Open a texture package, pick a texture, Replace with a PNG - the game's formats and palettes are made for you. A recoloured villager is this and nothing else.
  3. Duplicate as… on any model copies it (and its textures) under a new name, so a recolour can live beside the original.
Files: models in assets\; sounds, fonts, replaced textures and images under files\, mirroring the game's names. Export to OpenFF copies them all into the mod.
Next: C# code.