Graphical asset editor for .isoa packs #21

Closed
opened 2026-07-17 11:42:37 +02:00 by marco · 2 comments
Owner

Goal

A small cross-platform graphical editor to inspect and replace assets in our .isoa packs (#2). Flow: open a pack → browse assets → preview (animated) → replace an asset's frames (import image) → save → pack updated. This is the tool that lets us progressively swap UO-derived art for our own original art, turning packs into committable, team-shared assets.

Tech (agreed)

  • ImGui.NET on a MonoGame host — reuses our renderer + SpriteAnimator for live animation preview; standard game-tooling UI; cross-platform (Win/mac hard requirement). New project tools/IsoMmo.AssetEditor, referencing IsoMmo.Assets (#2).
  • Cross-platform native file open/save dialogs (small dependency).

Scope

  • Open an .isoa pack; list its assets/animations.
  • Preview the selected asset (play the animation, show anchor/dimensions).
  • Replace an asset's frame(s) by importing PNG(s); re-derive anchor (manual nudge ok).
  • Save back to the pack (whole-file rewrite; versioned).
  • Runs on Windows and macOS.

Definition of Done (delta)

  • Open a pack, replace the "critter" (rat) frames with a different image, save, relaunch the game client, and the creature shows the new art — demonstrated end to end.
  • Editing preserves untouched assets byte-for-byte (round-trip).
  • The editor launches on Windows and macOS.

Depends on

#2 (the .isoa format + IsoMmo.Assets library) landing first.

## Goal A small cross-platform graphical editor to inspect and replace assets in our `.isoa` packs (#2). Flow: open a pack → browse assets → preview (animated) → replace an asset's frames (import image) → save → pack updated. This is the tool that lets us progressively swap UO-derived art for our own original art, turning packs into committable, team-shared assets. ## Tech (agreed) - **ImGui.NET on a MonoGame host** — reuses our renderer + SpriteAnimator for live animation preview; standard game-tooling UI; cross-platform (Win/mac hard requirement). New project `tools/IsoMmo.AssetEditor`, referencing `IsoMmo.Assets` (#2). - Cross-platform native file open/save dialogs (small dependency). ## Scope - [ ] Open an `.isoa` pack; list its assets/animations. - [ ] Preview the selected asset (play the animation, show anchor/dimensions). - [ ] Replace an asset's frame(s) by importing PNG(s); re-derive anchor (manual nudge ok). - [ ] Save back to the pack (whole-file rewrite; versioned). - [ ] Runs on Windows and macOS. ## Definition of Done (delta) - Open a pack, replace the "critter" (rat) frames with a different image, save, relaunch the game client, and the creature shows the new art — demonstrated end to end. - Editing preserves untouched assets byte-for-byte (round-trip). - The editor launches on Windows and macOS. ## Depends on #2 (the `.isoa` format + `IsoMmo.Assets` library) landing first.
Author
Owner

Tech pivot: the MonoGame.ImGuiNet package is malformed on net10 (DLL at package root, net6 target) and vendoring an ImGui renderer is ~350 unverifiable lines. Building the editor on our own MonoGame UI instead (SpriteBatch + FontStashSharp + a tiny inline widget set), reusing SpriteAnimator for live animation preview. Zero fragile deps, fully cross-platform, verifiable. Scope unchanged.

Tech pivot: the MonoGame.ImGuiNet package is malformed on net10 (DLL at package root, net6 target) and vendoring an ImGui renderer is ~350 unverifiable lines. Building the editor on our **own MonoGame UI** instead (SpriteBatch + FontStashSharp + a tiny inline widget set), reusing SpriteAnimator for live animation preview. Zero fragile deps, fully cross-platform, verifiable. Scope unchanged.
Author
Owner

Done and merged to main (126a3aa). Cross-platform MonoGame asset editor: open an .isoa pack + import replacement PNGs via OS-native dialogs (osascript/PowerShell/zenity, no NuGet), live animation preview, replace-frame, save. All art consolidated into one assets/assets.isoa (namespaced human/creature/static/land); just pack builds it; client reads the single pack. Artist guide in docs/asset-authoring.md. v1 replaces one frame at a time; batch/sprite-sheet import + anchor nudge are noted follow-ups.

Done and merged to main (126a3aa). Cross-platform MonoGame asset editor: open an .isoa pack + import replacement PNGs via OS-native dialogs (osascript/PowerShell/zenity, no NuGet), live animation preview, replace-frame, save. All art consolidated into one assets/assets.isoa (namespaced human/creature/static/land); just pack builds it; client reads the single pack. Artist guide in docs/asset-authoring.md. v1 replaces one frame at a time; batch/sprite-sheet import + anchor nudge are noted follow-ups.
marco closed this issue 2026-07-17 12:27:24 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#21
No description provided.