Quirks of the Ultima VII Engine

From Ultima Codex
Jump to: navigation, search

The Ultima VII engine was really advanced for its time. However, the technical limitations were still a challenge for the programmers at Origin. So they had to resort to tricks in order to create the game world. Tricks, that are quite interesting to reveal.

Where do the Dead go?[edit]

Location of the Ultima VII dead zone
Ultima VII dead zone
Location of Serpent Isle dead house
Serpent Isle house of the dead

One very important distinction in the engine is between objects and NPCs. Objects (and monsters) can be created or destroyed. NPCs, however, cannot, or the game could break. Of course, during the events of Ultima VII and (especially) Serpent Isle, NPCs do in fact die, and often. This begs the question of exactly what does happen when an NPC dies.

When an NPC is killed, they don't actually "die". Instead, they are teleported away and replaced by a corpse-object with a pre-defined inventory. Casting Resurrect on the corpse-object destroys the object and teleports the corresponding NPC back into its place with full health; the NPC takes the inventory of the corpse-object upon its arrival. This happens so quickly within the game engine that it is barely perceptible to the player, thus creating the illusion of death and resurrection.

But if "dead" NPCs are simply teleported away, where do they actually go? On both Britannia and Serpent Isle, there is an area that is totally unreachable by normal means, where all the NPCs are stored. In Ultima VII, this is is a carpeted area deep inside the mountains just north of the Shrine of Compassion. In Ultima VII Part Two, the "House of the Dead" is located on the top left of the map.

There are some things of interest with this mechanism:

  • The nature of the Ultima VII engine means these "Rooms of the Dead" must be somewhere on the world map, in an area where the player cannot access or even view by normal means. However, running Exult in higher resolutions may result in these areas becoming visible.
  • NPCs who just vanish (such as Batlin after the Black Gate fight) also go to the Rooms of the Dead, since they can't be removed from the world but still have to become un-encounterable.
  • Exult seems to break it, probably because the game engine can now store the NPCs in-program. In Ultima VII, only Batlin is found there after vanishing from the Black Gate fight. In Serpent Isle, only destroyed Automatons, Gwani, some pikemen, and the Banes of Chaos are found there.
  • There is also the question of the Armageddon spell in Ultima VII. Armageddon doesn't actually kill anyone; rather, it causes NPCs to drop unconscious on the spot, with their AI destroyed. This is why Resurrect doesn't work — Resurrect only works on corpse objects, which these unconscious NPCs are not as far as the engine is concerned. But nothing you do will ever bring anyone out of their "vegetable" state. (The Ferryman, who is unaffected by Armageddon, is a special case that will be discussed below.)
  • Lord British seems to hold executive power over death, since angering him by cheating (more below) kills even people in the room of the dead, this time for real! Since the game would already be broken anyway if the player triggered this event, the programmers felt justified in doing it here.


The two extra houses
Inside the extra house
The dummy castle

Looking into Alagner's crystal ball reveals what he has done last day and later shows his execution by Abraham, Elizabeth, Hook and Forskis.

How is this feat accomplished? After all, the Britannia of Ultima VII is one, single map.

It indeed is a single map, so to create this effect, the programmers had to use a trick. Looking at a computer-generated map of the Isle of the Avatar reveals two copies of Alagner's house hidden beneath the mountains. The southern one has a dummy NPC (using a monster slot, since there can be only one Alagner) doing exactly the same things as the real Alagner, providing the image for the crystal ball.

The northern house actually has another dummy and dummies of his assassins being frozen in motion, providing the scenery for the killing seen in the crystal ball. Walking into the scene causes them to come to life and attack the party.

Even more, this system was also used in Serpent Isle. In the north-western part of the map is a strangely unfinished structure in the ocean. Walking up the stairs reveals a copy of the upper floor of Shamino's Castle with strange lighting bolts and fireballs flying around.

Since the programmers were unable to use the real location for programming reasons, they created this little area and Batlin and Cantra teleport in to create the cutscene for the crystal ball in Harnna's house.

Not so ethereal[edit]

The Void revealed...
Indeed, the whole thing with everything being forced to share one map was a huge problem for the programmers. All three generator areas are hidden beneath the mountains. It becomes even more obvious with the Shrine of Spirituality.

