Skip to content

ContentTool 1.0.0

Choose a tag to compare

@UberMorgott UberMorgott released this 30 Aug 15:15
· 486 commits to main since this release

ContentTool is the content engine other Phoenix Point mods build on. A mod that depends on it can
replace what the game ships — textures, models, materials, animation curves, sounds, videos,
whole asset bundles — and add content the game never had, such as a new weapon or a new
creature. Everything is applied in memory while the game runs: your Phoenix Point installation is
never written to
, and removing the mod leaves nothing behind to undo.

On its own ContentTool changes nothing. You are most likely here because a mod you installed
requires it.

Install

  1. Download ContentTool-1.0.0.zip below.
  2. Copy the ContentTool folder into <Steam library>\steamapps\common\Phoenix Point\Mods\.
  3. Start the game, open Mods, tick Content Tool.

If a content mod declares ContentTool as a dependency, the mod manager enables it for you.

What is new in this release

A model off the internet can be a playable soldier — with no C# at all.
The HumanoidSoldier demo takes a foreign humanoid .glb, fits it onto Phoenix Point's own
skeleton, and the campaign starts you with it. The whole mod is a meta.json and a
ppcontent.json; there is no assembly, no Harmony patch, nothing to compile.

A shipped character can be given a new body. ReplaceCharacterBody swaps the body of a
character the game already ships, again from the manifest alone.

"startingRoster": true puts a code-less mod's unit in the roster the campaign begins with, so
a new soldier is playable from the first mission rather than something you have to spawn.

"useGameAnimations": true plays the game's own animation clips on your model. A mod that
sets it ships zero animation bytes — the walk, the aim, the reload all come from Phoenix Point.
This is new and not yet battle-tested: it is the fastest route to a moving character, but expect
rough edges on rigs that stray far from the shipped proportions.

The offline model pipeline — tools\ppskel.py (fit a foreign rig to the game's skeleton),
ClipCensus (sample the shipped clips), tools\ppretarget.py (retarget onto them),
tools\ppzip.py (compress). Together they cut the demo model by 65% with every clip kept.

Fixes that matter if you are building a .glb creature

  • The aimed shot that never came back. A null in AimIK on a custom-rigged creature froze the
    camera mid-shot and left the turn hanging. Fixed — an aimed shot on a foreign rig now resolves.
  • Animation events are inherited from the vanilla clips. Without them a custom body played its
    animation silently and without effect: no footstep, no muzzle flash, no hit frame. Your model now
    gets the events the original clip carried.

Notes

  • Sounds are the one thing that cannot be taken back mid-session. Unticking a mod leaves a replaced
    sound loaded until you restart; restarting is the clean undo.
  • One shipped resource has exactly one owning mod. Two mods claiming the same one is refused by
    name
    in your player log, never silently.
  • If a mod's content does not appear, the reason is a named line in Player.log — search it for
    ct_.

Documentation for modders: https://ubermorgott.github.io/PhoenixPoint-Mod-ContentTool/