Skip to content
JBob edited this page Dec 18, 2025 · 1 revision

Welcome to the Ultima Online Python SDK framework.

Sit back, relax... and lets get our hand all up in that 'Py'!


uo-py-sdk is a Python framework for reading and writing Ultima Online client data files ({type}.mul and {type}idx.mul containers). Built with clean, typed, Pythonic APIs, it's designed as a foundational package for building custom UO tooling—whether you're extracting art assets, manipulating multi files, or building automated content pipelines.

What It Do

uo-py-sdk provides low-level primitives and high-level helpers for working with UO's binary file formats:

  • Generic container support: Read/write any {type}idx.mul + {type}.mul pair (art, gumps, sounds, texmaps, multi, etc.)
  • Pluggable codecs: Extensible architecture for asset-specific parsing (currently implements art.mul with image import/export)
  • Performance-oriented: Bulk read APIs with snapshot caching and persistent file handles for batch processing
  • Type-safe: Full type annotations for IDE support and static analysis
  • Environment-aware: Optional .env configuration for client paths and output directories

Quick Example

from uo_py_sdk.ultima import Files, Art

# Load UO client files
files = Files.from_path(r"C:\Games\Ultima Online")
art = Art.from_files(files)

# Export art to PNG
art.export_land(0x000, "grass.png")
art.export_static(0x0EED, "tree.png")

# Import modified art back
art.import_static(0x0EED, "tree_edited.png")

Project Status

This is production-ready infrastructure built for real-world tooling. Core features are stable:

  • ✅ IDX/MUL container parsing and writing
  • ✅ Art.mul codec with full image import/export (PNG/JPG/BMP)
  • ✅ Bulk read optimization for batch operations
  • ✅ Environment configuration via .env

Additional codecs and asset types are planned as needed.

Installation

# Standard installation
pip install uo-py-sdk

# Development install (includes pytest, GUI examples, image codecs)
pip install -e .[dev]

Next Steps

Repository

[github.com/UltimaWorks/uo-py-sdk](https://github.com/UltimaWorks/uo-py-sdk)


This page serves as the landing point. The links reference future wiki pages you can create for detailed documentation sections. The tone is direct, assumes competence, and focuses on what matters—capabilities, not hand-holding.

1 2