# U7Revisited rebuilds Ultima VII with a different camera and a new camera angle

> Ultima VII Revisited is a replacement engine for Ultima VII: The Black Gate, written mostly in Lua with a C++ core, that reads the maps and graphics out of the original DOS game files and presents them from a new camera angle, with a sandbox debug mode that lets you edit the world from inside the game. It is BSD-2-Clause licensed and builds with either Meson or CMake.

**ViridianGames/U7Revisited** — A replacement engine for Ultima VII The Black Gate (and eventually Serpent Isle) that presents a new camera angle and other improvements.

- Repository: https://github.com/ViridianGames/U7Revisited
- Stars: 526 · Forks: 42
- Language: Lua
- License: BSD-2-Clause
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/viridiangames-u7revisited

## What it is, and what it needs from you

Ultima VII: Revisited is described in the repository as an attempt to write a replacement engine for Ultima VII: The Black Gate, and the description adds that it presents a new camera angle and other improvements, with Serpent Isle as the eventual next target.

The engine does not include the game. To run it you need to copy the contents of your original DOS ULTIMA7 folder to /Data/u7, and that is what allows the replacement engine to read in the maps and graphics from the original files.

The installation instructions are deliberately explicit about how complete the copy has to be. You locate your Ultima 7 game files, for example under the GOG Galaxy directory, and you copy ALL of these files, folders and subfolders into ./Data/U7, with the hint to look for the U7.txt file as the marker for the right folder. The screenshots in the readme show both the typical GOG folder and the resulting project data folder.

That design is what makes the project interesting and also what bounds it. Because the engine reads the original data, the world, the maps and the graphics are the ones you already own, and there is no question of the project redistributing assets it has no right to distribute. The consequence is that the project can only be as good as its own reading of a format it did not define, and that a partial copy of the game data will produce a broken world rather than a clear error.

The engine is described as open source so that you can grab the source files and build it yourself. The primary language is recorded as Lua, which is an interesting choice for a game engine and is consistent with the repository's directory layout, with a Source/ directory for the core and SCRIPTS.md and SCRIPTING_GUIDE.md pointing at a scripting layer on top of it.

The licence is BSD-2-Clause, the last push was on 2026-10-20, and the repository has no GitHub releases, so there is no version tag to track and the state of the project is whatever the master branch currently holds.

## Building it, with two build systems for two reasons

There are two supported build routes, and the readme explains what each is for.

Meson is the cross-platform option. You make sure the Meson Build system is installed, run meson setup build or, if you want a Visual Studio project, meson setup --backend vs build, then meson compile -C build to build the project, and finally go to the build directory and run the u7revisited program.

The --backend vs flag is the interesting part. Meson can generate a Visual Studio project from the same build definition, which means a Windows developer gets an IDE experience without the project having to carry a hand-written vcxproj.

CMake is the other route, and the readme splits it by platform. On Windows you install CMake 3.15 or higher, and Visual Studio 2019+ includes CMake support that can be installed through the Visual Studio Installer. Then the instruction that catches people out: you MUST open Developer Command Prompt for VS 2019 to get a console with cmake on your path, because a normal Powershell or cmd.exe will not work.

After configuring with cmake -S . -B build, you open the generated solution file, build with Ctrl+Shift+B or F5, and the Release executable is automatically copied to Redist/u7revisited.exe after building.

On Linux the dependency set is:

```bash
sudo apt-get install cmake build-essential libgl1-mesa-dev libx11-dev libxrandr-dev libxi-dev libxcursor-dev libxinerama-dev
```

which is the usual X11 and OpenGL development set, then cmake -S . -B build -DCMAKE_BUILD_TYPE=Release, cmake --build build -j$(nproc), and the Release executable is again copied to Redist/u7revisited after building.

The developer installation notes differ from the end-user ones in one respect: developers copy the original DOS ULTIMA7 directory to $(SolutionDir)/Redist/Data/U7/, which is inside the redistributable output tree rather than the top-level Data directory.

## Controls, and what the new camera changes

