





Underworld Revisited 0.3.1: an open-source reimplementation of Ultima Underworld 1, faithful to the original, with optional modern controls, UI and graphics (Windows + Linux)
There's a lot of Underworld activity here lately: Kweepa's Unity Underground, the Pocket PC decompilation, and more. Great to see. I'd like to add another one I have been working on, on and off, since 2012: playing the original DOS game as it was on modern systems, with modern options on top that you can switch on or leave off.
Underworld Revisited is an open-source (MIT) reimplementation of Ultima Underworld: The Stygian Abyss in Unity. The rules are read out of the original executable and rebuilt, and everything is drawn from your own GOG copy.
Faithful to the original
- Game logic from UW.EXE: combat tables, creature AI and group alarm, traps and triggers, magic, and conversations running on the original conversation bytecode. The whole game has been played through and compared with the original running in DOSBox.
- The original's motion code: walking, slopes, ledges, swimming, jumping, levitation and the easy movement arrows run on the motion routines from UW.EXE. You can run them step by step like 1992 or as a smooth, frame-rate independent version. (This also explains the old DOSBox "unlimited cycles" bug where you could barely swim.)
- The classic look and interface: a Palette mode that lights the world like the original (SHADES.DAT/LIGHT.DAT), the original interface with its animations, the original mouse-pointer steering with all its keys, intro and cutscenes with speech, AdLib music.
- Save games compatible with the original, in the usual SAVE1-SAVE4 folders.
Modern options, all switchable
- A modern control scheme: free mouse look and WASD. Shift+F2 switches between the original scheme and the modern one at any time.
- A modern interface built from the original's artwork: an action bar, bags, a character panel, a rune panel, a minimap and a conversation screen with trading. A layout editor lets you move and resize every part of it.
- Graphics effects: a Remastered render mode with modern lighting, surface relief, specular highlights, glow, shadows and torch lights. Each effect can be switched on its own.
- Extras: a help window beside the view with your stats including hidden values, a live map, notes saved with your game, spells, mantras and the game's manual. There is also a modern readable font, the original's 4:3 frame on wide screens, and the option to deal your attribute points yourself at character creation.
Update (0.4.0)
Thanks for all the feedback here - several of your suggestions are in now:
- The world at the original's resolution: 200 rows (or 2x-4x), the width following your screen, the interface staying sharp. In the classic frame it's the original's own grid.
- Palette effects: optional effects for the original look that keep every pixel a palette colour: ambient occlusion, grime along the walls, wall depth, ground shadows, glowing lava and flames, and light sources by the original's own light table. Presets Subtle and Full; use with care.
- More faithfulness fixes: easy-move arrows, pointer steering values, move triggers and traps (thrown things and creatures set them off as in the original), the map, pillar textures and more.
Windows and Linux builds. You need Ultima Underworld 1 from GOG.com. The download contains no game data.
Download: https://github.com/PQMarine/UnderworldRevisited/releases
Source and screenshots: https://github.com/PQMarine/UnderworldRevisited
Thanks. None of this would exist in this form without hankmorgan. His UWReverseEngineering project, a disassembly of UW.EXE with named routines and a huge guide to the mechanics, is where most of the rules were read from: the motion code, the creature AI, traps, magic and more. His UnderworldGodot recreation provided many formulas and data tables, and his UnderworldExporter showed years ago that Underworld can live in Unity. Thank you!
Full disclosure: the code was written with Claude Code (an AI). I did the testing against the original, the reverse-engineering direction and a lot of nitpicking. Bug reports, especially "the original did this differently", are very welcome.