Extending Faction Reputation Systems into the Virtual Ecology

Most RPGs utilize the concept of faction reputation in some way or another. It makes sense, and it’s a valid element to include in its own right. Extending this concept into how creatures and spawn spots relate to their surroundings can introduce a good amount of dynamism in the virtual ecology of an MMO.

You need 2 main mechanics:
1. Every time a spawn spot has some sort of an impact on another spawn spot, you need to record the results of that interaction; or, possibly just have that interaction proportionally change the faction relationship between those two spawn spots’ respective factions (whether those “factions” are actual NPC factions or simply species).
2. You need to ensure that all members of a faction behave toward other factions according to their faction ratings. This includes spawn spots as well as instanced creatures. This part can get rather complex because you want to allow for dynamic, ad-hoc ally groups, both by instanced creatures as well as by spawn spots.

Just imagine a game world in which a player witnesses instanced members of a faction with which he has a higher rating actually join his side in a fight against members of an NPC faction which both he and they have low faction ratings. And then, a patrol of another group of creatures comes along and joins the opposing NPC faction because they have a higher faction rating with them than with both you and the first faction. And over time, the player is actually able to change all that. The thing is, that then you have a world in which all those NPC factions constantly, autonomously change their relative ratings amongst each other. Add in an independent “lust for wealth and resources” as well as a system of “survival is what ultimately counts”, and you just may have a fully-functional virtual ecology.

Intelligent Spawn Area Entities

You and a bunch of friends have just finished a month-long project of deciding on a city location, collecting all the resources and cash to build your city hall, planing the city layout and zoning, and then recruiting more people to build their homes in your young town. The central park has just been completed by the two aspiring terrain architects and everyone has agreed on the interior designer for the city hall. And then the orcs came. More specifically, an orc military outpost popped up nearly overnight just outside your city’s limits, and now you find orcs spawning ever closer to your city hall building.

You know that if you don’t get this thing nipped in the bud those orcs are going to destroy the fruition of all the work and time poured into your city. So you call on all your city’s residents to come out and kill orcs every time they spawn. You call on them to destoy the orc structures at every opportunity. You know that if you can sustain high enough destruction the orcs will give up and go away. However, if you don’t they will continue to spawn faster and faster and closer and closer to your city hall, every day causing ever higher maintenance costs for everyone in the town- especially those unfortunate enough to have their houses build on that side of the city.

Three days of what seems like concentrated destruction later, you realize the orcs do not seem to be getting discouraged. In fact, they haven’t even moved! So, the mayor calls an emergency city council. The topic is how much can the city afford to sink into hiring out for orc killing. After the number-crunchers do some calculating, it becomes apparent you can pay 13,500 credits per mission of 20 orc kills for 900 missions before the city treasury get too low to pay all the maintenance. Other cities have had success with hiring out 900 missions to get rid of a nasty orc infestation, and you have seen other cities offering 12,000 credits per 20-orc-kill missions, so you are confident word will spread and the missions will be completed. Hopefully, it will be enough additional sustained destruction to drive them off. If not, this could be bad news for your burgeoning city.

The mayor sets up the missions in the city’s new missions terminal and everyone stars spreading the word that money can be made killing orcs in your town. A strange thing happens though. Nobody shows up. Well, a sporadic smattering of would-be bounty hunters drop by, but they don’t do more than one mission. Some don’t even finish it. At the same time, you begin to notice the orcs are becoming harder and harder to kill, each one seeming to hit for more damage than before. With concern creasing your brow you start a large patrol around the orce encampment, which you note has sprouted spiked walls sometime in the last two days. As you race past, you notice with worry a smudge pop into view over the next ridge, a thick trail of smoke rising into the air above it. As the distance closes, your worry turns to alarm as you realize that smokey blob is a veritable orc boom town, complete with seige engine construction tents and an advanced barracks. The orcs at your town’s edge are being supplied and upgraded from this until-now unknown and un-addressed regional threat. The last time one of these was discovered, more than 2 player cities ended up razed to the ground, and it took the concerted effort of three major cities a full month to drive them off. Prior to that, those three player cities had been engaged in bitter war over resources. The campaign to rid their region of the orcs nearly broke them all, and once they succeeded they were the closest of allies; they discovered there were bigger, more dangerous things in the world than the feud with their neighbors.

Your thoughts are cut cruelly short when your air bike is blown out from under you and you see your health bar virtually disappear. And then you’re dead.

In shock, you see an orc stand up from behind a rock, outfitted in gear like you have never seen on orcs before. I his hands he carries an enormous, shimmering rocket launcher. Your worst fears have been realized. The orcs have learned something new. They have somehow discovered or been given some super-weapon. You look to the left to see what else is around, and just before your screen blips to the respawn building back in town you see three more. “And they can mass produce them…”

How do you make intelligent NPC factions that can develop, spread, migrate, and even play politics? It’s possible.

Deal with all creatures at the spawn spot level. The spawn spot is the true, persistent entity in an MMO. It’s not the creature. It’s not the dev-created-and-planted buildings or villages. It’s the spawn spot. It’s the spawn spots that really interact. It’s the spawn spots you are truly influencing when you, as a player, kill creatures.