The controls list is short and tells you a lot about the change of perspective.

WASD moves around. Q and E rotate left and right. The mousewheel zooms in and out. To teleport to a location you left-click it in the minimap. Double-left-click on an NPC attempts to talk to them, though the readme notes that not all NPCs work yet. Double-right-click on a container opens it and shows its contents, and NPCs count as containers for this purpose. Press plus or minus on the keypad to slow down or speed up time, and Enter on the keypad advances time by one hour. ESC exits.

That last group of controls is the clearest statement of the new camera. Ultima VII was played on an isometric grid with a fixed viewing angle, and the time controls were on the numpad in a specific arrangement. Here the camera rotates freely and zooms, and time control has been remapped onto the same keypad, which suggests the input scheme was rebuilt rather than copied.

The teleport-by-minimap-click and the container interaction are conveniences that the original did not have in that form, and they are the kind of thing that a replacement engine can add because it is not bound by the original's input conventions.

The README also points at a video preview of coming attractions, linked from a YouTube watch URL near the top, with a click-to-preview note, and it is the only indication in the readme of what the project looks like in motion.

Two supporting links sit at the top of the readme as well, a Ko-fi page and a Patreon page for the author, with a request to consider supporting the project if you like it. That is how the project funds itself, which is worth knowing before deciding whether to expect releases or documentation support.

## Sandbox mode, which is the development tool built into the game

Sandbox is described as the debug mode, and it has extra options available for building and testing the world. The most striking line is that you can make changes and save them to work on the game from inside the game, with a red square in the upper left corner toggling NPC pathfinding.

The key bindings are a catalogue of the engine's internals. Left mouse click on objects, NPCs or floor tiles prints debug info. Left double clicking calls Interact() on objects and NPCs. F1 toggles the Shape Editor Tool, and F7 toggles black outline borders and dragging of static objects. F8 toggles Lua debug for extra logging, which is the scripting layer's trace output. F9 toggles debug bounding boxes, and F10 shows pathfind costs by coloring tiles, which is how you see what the pathfinder thinks it costs to move. F11 toggles green highlights for scripted objects, so you can see which objects have scripts attached. And the right arrow skips ahead time to the next hour.

The pathfinding controls are the substantive ones. Toggling the red square switches NPC pathfinding on and off, so you can see what the AI does when it has no path, and F10 exposes the cost function the pathfinder uses, which is the difference between an NPC that walks oddly and an NPC whose cost field is wrong.

The F7 and F11 toggles together are the tools for a modder: one lets you drag static objects around, the other identifies scripted ones so you do not accidentally move something that a script controls.

That the debug mode is a first-class part of the shipped program rather than a separate build is a design choice with real consequences. It means the world editing happens in the same executable and with the same data as the game, so a change you save is a change you immediately see, and it means the debugging surface stays alive in the release build.

The repository layout backs this up. There is a Tests/ directory, a Ghost/ directory, a .Clairvoyance/ directory, a .junie/ directory, a Justfile alongside the makefile, a Docs/ directory, and design documents at the root: MODELING_GUIDE.md, PATHFIND.md, ROADMAP.md, SCRIPTING_GUIDE.md and SCRIPTS.md, plus two plain text files, U7Revisited Design.txt and U7Revisited Tasks.txt.

## Where U7Revisited fits, and where it stops

The comparison worth making is with running the original game and with the other modern Ultima VII projects.

Against the original DOS game, the difference is that the original is a 1995 release running on an operating system no modern machine ships, and U7Revisited gives you the same world with a modern renderer, free rotation, a zoomable camera, a teleport map and a sandbox mode for editing. The original is what it always was, with the isometric view and the interface it shipped with. Neither is strictly better, and the readme's framing, that this is an attempt to write a replacement engine, is not a claim to have made a better game.

The licensing position on the data is worth spelling out because it is the thing that determines whether you can use this at all. You supply your own copy of the game, the engine reads it, and the project is BSD-2-Clause. Nothing here requires the original to have been bought, technically, since the engine reads files from a directory you provide, which is a different and more delicate position than shipping the assets. A user who has the game is the intended user, and the copy instruction in the readme says exactly that.

