UO Blog - Artificial Life Engine - Jan 27th, 2009

Blog Index:

Leaving Britannia Again
(May 11th, 2011)
High Seas in Retrospect
(Feb 4th, 2011)
The Lack of New Players
(Jun 26th, 2010)
Thoughts About Adventure
(May 13th, 2010)
Revolutionizing Ultima Online
(Feb 17th, 2010)
Player-Run Towns
(Oct 3rd, 2009)
Leaving a Trace in the World
(Sep 1st, 2009)
What Ultima Online Could Be
(Jul 4th, 2009)
Felucca - A Niche Facet
(Jun 9th, 2009)
The Trammel/Felucca Dilemma
(Mar 10th, 2009)
Pirate Expansion, A Concept
(Feb 20th, 2009)
Artificial Life Engine
(Jan 27th, 2009)
Flashback 2008
(Jan 16th, 2009)
UO Too Much Based on Items?
(Dec 9th, 2008)
Britannian Towns Deserted
(Nov 15th, 2008)
Improving the World
(Oct 21nd, 2008)
Requesting a Pirate Expansion
(Sep 30th, 2008)
New Craftables Discovered?
(Aug 14th, 2008)

Static Spawn vs. Artificial Life Engine

When I decided to become an UO subscriber back in 1997, I somewhere read a very appealing description about the artificial intelligence of game creatures. I managed to dig out the exact wording of this ad, after carefully going through my 10 year old UO papers:

"Nearly everything in the world, from grass to goblins, has a purpose, and not just as cannon fodder either. The 'virtual ecology' affects nearly every aspect of the game world, from the very small to the very large. If the rabbit population suddenly drops (because some gung-ho adventurer was trying out his new mace) then wolves may have to find different food sources - say, deer. When the deer population drops as a result, the local dragon, unable to find the food he’s accustomed to, may head into a local village and attack. Since all of this happens automatically, it generates numerous adventure possibilities."