They had ran out of mountains where they could hide this huge area (huge, because otherwise the limits would be obvious), so they had the idea to house it on the huge upper floor of an equally huge building on the Isle of the Avatar. The building is very prominent, you can't miss it.

Note that with Exult, this building loses its function with the Keyring Mod, since the new multi-map option allows for de-crowding the map. The current builds however haven't removed it yet.

Talking to an object[edit]

The Armageddon spell can't hurt the Ferryman. Indeed, it is totally impossible to do anything to him. However, to do this, the programmers had to trick the game. The Ferryman actually is an object which you can use to talk to. His weapon is part of his sprite, therefore unreachable and his object type has no inventory.

The whole issue with objects doubling for people becomes more interesting once you realise that the Time Lord also is an object! To add to the twist, the player normally thinks that the person locked into the time barrier is the Time Lord. However, this is totally wrong, it is just a plain statue. Moving the barrier to a different place with the hackmover and then using it reveals, that the barrier represents the Time Lord.

In Serpent Isle they had the problem that all NPC slots were used up when they created Silver Seed, so the NPCs in the expansion are actually modified monsters.

Map Mess[edit]

The map mess
Looking at the Serpent Isle map with the map viewer.... it is a mess.

The reason for this mess however is simple. Since Ultima VII Part Two is a much more linear game, the Avatar never uses a ship to sail around, meaning that the player is restricted to walking on the land. This fact gave the programmers the chance to not only hide things under mountains. In practically every ocean area that is out of sight, there is some underground area placed.

These areas are usually reached via teleporter or stairs which have a hidden teleporter to this new place on the map. In normal gameplay this never becomes obvious. It did however create a programmer's nightmare (especially with the lost source code).

Note that with Exult and its multi-map support, this solution is no longer needed and there are mods that clean up the map, shifting everything to an underground map.

The teleport trick[edit]

The three beaches
At the beginning of Ultima VII Part Two, the Party loses much of its inventory to a Teleport Storm. The game mechanism behind this is to take away objects from the inventory and add new ones. However, the programmers were faced with a problem.

The mechanism only worked for things in possession of the party, meaning that there was the danger of clever players putting everything on the ground (with exception of the Black Sword) and retrieve it after meeting Thoxa and the triggering of the events. To make this impossible, they used a trick. West of the beach are two copies of it. The game starts on the westernmost. When the lightning starts, the party starts to vanish. After that, the Avatar is for a second on the second beach, then the lightning strikes and the Avatar is teleported to the final beach, unable to reach the dropped objects on the first beach. In-game, the player doesn't notice these game mechanics, since a map and Sextant are only later available.

Indeed, the objects you "get back" are already on the map, meaning that every item actually exists two times on the map should they be dropped on the ground at the beginning!


One weakness of the engine is that objects that are supposed to be different can have the same properties, should the programmers miss something.

In Ultima VII this wasn't much of a problem. The only noticeable thing is that a filled bucket, regardless of what it is filled with — water, milk, alcohol, even blood! — always has the same property as a filled container of water for making bread. Only the blood from the Stone of Castambre has different properties.

It became a problem in Ultima VII Part Two. In the original game (that is, before the expansion), there was a serious problem with ghosts. The Chaos Hierophant ghost was accidentally used for all ghosts encountered on the Serpent Isle, which can be especially critical in the exploded powder mill early in the game. This is fixed in the Silver Seed, but it introduces another issue: The black-yellow pillars in the room with Isstanar actually are copies of the pillar from the test of purity in Furnace, which can lead to crashes.


Location of the game-break room
"Gotcha, cheater!"
This is not an actual engine trick, but interesting nonetheless.

There is a normally unreachable, small room with Fire Fields and cracked mirrors in the mountains just south of the Lost River (directly north of the Sphere Generator). Entering it will summon Lord British, who declares the Avatar a cheater before attacking. Everyone in the world has turned into a corpse and the NPCs were erased from the game. And the companions are now useless, spouting total gibberish.

Note that in Exult, one effect is lost: all other text was replaced with "oink!". It seems that removing the NPCs will break the game, something the programmers accepted, as this situation meant it was game over anyway.