The limits are visible in what is not finished. Not all NPCs work yet when you try to talk to them, which is the sort of gap that a replacement engine has when it has the data but not every behaviour. The project has no releases and no version tags, so there is no stable build to point at and no changelog to read. And the scope is a single game, with Serpent Isle described as eventual rather than present.

There is also the question of what a replacement engine can do with the original data. The engine can present it differently, and it can add debug tooling, but the fundamental structure of the world, the object data and the scripts is defined by files written in 1995, and a new engine cannot change the content of the game, only how it is displayed and how you interact with it. MODELING_GUIDE.md and the two plain text design documents at the root are where you would look for what the author intends to do about that.

For a player who owns the game and wants to look at it from a new angle, or for a modder who wants to build and test content inside the engine rather than in a separate editor, that is a clear offer. For anyone looking for a maintained, packaged release, the absence of releases and the README's links to a Ko-fi and a Patreon page suggest the project runs on the author's time.

## Conclusion

U7Revisited suits an owner of a copy of Ultima VII who wants the game presented differently, because the engine reads the original data rather than shipping assets of its own, so the maps and graphics are the ones you already own, and the new camera and the sandbox editing tools are what the project adds on top. It is the wrong tool if you do not have the original game files, since the engine reads them directly and has no bundled world, and it is the wrong tool if you need the original isometric view, because changing that view is the point of the project. Before you start, copy the whole DOS ULTIMA7 folder into Data/u7, since a partial copy will produce missing maps rather than an error, and read ROADMAP.md and MODELING_GUIDE.md for what is planned and how the world is structured.

## FAQ

### What is Ultima VII: Revisited?

It is an attempt to write a replacement engine for Ultima VII: The Black Gate, written mainly in Lua with a C++ core, that presents a new camera angle and other improvements, with Serpent Isle as an eventual further target. It is BSD-2-Clause licensed and open source.

### What does U7Revisited need to run?

Your original DOS ULTIMA7 folder copied to /Data/u7, so the engine can read the maps and graphics from the original files. The instructions are to copy all files, folders and subfolders, using the U7.txt file as the hint for finding the right directory.

### How do I build U7Revisited?

With Meson for cross-platform builds: install Meson, run meson setup build or meson setup --backend vs build to generate a Visual Studio project, then meson compile -C build, and run u7revisited from the build directory. With CMake, run cmake -S . -B build and then cmake --build build -j$(nproc); on Windows you must use the Developer Command Prompt for VS 2019 so cmake is on your path.

### What does Sandbox mode give you?

Sandbox is the debug mode, with extra options for building and testing the world, and you can make changes and save them to work on the game from inside the game. A red square in the upper left corner toggles NPC pathfinding, F1 toggles the Shape Editor Tool, F8 toggles Lua debug logging, F9 toggles debug bounding boxes and F10 shows pathfind costs by coloring tiles.

### What are the controls in U7Revisited?

WASD moves around, Q and E rotate, the mousewheel zooms, and left-clicking the minimap teleports you. Double-left-click on an NPC tries to talk to them, though not all NPCs work yet, and double-right-click opens a container. Plus and minus on the keypad slow down and speed up time, Enter advances time an hour, and ESC exits.

### Is there a released version of U7Revisited?

The repository has no GitHub releases, so there is no tagged version to point at and the state of the project is whatever the master branch currently holds. The last push was on 2026-10-20, and the README links the author's Ko-fi and Patreon pages for supporting the work.

## Sources

- [Issues](https://github.com/ViridianGames/U7Revisited/issues)
- [License: BSD-2-Clause](https://github.com/ViridianGames/U7Revisited/blob/master/LICENSE)
- [README](https://github.com/ViridianGames/U7Revisited/blob/master/README.md)
- [ViridianGames/U7Revisited on GitHub](https://github.com/ViridianGames/U7Revisited)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/viridiangames-u7revisited