Each spawn spot has a set of attributes that define it. They define the creatures it will spawn, they define how big it is, they define the threshold under which it can possibly die, they define what terrain types on which it will best perform, and they define the rate at which they spawn creature instances in the live game world. These attributes change based on its environment. When a player kills a creature it spawned, it is recorded and included in the periodic calculations that do the actual attribute adjustments. When a spawn spot comes in contact with another spawn spot, the two spawn spots engage in what amounts to an arena battle, virtually of course and without actually animating the whole thing- you can just use the combat scripts you use whenver two opposing creature instances meet and fight in front of a player in the live game world. The outcome of that combat round results in the attributes of both spawn spots being altered. If multiple spawn spots’ areas all overlap, then you do “combat” matches amongst them all, with each round altering their attributes.

Whenever two spawn spots of the same faction interact, their loot tables interact. The loot tables contribute to the overall spawn spot attributes, so what’s in a spawn spot’s loot table really matters. An epic item can do a lot to make an otherwise squishy NPC become a formidible foe. Two mutually-isolated pockets of spawn spots of the same species can over time develop very different loot tables which result in very different levels of difficulty. If the two meet and interact, there will be a significant sharing of loot table items from the more advanced one to the less advanced one. In effect, the less advanced one “learns” from the more advanced one. By manually injecting a few epic items into just one spawn spot of orcs in the far northern reaches, over time the orc faction very well could expand their reach, both through creating new child spawn spots as they thrive due to the additional strength they have through their stronger loot tables (and thus attributes), as well as through the process of “teaching” their unlearned brethren spawn spots the glories of their epic loot table.

A spawn spot’s attributes will also determine how much it attempts research and development on its own loot table. In addition, not all spawn spots will be as amenable to “learning” as others may be, that is, the “coefficient of loot transfer” makes it less likely that the roll to choose which of two loot table items is better will fall in favor of the truly better one. A spawn spot’s attributes will define how much it will attempt to build upgrade structures. Granted, these structures will have to be dev-defined, but the actual chances of building them will be up to the available resources in its current location, the viability of the terrain type, and the “coefficient of construction”. Buildings can simply be an additional item to the spawn spot’s loot table for as long as they exist, that is, for as long as players don’t kill them at a significantly greater rate than they are defined to spawn. If players specifically target the seige engine building in their raids, wherever it may spawn in the spawn area, and over time destroying its instances at a rate that matches or exceeds that building’s spawn rate, then eventually the building will “die” and its benefit will be removed from the spawn spot’s loot table benefits. Also, there will cease to be seige engine instances that spawn from that spawn spot.

It’s doable. It really is. Just break down the complexities into discreet components that can each be calculated and added into one long addition problem 😉

Autonomous Creature System- Useful or Nicety?

A system that autonomously controls creature population maps and creature attributes… it seems like a great idea- remove the creature placement burden, remove the creature balance burden, add extra levels of immersion, and allow for more gameplay paths.  Well, that’s the goal anyways.

Is it something that would be a major game differentiation?  Or is it just something that should be in the “it would be nice, but yeah right” category of the design specs?

In a bit of a crisis of belief on the topic I found myself questioning the realistic viability of my creature system.  In some ways it seems like it would be more along the lines of what real life animal population researchers would be interested in- and possibly find useful.  In a game world though, would it add enough to justify its development and possible maintenance- more likely possible catastrophic failure at some unspecified later time (wouldn’t it be great to have a mass extinction event, after which the world is left with Swamp Rats and a few scattered Spitting Golas?)

I think if we can figure out how to allow for a rich enough autonomous creature management system there will be a whole new level of emergent phenomena in that the creatures themselves self-balance and even create complex webs of symbiotic relationships.  Grauls eat various critters, which eat other critters, which cannot live in the presence of a certain competitor, which depends on the presence of rats and in doing so allows for Graul nests to survive long enough for its young to mature before they are destroyed by said rats, etc.  Not a very good attempt, but the point is that they system will work best if it yields a natural symbiosis of various species in any given area.   Maybe even starting the food chain off with with things as basic as plankton and green algae- that’s a bit extreme, but interesting.

I think this creature system may not be a big selling point itself, but I think it will be a sort of crucial building block that allows for bigger, better gameplay mechanics that are themselves the grand selling points.  So, in that way it’s almost part of the game engine, and thus higher on the priority list than a “that would be cool to have” item.

Day/Night Maps

You could have a night/day map that modifies the instantaneous spawn chances of creatures and nests.  It may only add a couple extra sets of calculations to the “does it spawn” roll.  I’m assuming the server only spawns nests (and creatures) within range of a player, and then drops them after some period of no player coming within range of them, though since you could “follow” a fleeing jedi by “following” creature nest spawns, the player range should be greater than his view or there should always be some percentage of spawns.

