UO’s resource system, part 3

 Posted by (Visited 37062 times)  Game talk
Jun 052006
 

The UO Resource System series:

[text-blocks id=”postmortems” plain=”1″]

I’ve now written two posts that were far lengthier than I anticipated, about the way that UO’s resource system was originally intended to work. The first dealt with underlying data structures, and the second with applications of those data structures to the actual world. I want to talk a bit about future directions that we didn’t get to pursue.

Cool ways to use what we already had
The mining system in UO was an example of “transmutation” in action. We placed ORE in the chunk eggs based on the presence of rocks and the terrain rock texture. We mined ORE out by clicking on rocks or the rock texture and transferring the ORE to the new “pile of ore” object.

When I added in the varieties of metals to the system, the way I did it was by adding a dynamic variable to the chunk egg. The were called “object variables” or “objvars” in UO parlance, and they were essentially flags with values that could be attached to any dynamic object. You could tag someone as “BEAT_THE_HARPY” with a value of “TRUE” and then use hasObjVar(target, “BEAT_THE_HARPY”) to see if the objvar was present, or val = getObjVar(target, “BEAT_THE_HARPY”) to get that value into a variable for script use. These objvars were persistent, so you could build complex systems out of them.

I simply attached a little script to every chunk egg that checked to see if it had an objvar that defined a metal type. If it didn’t, then it randomly chose a metal type and set the objvar to that value. This meant that after this script was updated, every chunk in the world bore a different kind of ore. I weighted some to be rare and others to be more common.

When the ORE was mined, I had the mining script transfer that variable to the new object along with the ORE resource. I also had it tint the ore graphic based on a standard lookup table, dependent on what the value of the objvar was. And thus colored armor was born — we simply had each step transfer the variable along.

This worked even when we actually recycled the ORE and conjured up METAL out of thin air instead. This was the step of refining the ore into ingots. You could also combine ore — I don’t recall how we handled this, but it was probably by picking the commoner of the two types. It would have been fairly easy to add new metal types that were not minable but were only available as alloys, too. In a more modern system, we would have instead had types of METAL such as IRON or COPPER that inherited from the base type — and that is in fact how SWG worked.

This sort of transmutation, where you query the amount of RESOURCE1, delete it, and then create a corresponding amount of RESOURCE2, permitted the concept of “refinement” of one type of quality into another. COTTON or FLAX into CLOTH is a similar thing, only with the wrinkle that it permits two different initial sources to become the same sort of thing in the end.

I mention this example just to point out that there were a lot of possibilities for the use of transmutation of one resource type to another; for example, a stone mage could use up ORE as resources and turn it into MAGIC; really, we should have made one’s mana pool be literally how much MAGIC resource they represented. A druid could have instead drawn power from the amount of GRASS or TREE that was around. And a necromancer — well, every time something died, it could have added DEATH to the chunk egg based on what was killed; a necromancer would then be able to “mine death magic” from spots where many things had been killed. Had we done this, I am sure we quickly would have had necromatic sacrifice altars, and they would have intentionally herded players (who of course would carry much power!) to those places to die. Temple of Doom, here we come…

Other applications based solely on what was already present:

  • You could do real tracking, based on things leaving traces in the chunk eggs.
  • You could have NPCs or creatures who collected or desired items with specific resources.
  • You could easily do a nice “detect magic” or really, “detect anything” sort of informational spell, with strength of the glows dependent on the amount of the resource present
  • You could create secret or transmutation paths — mix MAGIC and METAL to make MITHRIL or something, regardless of what the item looked like originally.
  • You could do “melting down” of materials.
  • You could create greater or lesser susceptibility to damage based on conditions. It’s easy to imagine a HUMIDITY value stored on a chunk egg — it could even move around. And then it could affect the growth rate of GRASS or the decay rate of METAL.
  • This also reflects the whole “dragon fire breath actually sets things on fire” thing.
  • Player actions could affect resources on them, such as reputations with certain groups, karma, and so on. They could acquire the “scent” of things they worked with often, for example. This would then replace a typical stats system, which would need to be hardcoded to interact with every other data type in the game.
  • This could, for example, allow a disease to be transmitted invisibly across the game, affecting only, say, magical reagents — and players could be the carriers without knowing it, unless it was detected by a spell or skill.
  • Most obviously, had we chosen to incur the cost of streaming the chunk eggs, we could have actually made the rendering of the chunks change based on what the chunk egg represented. As the grass is eaten, bare dirt is left behind. As the ore-bearing rock is reduced, change the rock tile to gravel. As the temperature changes, draw dead grass or even snow. And so on.

I could go on; suffice to say that even with just an abstract property system and no real AI work, there’s lots of potential for a lot of interesting and fresh gameplay.

What we didn’t have: causality
But the real issue with something like the dragon example is, “how do I know that the dragon is hungry, and not just a random spawn?” In other words, there needs to be a sense of purpose to what is going on.

The reason why it matters that the dragon is hungry and not just a random spawn is because it suggests multiple ways to solve the problem. You could kill the dragon. You could also feed it to get it to go away. Herd deer in between you and the village, let’s say. The problem is, maybe there is no reason. How can the player tell?

Let’s take the simpler case of some rabbits who eat the lettuce out of a farmer’s garden. What you really want is for the farmer to tell you “I’s gots me some rabbit issues; filthy buggers’re eatin’ muh lettuce! I’ll pay ye ta ‘sterminate’em!”

The proposed but never implemented method for handling this required knowledge at one step remove. The farmer would DESIRE his lettuce; this means he would walk around where it was, when he was not hungry, and if he could pick it up, he’d transfer it to his home. But the rabbits want to EAT the lettuce. If the farmer knew the name and template type of whatever was making him unhappy by competing for his desired resource, then he could complain about it. And if we tracked what the player killed, he’d know that they were good rabbit exterminators and possibly provide a reward, without there being a static quest defined.

What’s more, if players killed all the rabbits, but what came along next time as a spawn that ate lettuce happened to be deer, or even a lettuce blight, then the farmer would respond in the same way — anything that was eating “his” lettuce would be somethng he could complain about, and reward those who took action.

Similarly, in the village-attacked-by-dragon case, the villagers would have to like having other villagers around, so they could complain that “their” villagers were being destroyed by something else. You could extend this to any number of things. Let’s say that the smith loves “his” METAL objects. If a rust monster wandered through town and damaged the METAL, then he would complain about that but no other villagers would unless they also DESIRED METAL.

The implementation problems here are tricky. First, we would have needed to have some sort of registry so that the farmer could know about the rabbits, who are a third party to his relationship with his beloved vegetables. Worse, we would have also needed to relay the player actions against this third party so that the farmer could supply rewards and commentary.

Because of these hurdles, and because there was always something more urgent going on, we never got this in.

A similar thing that we wanted above and beyond the basic resource system was the concept of targeted desires. Instead of abstractly liking all METAL or all MEAT, we wanted to support the ability for something to pick a favorite: a preferred sword, a favorite pet. The test case that we designed for this was actually a love triangle.

Both Fred and Bob would DESIRE (to be crude) HUMANFEMALE. They would both search around for an object that met their desire, which would mean they would both hang around a female human NPC whenever they weren’t hungry. However, if they found one that satisfied their desire (probably with a bit of a random roll) they would fixate on only that NPC, and poor Nellie would find that both Bob and Fred hung around her a lot.

Now, HUMANFEMALE is a consumable resource. Bob, when around Nellie, is actually reducing it. And that means, when you talk to Fred, he would be able to say “”I’s gots me some Bob issues; filthy buggers’re eatin’ muh Nellie! I’ll pay ye ta ‘sterminate’im!” (or something of the sort). Bob would be able to say the same thing in reverse. You could even solve the problem by finding something else for one of the two swains to do. Even more interesting — if the dragon came along and ate Nellie, both Bob and Fred would be the first in line to seek revenge, or give a reward to a player who tackled the dragon problem.

Similarly, rather than manually setting up paths and schedules for NPCs, you could create a script that has them gradually increase a FATIGUE value, or that switched their SHELTER from WORK to HOME locations based on the time of day. You could have law-abiding citizens have an aversion to anything that produced DARK, so that at night they would cluster in lit interiors and under lamps, whereas only thief NPCs would be in the shadows.

