-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
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}.mulpair (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
.envconfiguration for client paths and output directories
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")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.
# Standard installation
pip install uo-py-sdk
# Development install (includes pytest, GUI examples, image codecs)
pip install -e .[dev]- Getting Started - Installation and basic usage patterns
-
Configuration - Setting up
.envfor your environment - API Reference - Core classes and methods
- Examples - Real-world usage scenarios
- Performance Guide - Bulk operations and optimization techniques
[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.