(It was one of Designer Dragon's original concepts. I reproduced some of his ideas from my memory.)

This statement describes one of the most entertaining and challenging features of UO, which unfortunately never got implemented. Because of several hurdles and concerns, the whole artificial life idea was considered a boondoggle and never got past Alpha. So, today we still have static spawn with very primitive monster AI, which is why the world of UO is a static and mostly predictable place which offers very predictable challenges to the adventurers.

Today, certain creatures (both animals and monsters) spawn in a certain area, where they wander around and do nothing. When you kill them, they will respawn in the same place after a short time. This applies to overground spawns as well as dungeons. The consequence is that when a player goes there and kills stuff, it has no effect on the world whatsoever. The creature just respawns. This may sound like an advantage to someone who wants to gather a lot of resources, but it has several downsides, which outweigh our lazy resource farmer's argument:

Everything becomes predictable. You know where to go when you need a certain item (gold, resources, skill). Adventuring and exploring becomes obsolete. People just recall to a point of interest, do their thing and recall out. It neglects the huge potential the world of Ultima Online has: Being a world that always changes in unpredictable ways. A world where players forge their own destiny.

It may be worth considering whether UO really needs more items, more land and more extensions, or whether the game would benefit much more from making the existing content more interesting, challenging and dynamic. What a good game needs, is causality. The actions of players need to have a visible impact on their environment.

Features of an Artificial Life Engine

So, what exactly is the Artificial Live Engine? The idea behind this system is that every creature is driven by its individual needs, like Food, Shelter, other Desires/Aversions (in that order). Every object in the world has certain properties that determine the purpose and usability of the object (WOOD, METAL, MEAT, FRUIT, HIDES, VEGETABLE, WATER, GRASS, TREE, BUSH).

A rabbit would produce resources like:
MEAT (small amount)
HIDES (small amount)
For surviving, it would pursue its needs:
VEGETABLE (Food, small amount)
GRASS, BUSH (Shelter)
CARNIVORE (Aversion)

A wolf would produce resources like:
MEAT (medium amount)
HIDES (medium amount)
For surviving, it would pursue its needs:
MEAT (Food, medium amount)
CAVE, TREE (Shelter)
CARNIVORE (Aversion)
OTHER WOLVES (Desire: Pack instinct)

A dragon would produce resources like:
MEAT (large amount)
HIDES (large amount)
SCALES (medium amount)
TREASURE (medium amount)
For surviving, it would pursue its needs:
MEAT (large amount)
CAVE, MOUNTAIN (Shelter)
GOLD, TREASURE (Desire)

Creatures who live in a pack may change their needs and hunt down bigger MEAT suppliers (like big animals or even humans). If a need cannot be satisfied, the creature may take higher risks or travel further to search for food or shelter. Creatures would become more powerful, the more "fights" they'd win, up to a certain level.

The creature behavior would apply to the following rules:

  • If hungry, search for appropriate Food. Attack/eat. Wander as far as necessary to find food.
  • If not hungry, start looking for a Shelter. If a shelter was previously chosen, go there.
  • If in the lair and not hungry, look for things of Desire. If those things are found, bring them back to the lair.

When a dragon spawns, it first would look for food. When its need for feeding was satisfied, it would search for a shelter. A big enough cave or mountain pass, for example. It then might try to satisfy its desire for gold and treasure, and hunt down other monsters or players, before returning to its shelter to store its loot. If he becomes hungry during this process, it'd start hunting for food. Now, should a tailor kill all the deer in the dragon's vicinity to gather hides, this would affect the environment. The tailor would (unwittingly) deprive the dragon of its food source. The dragon then would increase its search radius, and even could invade a nearby village. The players wouldn't even have to kill the dragon; they could feed it by supplying herded animals, for example, after which it would retreat to its cave.
If a dragon would wipe out a wolf population, this could lead to a stronger rabbit population (due to a lack of natural enemies), which - as a consequence - would again attract wolves. A balanced biological cycle!

When Ultima Online was in Alpha testing, such a system was actually in place, and it worked. You saw cougars hunting deer, wolves killing rabbits and eating them, then after feeding, retreating to their lairs or searching for other things they desired. The radius, however, was very limited (about 2 screens) due to pathfinding issues. The creatures even got more powerful the longer they lived, improving their abilities similar to players. A wolf who had been in a lot of scrapes could get tougher. (Due to a lack of a cap, this actually led to some incidents some of us have heard about in legendary tales: Bunnies surviving in the wilderness for a long time would become dangerous killer rabbits, who could take down an entire pack of wolves or even kill clueless adventurers.)

Such an Artificial Life Engine could be applied to all kinds of animals and monsters, even in the dungeons. Monsters feeding from other monsters, searching for items they want, hoarding them in their lairs. Monsters who cannot feed would become more agressive, also towards players. They even could have a pack instinct and team up against players. This would make a dungeon very dynamic and unpredictable. Any player interference would unbalance the system inside a dungeon level and completely change the dungeon in an unpredictable way. If being left alone for a long time, the dungeon would establish a new balance once again.

Hurdles of the Resource System

Complex pathfinding algorythms would be needed to allow creatures to find their way to a desired resource, even if it is far away. This requires a lot of calculating and thus a lot of CPU power. This was a technical reason against such a feature back in 1997. However, CPU power has increased twentyfold ever since, and I'm sure there are ways to make pathfinding more efficient. Ideas to put monsters to sleep when no player is near (in order to save CPU power) would not be reasonable, because then the whole system would become mostly static again.

As you can imagine from above examples, a world full of thousands of different creatures would have to live in an ecological balance. The system has to be balanced, when no player is involved. This means, you don't want to end up with a world full of dragons, just because they are at the top of the food chain. When players enter the world, they will automatically unbalance the system by hunting down animals and monsters. This will have an unpredictable effect on the world, and therein lies all the fun, but also the challenge.

I wonder why nobody has tried to implement such a system yet. It would be so much more fun playing in a game world which reacts dynamically to player activities. A dynamic world would even diminish illegal player scripting activities. The examples above only show how dynamic game content could improve creature hunting and its effects. In a future column I will give more examples about what potential lies in such a system. The possibilities are endless!

[ Back to the main page ]