The highest level of interface to all of this that we would have wanted for players would have included the notion of town criers and other news sources that pick “stories” from the ether and broadcast them. “Farmer Hayseed is pissed off about his lettuce getting eaten!” “Plague of street urchins won’t leave noble warriors alone!” “Fred kills Bob in jealous rage over Nellie!” and so on.

Problems: closed loops, homeostasis, feedback
All of these sorts of applications rely on a large bank of dynamically assembled text that is contextual to the situation. With the current desire for international localization of text, it’s unlikely that you can even execute on this. Localization tends to demand static text, and indeed, UO had piles of dynamically assembled text that was removed when the title was localized to other languages, costing the game’s dialogue much of its flavor.

All of these higher-level applications can only really be built on top of a fully functional animal-level behavior system. What’s more, in work since then, I have become persuaded that in fact, you need to drive the simulation to lower levels, such as humidity and temperature, just so you don’t find yourself creating special cases for simple behaviors. This leads to the concept that you could in fact build the whole world out of this, and just render textures and objects based on what resources are present, a concept first demonstrated in ALife examples such as Sugarscape.

In fact, it should now be evident that what this represents, in totality, is just a fairly elaborate “artificial life” engine, grown to the point where it encompasses spawning, basic behaviors, and even a higher-order quest system.

However, without the following ingredients, there’s little point to implementing something like this:

  • It has to be visible and responsive to players. This includes exposing causality. Otherwise, it might as well be random.
  • NPCs need to be able to communicate to players about wants, and need to react to those wants.
  • Static data must be avoided at all costs, which is incredibly difficult for a traditional game development team.
  • The myriad of variables must push towards homeostasis, rather than boom-bust cycles. A lot of Alife sims end up in boom-bust, and that’s not interesting to users.
  • Naturally renewing resources can’t be in a closed loop, because of player hoarding effects.
  • You have to solve CPU issues with pathfinding and searches in order to make the system tenable.

There were discussions on MUD-Dev circa 1998 about other means to handle this sort of system within a reasonable CPU budget. One approach that would probably work for the latter is to use “level of detail” for the areas. If no players are around, stop instancing up individual wolves hunting individual rabbits; instead, save all those off, and calculate periodically how many wolves and how many rabbits would be there after a certain amount of time.

You could stuff the world data into a quadtree and run higher and higher-level sims, instancing all the data back out only when you needed to interact with it in granular fashion; or you could timestamp the last interaction, and “catch the sim up” when a player approaches. This latter method was in fact used for handling harvesters and the like in SWG, since they tended to reside in areas that we actually took offline when no players were around. Using hillclimbing and broadcasting rather than constant radial searches is another approach. Lastly, truly treating the whole thing as an artificial life landscape would allow you to even use image processing techniques to update the grid, since they have been highly optimized.

On the closed loops, I have come to believe they were basically a mistake. The real world offers resources that are infinite in practice for most situations; it is local scarcity that is interesting. The issues with exposing the causality of things can be solved, I am sure, but they will take some work.

In conclusion
To my mind, this sort of algorithmic approach to developing a virtual world is not only the past, in UO’s case, but also the future. It is not hard to imagine our crude “METAL” with no parameters acquiring things like “melting point” and “brittleness” and then being plugged into physics simulations in the holodeck. There comes a point where a robust simulation model, even an abstracted one, is a cheaper thing to develop than the giant piles of use-once quests and data that we currently enjoy in the MMORPGs today. Even social worlds would benefit from having this sort of underlying mechanic, because if implemented properly, it exposes simplified levels of robust interaction to everyone and gives people something to talk about.

I also think that there is nothing wrong with having traditional static data layered atop this. Making an NPC with a hardcoded quest, no FOOD, SHELTER or DESIRE needs, and blissful ignorance of the situation around him is still easy in a system of this sort. On the other hand, how much better if he knows enough to freak out when the dragon comes up to the castle and starts frying chamberlains.

I’d much rather be burning CPU on this sort of thing, frankly, than on 3d collision. A lot of players complain about whether or not they can jump over a short wall, and believe me, I feel their pain (a story for another day) — but the kinds of immersive power that a simulation like this can bring opens a lot more doors.

In the long run, I believe that all the pressures are towards simulationist environments, rather than handcrafted ones. CPU power continues to outpace the cost of human capability to design static scenarios. At some point, reality will catch up to our designs from 1995.