How would a night/day map work?  Each creature has a “time of day” attribute that determines when it tends to spawn.  This is just a negative, zero, or positive value.  The day/night map is a gradient map consisting of -1,0,+1 that is moved across the world map.  Every time the computer is calculating spawn chances, it just multiplies the two to get the “day/night” factor used in the “does it spawn” calculation.   The greater the negative in the “time of day” attribute, the more extreme the nocturnal behavior of the creature.  The greater the positive, the more “only daytime hours kept”.  If it’s zero, then it can be found equally in the day and night.

Every time the computer rolls a “possible spawn” opportunity, it gets what the current “day/night” factor from the day/night gradient map, uses that to eliminate the critter nest that would definitely not spawn at that moment, calculates which one actually spawns, and then spawns it.  So there would be two extra sets of calculations, in addition to database hits.

Immersion would be something else, and I think the implementation shouldn’t be too tough.  Besides, if we found the server load to be too high from it, all we have to do to drop it is eliminate the day/night calculation from the “does it spawn” calculation and disable the movement of the day/night map.

Imagine locations where player actually feel a sense of urgency to leave an area before it gets dark.  At night, the big nasties come out.  Imagine getting stuck out in the dark where you can’t see very far, and as your group is making their way back to the safety of a fort, your flash lights swing around to reveal an enormous, slobbering Rancor about to pounce on you.  You could do some serious horror-like stores and events.

MMO Design Approach

I’ve been experiencing a recurring thread of thought on an approach to MMO design.  In short, system design should be thought of as creating tools with which the player can do stuff.  As opposed to “creating a game”, this approach has as it’s only conceit the setting of the virtual world, which includes, say, that players can do things like fly like superheroes.

It’s my impression that a virtual world is fundamentally different than a “game”.  Both are defined by rules, yes, but in the case of a “game” the players are asked to abide by rules well within the “horizon of possible actions”.  A virtual world on the other hand asks its players to abide by rules, but those rules define in and of themselves the “horizon of possible actions”.

While playing a game in real life one is quite aware of the limited scope of the rules.  In Settlers of Cattan, you could physically just place 4 extra roads.  It would be against the rules, and by breaking those rules, the game breaks.  In a virtual world such as, say, Star Wars Galaxies, the rules become the scope of what you can do, of what is even possible.  It’s not like you have a choice of whether or not to abide by those rules (EULAs and gold farming are a bit different).  In Settlers of Cattan, you have the option of abiding by the fundamental rules of the game.  In SWG, you don’t.

How does this relate back to  the “build tools, not games” bit?  I think humans look at their environment, maybe even everything, as composed of potential tools that can be used to do stuff.  That “stuff” is in a way not quite as important as the act of using tools to do it.  The satisfaction, it can be said and indeed has been said, comes from the journey to the destination; not in the destination itself.  As such, tools are what we all are looking for, and tools we will be drawn to.  Therefore, as an MMO designer, we need to make tools rather than conceits (read “games”).

Math Problems

For the last 2 days I’ve been encountering what to me were absolutely baffling problems with my scripts to create a dynamic creature population system.  I felt totally broadsided out of the blue at more points than I can shake a stick at.

For a while things seemed alleviated once I discovered that Realm Crafter rounds down all decimals to the nearest integer.  Needless to say, this wreaked havoc on my circular coordinate-to Cartesian coordinate conversions.  After I dropped the circular coordinate plan and just went with squares, things seemed to move along a bit better.

But then more mysteries reared their ugly heads, and, long story short, I located their source:  the math order of operations was not consitent.  I clearly identified it and it is indeed a bug.  Granted, there appears to be a way to work around this bug (use paretheses like they’re going out of style), but it’s still frustrating how many hours I’ve poured into this project so far, many of which I felt an absolute moron, all because there was were two devious bugs.  Makes me further appreciate a really good QA staff.

At any rate, after getting a crude set of scripts to work that appoximate a crude vision of the creature system, I have set about re-writing everything from scratch.  I learned loads from the first set, so I’m sure this follow-up set of scripts will be better.

Mid to Long Term Goal

When I decided to succomb to the “Game Design Bug” I started looking around teh intarweb for information on how to get jobs in the game design field.  Low and behold, there is tons of stuff out there on just such a topic.  One of the tips that struck me as quite important was the one about having a portfolio to show.  So, that’s what I’ve been doing.  Primarily I’ve been working on design documents.

Design docs are not easy as one may initially think.  You find that your grand game system idea has a lot more to be spelled out than you realize, and that’s even when you’re an experienced game designer.  However, that’s exactly what you need to do and I find I rather enjoy coming across unforseen problems with game mechanic interactions.

Sorry to delay.  Here’s my current project.  I want to develop a dynamic creature population system that essentially takes care of all creature population maps.  The ideal is that we don’t need a person to manually place every creature spawn spot, all the creature spawn spots take care of themselves, and over time each species as a whole will end up being located in the general vicinity of preferred terrain types.  So, a map designer can think in more general terms in regards to creature population maps and how the map as a whole will “tend” towards.

I will be using the Realm Crafter MMO game engine for this project.  I’m not a programming whiz so this is a bit of stretch for me, though I will be using a scripting language built in, so it shouldn’t be too much.  I will update as things develop.