Modding Oblivion Remastered in UE 5.3.2 – A Guide to Replacing Animations

Who is this for?

  • Total beginners who have never touched Unreal before.
  • Anyone who, like me, is still figuring things out as they go.

Important: I am not an expert. When I’m unsure, I flag it with and explain my best guess.


Table of Contents

  1. Why We Use the Altar Project
  2. Step 1 – Open the Altar Project in UE 5.3.2
  3. Step 2 – Extract the Skeleton & Animations with FModel
  4. Step 3 – Import Everything into Blender
  5. Step 4 (Optional) – Edit in MotionBuilder / Cascadeur
  6. Step 5 – Bring the Mesh into Unreal without Breakage
  7. Step 6 – Import Your Animations at 60 FPS
  8. Step 7 – Mirror the Game’s Folder Structure
  9. Step 8 – Add Animation Notifies with JsonAsAsset
  10. Step 9 – Final Tweaks & Packaging
  11. Common Pitfalls
  12. Useful Links

Why We Use the Altar Project

Oblivion Remastered was built with a custom branch of Unreal. Altar is a public demo project on GitHub that matches that branch. By loading our new animations into Altar first, we can package them so the game will actually read them. Think of Altar as a sandbox that speaks the same language as the final game.


Step 1 – Open the Altar Project in UE 5.3.2

  1. Download the project: https://github.com/Kein/Altar
  2. Use exactly UE 5.3.2. Newer versions may break things.
  3. If Unreal refuses to open the project because it “can’t build C++ files,” the problem is often Visual Studio:
    • UE tries to compile with every compiler it finds.
    • If you have only VS 2022 installed, UE sometimes chokes.
    • Quick fix: Temporarily rename or delete the MSVC\14.* folder for the newer toolset. UE will then fall back to the older one and the project opens.

Analogy: UE is picky like a restaurant that only accepts one brand of credit card. Hide the others and it’s happy.


Step 2 – Extract the Skeleton & Animations with FModel

We need the game’s Humanoid skeleton and the vanilla animations so we can edit them.

  1. Grab the latest FModel release (older ones miss some assets).
  2. Open the archive OblivionRemastered‑Windows.utoc and navigate to:
    OblivionRemastered/Content/Art/Character/Humanoid/
  3. Right‑click SK_HumanoidFullExport → .psk (this is the mesh + bones).
  4. Export any animation you plan to replace as .psa. Example sprint:
    .../Animation/Humanoid/ThirdPerson/Passive/Locomotion/Normal/A_Humanoid_Passive_Sprint.uasset

Two FModel Versions? ❓

JsonAsAsset (Step 8) sometimes requires a different FModel build to fetch notify data. Check their Discord for the recommended version.

About .usmap Files

Both FModel and JsonAsAsset will ask for usmap files. You can dump them with UE4SS. If that sounds annoying, I shared my own dump here (no guarantee it still works):


Step 3 – Import Everything into Blender

  1. Install the PSA/PSK Importer: https://extensions.blender.org/add-ons/io-scene-psk-psa/
  2. Import SK_HumanoidFull.psk. In the Outliner, rename the top node to Armature.
    • Why? Unreal treats the top node name as root. Calling it Armature tricks UE into using a clean root hierarchy.
  3. Immediately export to FBX with scale 0.01 (Blender is giant by default).
  4. To bring in vanilla animations:
    • Select the Armature.
    • File → Import → PSA and choose the file from Step 2.

FPS Minefield ★

Set Blender’s scene FPS to 30 before importing the PSA. The developers animated at 30 FPS but imported to UE at 60 FPS (custom sample rate). If you forget this, the total length doubles, and notifies will fire at the wrong time.

Rule of Thumb: Always ask, “What FPS was the source made at?” before touching anything.

Blender ‘Action’ Tracks
After import, you might see nothing change. Switch the Action dropdown—each animation lives there, similar to MotionBuilder Takes.


Step 4 (Optional) – Edit in MotionBuilder or Cascadeur

I animate in MotionBuilder because I’m old‑school, but it’s pricey. Cascadeur is a cheaper modern alternative. I’ll upload the rig to Nexus soon so everyone can use it.


Step 5 – Bring the Mesh into Unreal without Breakage

  1. In Altar, recreate the folder path you saw in FModel. Example:
    Content/Art/Character/Humanoid/
  2. Import your FBX there.
  3. Unreal auto‑creates a new Skeleton asset. Rename it (e.g., SK_HumanoidFull_fake) so it never overwrites the game’s real one. We only need it so the animations have something to reference while cooking.

Step 6 – Import Your Animations at 60 FPS

  1. Right‑click in the same folder → Import → select your FBX animation.
  2. Choose the fake skeleton.
  3. In the import options, set Sample Rate = 60.
  4. Double‑check that the timeline length matches the original (seconds and frames).

Step 7 – Mirror the Game’s Folder Structure

If the game’s file lives at

.../Passive/Locomotion/Normal/

your replacement must follow the exact same path inside the .pak. If not, the engine ignores it.


Step 8 – Add Animation Notifies with JsonAsAsset

  1. Install the JsonAsAsset plugin in Altar.
  2. Dump the notify data from the original animation as .json via FModel.
  3. Create an empty Blueprint with the same name and parent class shown inside the .json. Place it in the matching folder. ❓ Why is this needed? JsonAsAsset copies tags from the Blueprint when pasting notifies. No BP, no notifies.
  4. Right‑click your new Anim Sequence → ScriptsAttach Notifies from JSON.

Analogy: Think of JsonAsAsset as a stamp factory. The Blueprint is the rubber sheet with the pattern. Without it, the stamp machine has nothing to copy.


Step 9 – Final Tweaks & Packaging

  1. Open the Anim Sequence, slide notifies if the timing feels off.
  2. Unreal 5.3 removed Chunk Assignments. Now we use Primary Asset Labels:
    • Right‑click → Misc → Primary Asset Label.
    • Add your assets.
    • Pick a Chunk ID (any unused number).
  3. Cook the project. Your .pak ends with _P.pak.
  4. Drop the file into the game’s ~mods folder. Launch the game and swing that sword!

Common Pitfalls

ProblemLikely CauseQuick Fix
Project won’t openVS 2022 toolset conflictHide newer MSVC folder
Animation plays at double lengthImported PSA at wrong FPSSet Blender scene to 30 FPS first
Notifies missingNo Blueprint with matching nameCreate empty BP before JsonAsAsset
Mod doesn’t loadWrong folder path inside .pakMirror original path exactly

Useful Links


Final Words

If anything here is unclear—or flat‑out wrong—please shout at me in the comments. I’m learning too, and I’ll keep polishing this guide. Happy modding!

コメント

タイトルとURLをコピーしました