Postscript for the curious — I was reminded in the comment threads that the original UO strategy guide actually had in it all the resource values for everything in the game, as well as things like the actual AI algorithm for falling through FOOD, SHELTER, and DESIRE.

  77 Responses to “UO’s resource system, part 3”

  1. Online. Some interesting stuff in there from a virtual world design standpoint. Here are the three articles: Part One is about the underlying data structures. Part Two is about the application of those data structures to the virtual world.Part Three is about the future directions they didn’t get to pursue with UO, and an ample source of ideas for your own creations. Those articles reminded me of a permeating magic discussion that was going on the RPGDX bulletin board a while back that generated

  2. post three) about the resource system in Ultima Online, how it was suppose to work, and why it didn’t. What is really interesting, at least to me, is how the resource system was suppose to tie very heavily to the behavior of creatures.

  3. More Interesting AI Raph Koster has posted a GOLD MINE of information on the ecological / economic systems of Ultima Online (see part 1, part 2, andpart 3), and a discussion on the “dumbing down” of NPCS in MMORPGs. Raph’s comments go on how these sophisticated plans for Ultima Online and Star Wars Galaxies were eventually deep-sixed in favor of maintainability and simplicity (not to mention catering to

  4. crap more forgivable. And boy is it ever random. They’re just making it up as they go along; I’m radically lowering my expectations for any kind of resolution ‘cuz it’s only coming haphazardly if at all. Raph Koster just posted a 3-part blurb aboutthe UO resource system

  5. the "working memory" though I’m not quite sure what this specifically is. (I found this in System.Environment.WorkingMemory or something, I haven’t looked it up yet.) I also finished reading about Ultima Onlines resource system plans: Part1 Part2Part3 I found it interesting as I use to play UO. No recent mmorpgs interests me at all, they are just cooperative, single player style, games in a vast chat room. In UO the game and game goals were more emergent from interaction with the players,

  6. to his blog feed. Today, I went back to the blog by chance and found some great posts he has made recently on game AI. The series of three posts began when he was commenting on Raph Koster’s recent posts regarding Ultima Online (here, here andhere). In that first post, Jay talks about how perception is reality in games. In the next post, he pontificates on points he picked up at an old GDC session on how to make AI more believable. Finally, the last post

  7. UO resource system write-up, long lost (and missed by me as reference material)–of course he did this in June 2006 when I was concerned with things like interviewing for a new job. UO’s Resource System (part 1) UO’s Resource System (part 2) UO’s Resource System (part 3)

  8. I can’t explain why, but I always look at my memories in UO through rose-colored glasses. I remember playing back in 1997 and getting PK’d all the time as I mined ore (which was always gone due to the now-defunct resource banksystem). I took some time off for a few years but eventually found my way back. A lot had changed in my time away, but I found a good group of friends to help me through the transition. UO was a sandbox in many ways. Origin Systems provided the world but the

  9. My opinion if someone redid UO with Ralph’s creature behavior patterns, I think we would have a new hit over night.

  10. Raph wrote:
    To my mind, this sort of algorithmic approach to developing a virtual world is not only the past, in UO’s case, but also the future.

    Eugenius wrote:
    My opinion if someone redid UO with Ralph’s creature behavior patterns, I think we would have a new hit over night.

    RunUO. There! You can experiment now. 🙂

  11. My opinion if someone redid UO with Ralph’s creature behavior patterns, I think we would have a new hit over night.

    Yeah, that would certainly be neat to see, but I’m afraid too many people have so much emotionally vested in what they want(ed) UO to be and made so many compromises in their minds (or sacrificed their wants really) that any rehashing of UO would be crippled by over-adoring fans.

  12. Seems the root of the problem is the same one that plagues nearly every aspect of “simulation”–that perceived causality is more important than actual causality. But you said this before, if a player can’t readily determine why things are happening, then it may as well be random.

    I’d liken it to a kind of uncanny valley of simulations. As you simulate something with more and more accuracy, you encounter more unexpected (from the player’s POV) behavior, and you’re forced to either impose more artificial limits, or simulate even more accurately.

    Like all systems, it’s a matter of balance. Take software development. You want to abstract away your objects, behavior and state up to a point, to facilitate faster development, more flexibility, etc. But if you keep going, eventually you end up bogged down in an Architecture Astronaut hell of Manager-Factory-Visitor-Work Items.

  13. […] Cool ways to use what we already had The mining system in UOUltima Online von Electronic Arts. was an example of �transmutation� in action. We placed ORE in the chunk eggs based on the presence of rocks and the terrain rock texture. We mined ORE out by clicking on rocks or the rock texture and transferring the ORE to the new �pile of ore� object. When I added in the varieties of metals to the system, the way I did it was by adding a dynamic variable to the chunk egg. The were called �object variables� or �objvars� in UO parlance, and they were essentially flags with values that could be attached to any dynamic object. You could tag someone as �BEAT_THE_HARPY� with a value of �TRUE� and then use hasObjVar(target, �BEAT_THE_HARPY�) to see if the objvar was present, or val = getObjVar(target, �BEAT_THE_HARPY�) to get that value into a variable for script use. These objvars were persistent, so you could build complex systems out of them. I simply attached a little script to every chunk egg that checked to see if it had an objvar that defined a metal type. If it didn�t, then it randomly chose a metal type and set the objvar to that value. This meant that after this script was updated, every chunk in the world bore a different kind of ore. I weighted some to be rare and others to be more common. When the ORE was mined, I had the mining script transfer that variable to the new object along with the ORE resource. I also had it tint the ore graphic based on a standard lookup table, dependent on what the value of the objvar was. And thus colored armor was born � we simply had each step transfer the variable along. This worked even when we actually recycled the ORE and conjured up METAL out of thin air instead. This was the step of refining the ore into ingots. You could also combine ore � I don�t recall how we handled this, but it was probably by picking the commoner of the two types. It would have been fairly easy to add new metal types that were not minable but were only available as alloys, too. In a more modern system, we would have instead had types of METAL such as IRON or COPPER that inherited from the base type � and that is in fact how SWGStar Wars Galaxies von Sony Online Entertainment. worked. This sort of transmutation, where you query the amount of RESOURCE1, delete it, and then create a corresponding amount of RESOURCE2, permitted the concept of �refinement� of one type of quality into another. COTTON or FLAX into CLOTH is a similar thing, only with the wrinkle that it permits two different initial sources to become the same sort of thing in the end. Link: UO�s resource system, part 3 150)?150:this.scrollHeight)”> __________________ The tools suck! — Raph Koster […]

  14. Raph wrote:
    All of these sorts of applications rely on a large bank of dynamically assembled text that is contextual to the situation. With the current desire for international localization of text, it’s unlikely that you can even execute on this. Localization tends to demand static text, and indeed, UO had piles of dynamically assembled text that was removed when the title was localized to other languages, costing the game’s dialogue much of its flavor.

    Now we’re down to business interests trying to please everyone again. There is far more risk inherent to "globalizing" products for multiple languages and cultures than there are benefits to be gained from developing products "localized" for a certain language and culture. Cross-cultural design is always complex, difficult, and always requires a lot of expertise to be performed effectively. Cross-cultural design is also expensive and consumes resources that could be better spent on increasing the value of a product to a particular audience. The rule is that you cannot satisfy all interests. You can aspire to satisfy all interests; however, this aspiration — much like the aspiration to achieve perfection — degrades performance, productivity, and eventually profits. There are exceptions to every rule; however, banking on remote possibilities is the primary factor that attributes a great degree of risk to cross-cultural products. There is less risk in doing what we do best, and rarely do we ever satisfy all of our interests in our daily lives.

    From a marketing perspective, developing an extraordinary English product will capture more share of the U.S. market than a mediocre multilingual international product. Sure, it’s nice to enable multilingual accessibility, but is that good business sense? In some cases, yes; for instance, when business interests are not concerned with market share! When you develop an incredibly unique and successful product for one language and culture, you lead the market by providing prospective Competitors the Capability to Compete — I reserve the right to declare this concept the "Three Cs" and proclaim myself a marketing guru 😉 — which eventually means the expansion of the market and thus your market leadership becomes more potent. Why, you might even attract speakers of other languages to adopt your language! Ultimately, pro-globalization business interests are attempting to preserve other languages from extinction. That may not be intentional…

    We should consider a new business model that does not rely on population growth in consideration of nations whose populations are expected to decline and nations whose populations are declining. Japan, for example, may become the first country to experience declining population and will likely become a world leader in business strategy that does not rely on population growth. I believe there are several Japanese business groups working on such systems already.

  15. Even better than the last one…

    great comment Morgan

  16. […] Comments […]

  17. The way financial engineerings look at modelling and then attempting to forecast financial prices could be of use in developing bettter VW simulations:

    1. They have factor models which helps them pin-point the key statistical factors (based on sound economic or theoretical sense) that determine behavior of security prices. The crude application of this D&D loot tables with their probabilities.
    2. The next level application is mean-variance analysis, which you can use to plot out an optimal paths (e.g. efficient frontier) of risk vs reward which can be used to fine-tune loot payout for quests
    3. The next technique is factor push, which is with the model and the mean-variance analysis you can push a factor to see what spits out.
    4. This then leads to scenario analysis and then monte carlo simulations
    5. So in essence you can optimize an suitable working VW simulation of the “basic” ecology on a single workstation like an elaborate ALife simulation, before going into implementation.

    The hard part is to add a cool hero game system on top of that. Coming from the risk-reward, probability and factor optimization perspective, current game designs already implement some of these concepts, but rather simply.

    Taking it to the next level could be a boondogle, but I agree with Raph and also Will Wright. that simulation and procedural approaches will yield greater return on investment given their greater scale. The first team that gets this right will make a lot of money by providing a more dynamic and scalable game worlds (which can run a lot of other stuff like a combination of WoW & SL) at lower cost. Will Wright is taking on the procedural angle with Spores, but given he and his team’s experience with simulation approaches, the question is what happens when you combine The Sims with Spores?

    Frank

  18. This is really fascinating stuff, Raph and truly intriguing design decisions (especially what was left out). Thanks for posting it!

    It’s also highly amusing to see how much of my own ecological work could (to an outside eye) look derivitive of yours even though i’d never seen this stuff before or played UO.

    Can you tell us, are there any particualr massive downsides which developers should avoid? What would you do differently?

  19. The single biggest downside I can think of is in planning it. We should have been able to implement the whole thing as a “blue squares” demo with simple graphics and grids, to prove the concept out. Instead of wasting everyone’s time working on it within the game engine, a standalone app could have been used to tune it and make sure it worked.

    Adding into this app a player agent that behaved as we saw players do would also have made a big difference. We could have avoided some of the boom-bust and closed loop problems if we had simply been able to do test runs.

    The loss of predictability is something I just don’t buy. If you need it, you add it on top very easily — we after all added a lot of it — just the fact that shopkeepers were present is a good example. Similarly, the “dragons overrun one server” is the sort of thing that is easy to overcome: have fixed numbers of dragons that can come out and play, guarantee there is always one in the world, whatever.

    I’d definitely look into the level of detail approaches to reduce CPU.

    Now we’re down to business interests trying to please everyone again.

    A common desire of business interests. 🙂

    I tend to agree that it makes little sense to damage the experience for current customers for the sake of improving it for the many. If you really need to go that route with localization, add static messages, rather than replace the already extant system that people like. When localization went into UO it became a dirty word for then-current players.

  20. […] Anyway. Read the 3 posts on Raph’s website and help me brainstorm some system to implement to pass the time. Studying some bifurcation maps would be much more interesting provided one knew it were modelling “units of goodness” and the current exchange rate for “Nick’s mom” or what have you. […]

  21. Raph, in any of the future worlds you work on, will you try to include a system similar to this?

  22. Lums banned me again. Sorry I don’t suck up enough and support the status quo as every last one of you wants. I’m sure you yesmen will do great things together. Anywho, as after I make this comment I’ll be banned here to. Here goes:

    1. Advertisers define mass market as do most media companies and mass market is a % of a possible market. How many people on this planet have Internet access? What percentages are you appealing to/selling to?

    2. There’s nothing wrong with being a niche player. There have been many throughout history. No one remembers them because in the end their ideas and efforts were meaningless compared to those who knew how to market the bare bones of thier efforts.

    3. See George Baldwin Selden http://en.wikipedia.org/wiki/George_Baldwin_Selden and Henry Ford http://en.wikipedia.org/wiki/Henry_ford

    4. Eventually someone is going to invent an MMOG that replaces TV shows and will steal a prime time slot. That person will not be Raph.

    5. It won’t be Raph because he’s not interested in mass market appeal even though his idea will die and wither without that appeal. He has a vision and he won’t settle and eventually Henry Ford will come along and take his basic idea and that is how it goes.

  23. When localization went into UO it became a dirty word for then-current players.

    Not sure if you mean localisation in this way, but that’s sort of like when the SOGA models were added to EQII. I actually liked some of the new models better than the originals, but just the thought that you could pick and choose what other av’s looked like was a huge immersion killer for me. I customize an av to appear the way I want others to see him in game and all of a sudden he may appear as an entirely different character that appears nothing like I intended? No thanks.

    It was, I believe, an attempt to appeal to players who prefer the more “Asian” or anime-style character models, so not necessarily “localisation”, but definitely “trying to please everyone”.

  24. Raph, in any of the future worlds you work on, will you try to include a system similar to this?

    That would very much depend on what sort of world I was making. I think you try to use the right design tools for the job. I have to admit that my head is not currently in the “build a massive budget virtual world” space.

    It won’t be Raph because he’s not interested in mass market appeal

    Oh, I don’t think that is at all accurate.

  25. […] ����! �������� ������� � ��������� ������ ���� �� ��� �� ������ ������ )) ������� �������, �������� ��������� �� �������: ( https://www.raphkoster.com/2006/06/05/uos-resource-system-part-3/ ) […]

  26. […] Just FYI, Raph Koster, author of "A Theory of Fun," just finished blogging a series of articles that describe the process they used to create the resources system used in Ultima Online. Some interesting stuff in there if you’re looking to build a more environment-based RPG (as opposed to scripted, console-style). Here are the three articles: Part One is about the underlying data structures. Part Two is about the application of those data structures to the virtual world. Part Three is about the future directions they didn’t get to pursue with UO, and an ample source of ideas for your own creations. Those articles reminded me of the permeating magic discussion we had a while back, and makes me want to go back and revisit it. Heh._________________Visit the Sacraments web site to play the game and read articles about its development. […]

  27. Wanted to add to (Franks) post:

    In healthcare we have predictive modeling as well. The basic premises of which you outlined using financial modeling (same thing different name). Now you can run algorithmically valid analysis based on current data sets, and project forward thingssuch as: Cost, Incidence of Disease, and without going into to much detail, things like length of stay (at a hospital etc) vs certain types of disease processes or procedures (all this data is what we use to set rates which determine how much you pay monthly for healthcare) and is why entirely new industries have sprung up: disease management being the most prominent

    This system of data mining and actuarial work is primarily reliant on database systems, obviously. Therefore, Idont see any reason why you couldnt conceptually port the predictive modeling/data mining systems used in Finance, Healthcare, Marketing (particularly so since like healthcare they often control for behaviors) even the Petroleum industry (actually would be highly relavent to resource targeting, mining, and geographic analysis) into building a virtual world, where you’ve predictivly modeled the behaviors of multiple participants whos behaviors are then run off of a database of set outputs(hmmm not sure of the game design terminology here).

    Much like what Raph describes,if I understood correctly, in hard coded terms: but in this case NPC’s reacting based off of behaviors algorithmically programed into a database. So the primary work would involve setting up the predictive modeling algorithims (which could be subsequently adjusted on the fly) and building the resultant behaviors.

    Theoretically you could then have a system where everything from grass gorwth to dragons attacking villages, and kidnapping the Mayors daughter, and NPC’s subsequently spawning quests runs off of a database rather than a hard coded AI. In this instance you offset the cost of having in game event staff by having a good data base programmer adjusting the behavior algorithims when say….theres an overpopulation of bunnies…or dragons. Perhaps even an App could be developed that would synamically adjust the system based on over abundance or rarity.

  28. Now if I could data mine my way to a spell checker….wouldnt that be a feat! 🙂

  29. Put another way, Chris Crawford, in “Chris Crawford on Game Design”, strongly encourages emphasizing “process” over “data”. Put yet another way, it’s the difference between F=ma (a process) versus using the table of trigonmetric functions to look up what sine of 42.83 degrees is. Processes are universally applicable inside the context for which they’re made; data is, well, not.

    That’s why, in my opinion, the simulationist perspective is the one we’re moving to. Because at you’re going to want to permit the user to do more and more things, and you can’t predict all of it.

  30. […] rnum=Math.round(Math.random() * 100000); document.write(”); Ultima Online Chatzone MAIN    UP    REPLY UO’s resource system Zappa 12.195.89.1306/6/2006 12:45:54 PM This explains alot about how things worked in the game that us players were only able to delve into on the bare surface. It is a very nice read on something that few people notice.https://www.raphkoster.com/2006/06/03/uos-resource-system/https://www.raphkoster.com/2006/06/04/uos-resource-system-part-2/https://www.raphkoster.com/2006/06/05/uos-resource-system-part-3/ […]

  31. A lot of this sounds very cool on the surface. From a player’s perspective I totally agree with causation being transparent. I’d even say that should be one of the highest prioity objectives when designing a virtual world like you are describing. I’m curious though, isn’t this what Will Wright is doing with Spore, at least as far as the creatures are concerned, with procedurally created content?

    Also it seems like the underlying database structure and logic would be a great candidate for a middle ware system that can be sold to developers who can then further customize the world.

  32. Michael said:

    That’s why, in my opinion, the simulationist perspective is the one we’re moving to. Because at you’re going to want to permit the user to do more and more things, and you can’t predict all of it.

    Even just looking at the stuff we CAN predict—who wants to hard-code all that behaviour when a generalized system can figure it out automatically?

    The thing I worry about with “the simulationist perspective” in an MMO is, with all that emergent behaviour, there may be lots of game-breaking interactions possible that you don’t find out about until your min-maxers discover and start exploiting them. OTOH, plugging exploits is a full-time job in most MMOs anyway. It might be only incrementally worse than what we have now.

  33. Just going to wander onto a side-topic for a minute here. You know what’s wrong with procedurally-generated content? It’s too bland!

    When I was in high school (in the 90’s) I was dreaming up designs for generating 2D landscapes with realistic placement of rivers, forests, towns, mountains, etc. Systems that could randomly generate an entire adventure game world (ala Final Fantasy Adventure for the gameboy) with one or more “intended paths” through the world. All procedural, with predefined chunks of static content fitted together and layered on top of it. Then I found myself playing one of the tile-based adventure games of that era (I think it was the Zelda game “Link’s Awakening”, for the Gameboy Color). And there was so much interesting content crammed into that tiny map! And it was fitted together in interesting ways. And almost every bit of it was visually unique. I realized that a randomly-generated world would have to be ten times as large to contain the same amount of useful content, and getting the useful content to fit together in a way that made sense, and supported the story, and was interesting–would be way harder than just statically designing all of the content in the first place.

    And that experience more or less killed my interest in procedurally-generated worlds, until I was well into university. And over the last 5 years, I have mostly thought of it in terms of using algorithmic and procedural approaches to automate the generation of content which would then be adapted and tailored to make the “static content” we all know and love. And that’s more or less where the industry has gone. Bethesda obviously didn’t hand-place every flower and tree in Oblivion’s world, but the location of every tree IS statically recorded. The tree-placing algorithms are in the world editor, not the game itself.

    One aspect of procedural content that I think is neat, is that if your algorithm for generating that content is cheap enough, you can run it at game-time (when loading that zone, for example). So you’d only have to store/distribute/stream the input seed for the algorithm, rather than all of the “static” output it produces. You can “mix in” any customized parts after the base is algorithmically generated. But how do you get an algorithm which is fast enough to run on-the-fly, and still generates realistic content for you? No time for modelling of soil erosion etc. You’d have to use lots of clever performance tricks, and its too much effort. There’s probably no point in trying unless you are deliberately trying for a small download size (or something).

    Anyway, in general content is getting too expensive because of the level of detail that players demand. Teams with a half-dozen programmers, and 30+ artists and scripters are not uncommon. Anything that can reduce the cost of creating content is a good thing for the industry. We have to figure out how we can generate compelling content more cheaply than hand-crafting it.

    The “simulationistic” resource system Raph describes in these posts is a good example–the general system can replace, or at least support, a lot of hand-crafted behaviours in your world. But it possibly still fails the “more cheaply” part of the equation, because its more difficult to understand and balance, etc. It adds risk (unexpected interactions are exploitable by players, unpredictable and/or emergent behaviours might annoy players, …)

    Going back to the perceived-causality-more-important-than-actual-causality thing. =) Anecdote: I read somewhere about a first-person shooter whose AI for enemy soldiers gave a convincing impression that the soldiers were aware of each other and working together as a team. One soldier would yell out, “cover me!” and one of his buddies would do so, while the soldier tossed a grenade at the player (or whatever). Now the thing most people don’t realize about game AI is, its easy to make the AI too good. Making an AI which is dumb enough for the player to beat most of the time, but still seems smart, is much harder than making a smart AI! So the enemy soldier AI did not actually use team tactics. Each soldier was making independent decisions about whether to attack, take cover, etc. What the developer did however, was constrain the AI so that it wasn’t allowed to choose to shoot at the player if another nearby enemy was already shooting at the player. This (combined with a brief timeout after it finished shooting at the player before it could choose that action again) caused nearby enemy soldiers to take turns shooting at the player (which is easier for the player to overcome than all enemies shooting at him at once). They noticed that some testers were interpreting this behaviour as a deliberate team tactic, so they added some simple code that when one enemy stopped shooting and chose something else to do, and another nearby enemy started shooting in its place, the one who stopped would shout out “Cover me!” or something similar. This made the enemies “seem” like intelligent, collaborating enemies to players, even though the simulation was more shallow than that.

    In the same way, a successful dynamic MMO experience will have to make it seem to players that the dragon is hunting them because he can’t find enough to eat near his lair. If you don’t do this, it won’t matter whether the dragon attack has some underlying cause in the simulation or whether its just a hard-coded script–it will just feel random to players. And yet, if you figure out a way for players to perceive the motivations you want them to perceive, it may be a lot cheaper (computationally, and in design time) to not actually simulate things at that level of detail.

    Put another way: does it matter whether the number of bunnies is directly controlled by factors in their environment (such as how many wolves are around to eat them, and how much grass there is for them to eat)? How coarsely can you approximate this and still give players the feeling that the world is dynamic and responding to their actions? You’re just simulating a lot of unnecessary details, if players can’t tell the difference.

  34. …Maybe you design a fantasy world where the dragons can talk. While he’s strafing the villagers with fire-breath, the dragon can rant and rave about how hungry he is.

    …That just made me think for a moment how cool it would be to be ambushed by a group of Orcs who are angry about some specific thing and are yelling at the players about it (“You kill Grimlok! You die now!”)

  35. That’s not very realistic!

    I’ve read a few posts lately that have inspired me to write this entry.
    UO’s resource system on Raph’s blog (https://www.raphkoster.com/2006/06/03/uos-resource-system/). This fascinating post, in three parts, talks about the goals, design, impleme…

  36. I’m afraid moo has a point. SWG’s landscapes, while interesting from a real-life hiker’s perspective, were a touch bland from a gamer / monster hunter’s. The scale, density, standard transport corridors etc. were wrong for use as Adventuring Space.

    I guess that’s the challenge here; how do you make an algorithmically generated map into a good gameboard, and how do you make the algorithmically generated creatures, resources, and objects on top of it into good game pieces? (And is the word “tokenization” the right one to use for this process?)

  37. Ah, but see, that’s a huge misconception people have. SWG’s terrain was indeed built algorithmically, but the tool allowed fairly fine control over it. The artists and worldbuilders had control over where things were. They didn’t control every hillock, but the fault isn’t in the hillocks, it’s in what gets put upon them and where they are relative to the mountains.

    Were it not for that capability, there wouldn’t have been places like Deeja Peak, where the terrain and the city interacted nicely.

    The real issue with SWG’s terrain isn’t the terrain, it’s the content put atop it. And the answer there is, we just didn’t have enough of it.

  38. […] I know this answer is kind of a cop-out, but I think anything you can do with the game mechanics should be reference-able/flagged, you know, isSleeping(), isFighting()…look to the game mechanics, there are your flags. It would be nice if you could modify short descs based on a flag check, i.e.: %NPC is standing here. %NPC is fighting %PC. Raph Koster just posted some interesting articles about NPCs and resources on his blog, the latest is: https://www.raphkoster.com/2006/06/05/uos-resource-system-part-3/ Related to that I’d like to see mobs with tradeable flags. For example, a player kills a mob, a witness mob gets a flag to attack the player. That flag isTradeable for a certain duration, such that if the mob runs into another mob, they can pass flags, and the next mob has a chance of picking up the hostileToPlayer() flag as well. It doesn’t have to just be about hostile flags, if a player does a mob a favor they might have a niceToPlayer flag that they can then pass; in this way a player character affects the game world in a more organic, natural way than a script telling all the mobs what to do. […]

  39. Good stuff Moo
    Raph,
    The terrain algorithim, I thought as a player, did its job pretty good, especially planets like Lok and Yavin. Dark And Light seems to have a nice handle on this as well. As Im completely ignorant of most tools that are used in the game design industry, are these apps built in house typically or liscensed?

  40. I don’t understand the talk about causality. Why mustthings be readily recognizable by the player? It takes out thought and wonder.
    So, instead of:
    “why is that dragon wondering so far from it’s mountain home and harrassing our village? Lets go see what we can find out.”

    you have:
    The dragons hungry because some game mechanic tells me so. “Kill the dragon”. End of story.

    I guess I don’t understand why developers think players have to be lead around by the hand. Developers, in effect, are causing players not to think, just to memorize the cause and effects and play by the guide book.

  41. […] I loves me some Raph Koster. He has a discussion of Ultima Online’s resource system that spans three articles, and is completley worth a read. He references the ‘Playing to Bake Bread‘ article he wrote a while back in the article, and I should point out that’s well worth a look too. We ended up saying that a given object (which was still defined in a template) could have as part of it, a set of resources. A resource was just a label — nothing more and nothing less. (Much later, in SWG, that team would introduce the concept of resources with stats, but that’s a post for another day.) The server had a list of the resources that existed in the world, and designers could create new ones fairly readily. Resources were things like METAL, WOOD, and CLOTH. But they were also things like MAGIC and PLAYER and other such abstract qualities.  […]

  42. To start with, on guidance: It’s a sad truth that players need more guidance than we tend to think. It’s one of the most obvious things you see when focus testing a piece of software. You stand behind them and wonder “why aren’t you clicking on the big flashing icon? No, no, right there, that guy told you to go do something! Wait, how come he thinks that pathway means something other than what we intended?”

    Guidance is not a dirty word. I know you know that, but I think we routinely underestimate just how complicated games are.

    On causality: well, it’s because of how we pattern-match. Simple patterns get boring, complex patterns are interesting. Randomness is actually a simple pattern — it seems like purposeful noise at first, and then we figure out that it is purposeless noise and therefore simplistic to our mind. That’s why elsewhere in these threads people are commenting that algorithmically generated landscapes are bland.

    Giving evidence of causality is what makes something interesting. Something unpredictable that seems to have a reason behind it.

    Part of the reason to pursue something like the simulation described in these posts, of course, is to provide richer reasons than “because the spawn timer said so.” The spawn timer is also, ultimately, kind of a bland answer, very predictable and therefore dull over time.

  43. As Im completely ignorant of most tools that are used in the game design industry, are these apps built in house typically or liscensed?

    There are some tools that use algorithmic methods that are then exported to static datasets, such as Leveller, which is widely used. Dynamically generating from a fixed random seed is a common concept, and a lot of work on fractal terrains was done by Kent Musgrave. He has a company that makes fixed seed world rendering software and tools, but I cannot recall the name of it.

    However, the SWG tool in particular had a bunch of wrinkles to it, and patents were filed. It was developed in-house at the Austin office. Ken Perlin flew out for a day to help us out with it, actually.

  44. For starters, I’d say get some new people to do your focus testing. But I know that your premise is actually just simplistic rather than wrong. Still, I for one wonder why testing seems to always be done by “proffesional” gamers who seem to me to be very much victim of the directional aspects of past games.
    It wasn’t too long ago, while checking out some possibilities about an event running in UO that I mentioned some things to check out, and another player told me “no, they don’t do that kind of thing”. I wondered why not, and why a player would just assume that something wouldn’t be added from the standard fare. This kind of thinking drives me nuts, not to mention that it leaves us with predictable boredom. But actually, the kind of thing I mentioned had been used before in UO rarely, and also now. And it was right up your examples’ alley, “use” things/items to see if it does anything.
    My point here is player expectations. If you build a game where players can expect “anything”, then they won’t be so inclined to fall back on, and rely on, the same ol’ stuff.

    I think you are shortchanging players due to this. I’m not arguing that you don’t have valid reasons to think the way you do. But while you’ve had these experiances that tell you what you believe, at the same time I can tell you that I’ve talked to many many players who do want to think more, who do want less “gamey” (I find myself using that word far too often) play. Yet, these are overwhelmingly “casual” players, i.e. not your typical 24/7 gamer who gets into all the betas and focus groups, and checkes out all the message boards.

    I can see where causality can be important in some instances. I tend to think that this should be something more implanted by an event staff though. Hungry orcs attacking villages at night, they might need a note from their “boss”. But for general wilderness stuff like the dragon, I just think that it’s better to let it ride and let the players go find the cause themselves, if they want to. You know, maybe it’s not hunger so much as a huge war party of giants that drove that dragon out, and maybe if the players don’t go out and discover the giants, they might target the village later themselves. It might be just pure randomness, or it might be at the direction of the local event coordinator. They might have notes too. There’s discovery to be added here, I think.

  45. Amaranthar, I can’t speak for Raph but I advocate causality for exactly the reason why you said you would like it – because the players will want to know why (you said let the players figure it out on their own, indicating they will want to know). Whether the designer tells them or lets the players go and find out for themselves are just different paths to the information.

    As Raph mentioned, you can have the NPC’s that broadcast their knowledge of the cause and you can have NPC’s with automatically generated quests that provide the player with the mechanism to determine the cause on their own (click on the shiny button to know why the dragon attacked). But if you don’t capture the cause and add in a mechanism to let the player either know about it or find out about it then the player complains about not enough content and moves on.

    You actuality mentioned a good cause for the dragon attacking the village – the giants. But without a game mechanic you expect a lot out of someone to view seemingly random event and go chase it down. Will some players do that, perhaps, will most, I have my doubts. On the other hand, if after the dragon attacks the village, the old town major has a shiny quest button above his head; the player can click on that and find out some information about the dragon. In this instance that might be that he heard rumors of giants near the dragon’s lair, or the food supply has dwindled, or the river has flooded the dragons lair… Now the player has some context to pursue, and they can decide to go and learn more or ignore it. Now imagine that type of content being available multiplied by 100 because it was procedurally generated and the cost of new content based on the procedures is reduced with each usage as opposed to the semi-fixed cost of having Solok the quest writer develop all of this.

  46. Whether the designer tells them or lets the players go and find out for themselves are just different paths to the information.

    WEll, true of course, but what you’re missing is the fact that there’s more game play if the players go find out for themselves.

    Whether the designer tells them or lets the players go and find out for themselves are just different paths to the information.
    ……
    But without a game mechanic you expect a lot out of someone to view seemingly random event and go chase it down. Will some players do that, perhaps, will most, I have my doubts.

    Why do so many doubt the abilities of players to figure things out, to find things? Especially after the fact of witnessing what players can do. This particular example is even a very simple one.
    *Dragon attacks village and is slain.
    *Dragons build hoards in lairs.
    *Umm…lets all say it together…”DOH!” 😀

    And the same can be said for most of these types of situations. It matters little if it’s a dragon or a band of orcs. Lets also extrapolate this out a bit in the possibilities of game play.

    Causality system– Killed the dragon and an NPC chatters about the dragons lair and his hoard. Lets not even get into “waypoints” for the folks who don’t want to actually play the game but instead want it to come to them.

    Non-causality system– Killed the dragon.
    “Hmmm, I wonder if he had a lair, could be loads of hoard loot there”.
    “Where’d it come from?”
    “Not sure, but there’s a mountain range over yonder”.
    The search begins, someone finds the lair but can’t possibly carry all this loot (because maybe for a change this game has something resembling load capacity?) so takes the best items first, planning to come back later. Now, maybe some other players also find the lair and take a share, maybe some follow the first guy back after seeing him unload a bunch of valuable items, and maybe someone is smart enough to bring along a packie.

    But perhaps the dragons lair has been taken over by the giants that drove it out. Did those who find the lair come in strong enough numbers? Do they have to go back for friends and organize a raid? (btw, this would be a raid, especially if the giants have the AI to have started building defensive structures at the caves entrance.)

    Or maybe the dragons lair isn’t in the mountains at all, and somewhere else, waiting to be discovered by players or NPCs who want the hoard.

    Whatever happens here, once other players see how it played out, they will from then on know that this is how the game world functions. They no longer will be held hostage in their game play by the past of hand held, led down the path, directed to automatic, success.

    Common people, free the gamers! 😉

  47. Amaranthar, the kind of casuality that I am talking about isn’t the same one you are. I wouldn’t bother clueing people on where the lair is, or that dragons tend to have hoards. (I would probably create a unique name for the dragon, and somehow MARK the hoard, so that when you found a forgotten hoard, you could at least look back and remember the dragon slain three weeks prior).

    But I do think that having some way to find out that the reason the dragon came was because all the deer herds in the northern forest mysteriously vanished, or that unseasonable cold caused by a wizard tower chased him away from his normal lair, is something you should be conveying to players somehow (whether it’s in a scripted or emergent system, really). It just makes the events into a story, which is the commonest synonym for “content” in players’ minds.

    It also means that suddenly, choices other than “slay the dragon” open up, which allows for multiple ways to solve quests.

  48. I think the better term for the type of casuality envisioned should be “in-game rationale”. There should be an easy in-game way for players to connect A to B, the “in-game rationale”.

    Some of the techniques and devices to communicate casuality in-game are:
    1. The rumor mill
    2. The oracle
    3. Key NPCs, like the Nobles and their scouts, sages, retainers
    4. Journals left by NPCs

    Frank

  49. The fact that algorithmically generated content can be very tough to fit into a narrative is one of the big drawbacks. Drama doesn’t build the same way when you don’t have any sort of directorial guidance for successive emotional states through the story.

    And most attempts to algorithmically generate story tend to lead to generic stories. It may simply be impossible for a computer to string together the sort of details that make stories unique and compelling, at least not without as much front-end effort by the devs as they’d have to expend on a handcrafted game.

    Of course, if your playerbase has a great deal of imagination they can fill in the unique and compelling details themselves. Unfortunately, these sorts of players can be few and far between. (I suspect they made up a larger percentage of the game-playing community fifteen years ago than they do today, and still make up a larger percentage of the MUD-playing community.)

    One solution might be to hand them a set of modding tools and allow them to share their creativity with other players, taking some of the heat off the devs, although being able to imagine a story for yourself and being able to imagine a story for other people can be two different things.

  50. I think the better term for the type of casuality envisioned should be “in-game rationale”.

    In handcrafted quests, it’s a rationale. In an ecological sim, it’s actually causality. 😉

    most attempts to algorithmically generate story tend to lead to generic stories.

    Keep in mind that our current quests are also goddamn bland (yes, this is a pet peeve). They are designed to fit into a template of “kill for me because .” I actually think that were the causality to be exposed in a sim, we’d have BETTER narratives (I would not go so far as to call them stories).

  51. I have to zero in on this comment of Raph’s:

    It also means that suddenly, choices other than “slay the dragon” open up, which allows for multiple ways to solve quests.

    I think it’s telling that the the vast majority of choices players are able to make involve what item to take as a reward for their actions. One of the most effective and fundamental ways to define a character is by the choices they make, and this is almost completely nonexistant in RPGs these days. I’m always disturbed that the only way to really define an MMORPG character is by the ‘name brand’ on their armor. I actually did a couple paintings, in the form of fashion advertisements, that proposed stat boosts instead of increased sexiness for an artbook once…

    Of course, many choices are only important in so far as they have lasting repercussions. And, to be fair, it’s not likely that many players would be happy with a system where their choices could perminantly impact their characters…

    Eli

  52. Players make choices that permanently impact their characters all the time. That’s why people talk about “building a character.”

    Now, I’m actually a huge fan of letting people change their natures. Most of the choices in the games today are too permanent — that’s why I like the ability to surrender skills, change what you’re doing, and so on.

    But in the case of multiple quest solutions — any effect from those can be temporary, too. So to be worried about permanent impact seems abit overkill.

  53. Some of the techniques and devices to communicate casuality in-game are:
    1. The rumor mill
    2. The oracle
    3. Key NPCs, like the Nobles and their scouts, sages, retainers
    4. Journals left by NPCs

    The oracle is one really cool idea. Perhaps a religious cult that’s world wide, and my imagination is getting the better of me as I think of this cults central worshipping place, where even greater divinations and predictions can be had. (Thinking of the oracle that was in the middle east that Alexander the Great went to, among many others.)

    Ok, I’m seeing the benefit of and understanding the idea.

    Raph said:
    I would probably create a unique name for the dragon, and somehow MARK the hoard, so that when you found a forgotten hoard, you could at least look back and remember the dragon slain three weeks prior

    This can get tricky since it’s not just a dragon that could be involved here. But as a starter to the idea, I could see where semi- to intelligent species like “orcs” might have banners to identify their clans, dragons might have colored scales that identify them, and drop a few around. NPC villagers might pick them up for display, as well as the hoard having some in too. Other kinds of fantastical things might have other but similar ways to show their identities.

    How the story gets related to players is of prime importance, in my opinion. If player hunters and explorers haven’t noticed themselves the lack of deerlife in this example, yeah, NPC characters could easily have noticed. Meet suppliers/tavern keeps would probably know that venison is in short supply, so this could be sort of a loose indicator.

    Trying to get away from just this one example and looking at it in an “all possibilities” is the trick. More about an individual game would need to be known. But anything is possible, if the desire to do it is there.

  54. Players make choices that permanently impact their characters all the time. That’s why people talk about “building a character.”

    Point taken. I agree on allowing characters to change, as well – if I decide that my Warrior has begun to regret his murderous ways, I’d like to be able to have him become a monk and start learning new skills in exchange for the old. I think that’s a wonderful tool to grow with your character in a meaningful way.

    I was thinking more about interactions with the world, although I see I wasn’t clear about that. Say you have a quest to deliver a message from the prince to his mistress, but you decide you’d rather sell it to the queen (his step mother) who will use it to disgrace him. This defines your character in more tangible way than saying his loyalty stat is 5 instead of 12. now we have choices to make, and repercussions to our choices:

    Option A: deliver the message, and the prince may owe you a favor. However, he doesn’t pay you, and if he loses power you may find yourself an enemy of the new rulers.

    Option B: Sell the message, and the queen pays you handsomely. Now the prince wants you dead, however, and you’re stuck in hiding until you help the queen take power.

    Option C: Seduce the mistress, and everyone hates you: Run from town quickly.

    The impracticality of this system is of course obvious, but this is more the kind of thing I was thinking of. Unfortunately a lot of players take the ‘I’m paying for this content, and I don’t want my choice to get rich off the queen to limit my ability to do the prince quests’ point of view.

    A way to change your mind would also be good (Lie to the prince and tell him the queen threatened to kill you, but you’ll do anything to regain his trust), but sometimes I think it just doesn’t make sense to allow the player to avoid the results of their actions. (Kill the beloved prince of a kingdom, and no matter what you do, you’re on the kill on sight list there).

    Typing them out, I see my ideas are completely impractical. Ah well.

    Eli

  55. Anyway, in general content is getting too expensive because of the level of detail that players demand.

    I know, tons of ideas here, and this is the line I choose to reexamine, but I think it’s important. I don’t think the players are demanding games that have that high-graphic clone-feel like most of the new X-box 360 games, I think it’s the marketing idea that the game should sell for $60 via Wal-mart and the like they should reach sales goals that repay all of the developement and advertising budget in the first weekend that requires it. That means the stores need to order based on “Is the hype good enough to sell it?” They order based on the sound of the sizzle, not the taste of the steak.

  56. Unfortunately a lot of players take the ‘I’m paying for this content, and I don’t want my choice to get rich off the queen to limit my ability to do the prince quests’ point of view.

    Odd. That sounds like, “I’m paying to be an American; I should be able to be a Democrat, a Republican AND a terrorist.” Part of making a choice to do something means also to make a choice NOT to do something. Helping out the prince means not exposing him. Helping out the queen means betraying the prince. A choice is not a choice unless the alternative is desirable. Back when I was a Christian, some of the philosophy I found on free will described that being given the choice between Heaven and Hell after you’ve seen it isn’t a choice. You don’t want to go to Hell, so how can you choose it? There isn’t a choice to be made, just a script where everyone knows what your line will be.

    I don’t see how it’s impractical at all. If a player feels a need to play through every possibility, then they’re not a part of your market. They should stick to single-player games. It’s not as if we want to replace single-player games, right? =P

  57. I don’t think the players are demanding games that have that high-graphic clone-feel like most of the new X-box 360 games

    Games with bad presentation do not sell, period.

    Games with middling presentation need something else huge to pull them out of the pack.

    Middling presentation is still time and resource intensive.

    I think it’s the marketing idea that the game should sell for $60 via Wal-mart and the like they should reach sales goals that repay all of the development and advertising budget in the first weekend that requires it. That means the stores need to order based on “Is the hype good enough to sell it?” They order based on the sound of the sizzle, not the taste of the steak.

    The economics demand it; the lifespan of the typical game on the shelves is very short because the volume of new titles and the limited amount of shelf space, so you have to have high first week sales to make back your investment.

    The move to digital distribution is changing this, but I don’t think that the need for hype will go away; you still need to stand out from the pack on an infinite shelf too.

  58. The economics demand it

    Exactly my point. When you launch a game in that enviroment it needs to look at least as good as the other games to have a chance to be profitable. I guess what I’m saying is that it’s the other publishers that set this minimium standard, not the players.

  59. Alas, late to the party once again. But I must react to what has been said thus far.

    Game/World semantic. Yes, these are worlds, not really games. PvP is a game, tailoring is a game, chatting is a game, and finding special ore is a game. UO is a virtual world with all those games in it. (Interestingly enough, WoW is a world with those games in it. The rules are different of course, but the same games exist in both worlds.)

    From an Ultima fan’s perspective, all this sounds like the perfect game. (I know, I know; I just admitted to the developer definition of “game.” Shaddap.) I practically wet my pants when I heard about it back in the 90’s. It was the natural evolution of Britannia; to have virtual people and a true virtual ecology.

    Alas, wonderful wonderful things that are a wee bit ahead of the times. I’d like to see them given another try in a few more years. At present, it seems they would remain invisible to the player, and system resources aren’t powerful enough to make this stuff turn into fun adventures. Not yet anyway.

  60. I’m somewhat late to this party as well since I’ve been on vacation but much of the system behind Ages of Athiria is designed similar to this. The funny thing is that I played UO for all of about two hours. What piques my curiosity the most is not that UO’s initial try at this failed but what were the reasons for its failure and is it still a feasible theory?

    My gut tells me that this ecology driven system is still very feasible and the company that gets it right will have a very successful game on their hands. The other side of my brain doesn’t think players are ready for the complexity that gets introduced. Where that leaves me, I don’t know but it invariably comes back to a publisher-adverse design bible. I know I wish UO’s first attempt was a success. Between this and the $9.95 price point, I don’t know which was the worse precedent for the MMO industry.

    Anyway, in current games, causality, which is one of the biggest keys to emergent behavior, is derived from very few sources, most notably static quest NPCs. The rest of the world typically does not have much meaning other than pretty scenery. It’s a stretch for the player to come from these types of worlds into yours and “get” the idea that everything can be related to causality somewhere else. There’s not enough guidance to get them through the learning curve safely. In RL(tm) we’ve had years to develop the pattern matching skills to filter causality down to just the important things we need to think about. In a game we just bought, it’s as if you are 6 months old all over again. That awe and wonder might be truly deep but in more practical terms its newbie frustrating. In an ecological simulation, the wolves don’t care that you’re only a first level player that bought the game 5 minutes ago. They attack you if you attack the bunnies so while you’re learning the intircaies of the new game you bought, the AI is slaughtering you. In other words its exceedingly difficult to let the player tip toe into the water without creating imbalances in the ecological model. Most new players will abandon the game very quickly in this scenario and go back to something more familiar/safe. Players invariably, do not like to lose and expect to win simply because they are paying a fee. One look at WoW’s general boards should convince you of this law.(Is it; I forget? It should be.)

    So when discussions of these types of systems come up, I’m often left wondering how you keep an ecology from running into boom/bust cycles and how you ensure that the one day you take a vacation isn’t the day the entire system falls flat on its face. As Raph suggested, I think some of the variables need to go deeper in the solution. I also think those variables need to be out of the hands of the players influence and exposed as control sliders to the Live team so that imbalances can be remedied in real time. Ideally the live story team would have the tools to introduce resources into the ecological model through quests and stories in an effort to keep the system stable or to achieve the opposite for a system that is too stable.

    I think level of detail will cause a problem with resources unless the level of detail scales with player population. Level of detail shouldn’t depend upon player proximity/location as that will only create weakspots in the simulation making the live team’s job more difficult to get right. (The same effect as creating specialized newbie safe areas where all the ecological model’s rules do not apply.) Each tree in the forest doesn’t have to physically fall but the number of trees that fall must be represented regardless of player proximity to the trees.

    Anyway, I could go on and on on how I think things can improve from a basic ecological standpoint all the way up to the aggregate player driven side of the economy but this is not my blog. Interesting read Raph. I remember discussing this with you at a MUD Dev conference a while back. Glad to see you get it on paper.

  61. Kressilac, so yuo’re saying that maybe the system needs to have some safeguards in it against extremes? That seems like a good idea. Like maybe if there’s a balancing figure in a “zone”, say 100 deer are stated as the average, or most balanced, number to be there. And then if someone comes in and hunts out 90 of them, then the system reads an overkill and spawns some to make up for the extreme loss?

  62. In other words its exceedingly difficult to let the player tip toe into the water without creating imbalances in the ecological model.

    There’s a couple of ways to look at that. I guess one simple solution might be to have a simple offline tutorial in a ‘hidden valley’ area where the player is given a couple of quests and the ability to interact with that limited enviroment that introduce them to the causality in the game and gives them an understanding of how their actions might affect not only the gameworld, but their own online experience as well.

    Another way to look at it is to simply accept the fact that new players ARE part of the the ecology and, if the system is robust, can’t, by themselves, create major imbalances. For starters, the game would hopefully be designed in such a way that bunny-bashing is not an integral part of character development. If a player is killing bunnies, it should be because they’re just malicious or they have a desire to gather rabbit meat and fur.

    I definitely agree that there should be gamemasters with tools ready at hand who can step in and quickly adjust or fudge aspects of the ecology as a stopgap for serious problems until the programmers can make appropriate code-changes.

    Or, it might even be better to let the playerbase wreck the world, but also give them tools to restore it. If players are allowed to slaughter every rabbit in a ten-mile radius, thus destroying the rabbit spawn, then perhaps they should also be able to build rabbit farms to breed rabbits and re-introduce them to the enviroment. If the players cut down all the trees, then perhaps the area will turn into a wasteland, forcing the players to seek out other locations or find a way to aid it’s recovery. Or even make it so that the area actually becomes a desert, with appropriate flora and fauna!

    There’s so much potential that it boggles my mind and whenever I sit down and try to map something out along these lines, I end up getting distracted by the myriad tangents and possibilities that very little actually gets done. And of course, the more potential and complexity you introduce to your system, the potential for abuse and for the whole thing to collapse dramatically increases as well.

  63. The underlying mechanisms of the system (as described in Part 1) sound very similar to what was being done for Ultima Online 2 with Python (http://www.asbahr.com/paper2html/paper2.htm). I wonder if they built that from the ideas you created for UO?

    Also, while I agree with Amaranthar that players are definitely capable of discovering the systems and causality, I think Raph is trying to say that most players don’t actually initiate that process without some prompting that such a system exists.

    I personally find it really exciting to figure out how the systems underlying a virtual world work (which I guess is why I was a big fan of ATiTD and SWG), but if I thought that there wasn’t actually a system there, that it was all just random, I probably wouldn’t put in any effort to figure stuff out.

    Sort of on that topic… Raph, would you ever try something like the Jedi secret in SWG again? Would you rather let the players know that there is a secret/mystery out there for them to discover, or not tell them and have players stumble on it by chance?

  64. […] I’m a few days late on this, but Raph’s recent three post series on how the original resource system for UO was developed is worthwhile reading(part 1, part 2, part 3). I recommend these articles not only for the obvious reasons of examining what was attempted before and why it failed, but because these links will be of particular interest to anyone who has taken the time to read my thesis and found the material within of value to them. What was tried in UO is a practical example of some of those ideas, and I certainly would have included this work as a reference had I been aware of it at the time. […]

  65. […] The ORIGINAL UO This is a series of articles written by one of the original designers of Ultima Online, Raph Koster. He used to work at Sony Interactive or whoever produced Star Wars Galaxies, which was supposedly UO’s successor. I never played it, I don’t know. These articles describe the way the world of Brittannia was supposed to have worked. They’re a little geeky, and you need to understand at least a little bit about how computers work and games are programmed to really wrap your head around how amazing this idea was. It never made it to UO’s release because of technical difficulties (slow computers back in 1997). However, I think it’s worth a read, and might be worth some consideration the next time the team goes to revamp monster spawns or wants to add quests or anything like that. The article is broken up into 3 parts, and they don’t link to each other, so I’ll link them seperately here. UO’s Resource System: Part 1 UO’s Resource System: Part 2 UO’s Resource System: Part 3 […]

  66. […] UO�s resource system, part 3 on Raph Koster […]

  67. […] Ultima Online’s Resource System III […]

  68. […] was originally planned/attempted in the early UO and the reasons that it didn’t work (Part 1, 2, 3).Which is very interesting to me, since I have been reading up what I can. In a strangely related […]

  69. […] of day, atleast not how they invisioned it. These articles can be found here, part 1, part 2, and part 3. These are very interesting reads by the way. I think anybody who enjoys MMOs should read them. I […]

  70. […] by Raph Koster on UO’s (planned and never fully implemented) Resource System: Part 1 Part 2 Part 3 This is pretty much the reason I got into MMOs in the first place – I was thoroughly intrigued by […]

  71. […] by Michael Chui on Mon Oct 01, 2007 11:07 pm Scopique wrote:And don’t forget the stuff that didn’t MAKE it into UO, like the dynamic ecosytem.If you have no idea what he’s talking about,https://www.raphkoster.com/2006/06/03/uo … ce-system/https://www.raphkoster.com/2006/06/04/uo … em-part-2/https://www.raphkoster.com/2006/06/05/uo … em-part-3/Also,https://www.raphkoster.com/2006/06/09/why-dont-our-npcs/ […]

  72. […] :-)Bis dahin kann ich das hier empfehlen:UO's ressource systemUO's ressource system 2UO's ressource system 3by Raph CosterUngefähr so möchten wir es handhaben. Wenn du es mitberechnest und das system so […]

  73. […] Raph’s Website » UO’s resource system, part 3 (tags: gamedev software design) […]

Sorry, the comment form is closed at this time.