On the Distribution and Availability of Goods

Published June 26, 2006
Advertisement
I have been working through how I am going to handle the relative availability, and therefore the relative value, of different trade goods in different parts of the gaming world.

The largest factor in the availability of goods is transportation. In the time and area in which my game takes place, it is kind of out in the sticks, population-wise. One empire is approaching its end, and another is on the rise. Various marauding tribes keep the pot stirred, so the infrastructure we take for granted -- roads, for instance -- are few and far between, and at best a well-packed trail through the forests and swamps.

All of the trade goods I am using have the possibility of being available at all of the different towns and villages in the game. However, they will not all be _definitely_ available at any given town, and where they are available, they will not necessarily be available at the same price or in the same quantities. In the south, by the sea, fish will be more easily available but e.g. iron will be a little harder to come by. Deer hides are common near the mountains to the west, and cotton easier to find as one approaches the plains to the east. Specialty items like amber and glass will be more common near trade routes, although relatively rare in any case.

But how to turn this into something the game can understand?

All of the goods in a game must come from somewhere. They can be spontaneously generated; there can be a set amount in a set location; they can be created as a result of player actions, e.g. killing a rabbit produces one unit of rabbit meat and one rabbit pelt. The farther a player is from the point of origin of a specific trade good, the rarer that thing will be.

Therefore I am giving every trade good one or more points of origin in the game world, and a set amount by which the availability decreases over a certain distance. These points of origin may be within the area available to the player, or substantially outside it.

Example: Assuming a game world which is 40 miles square, set up as a grid covering from [-20,-20] to [20,20]. The data for deer hide might look like this:
name="deer hide"base_value="5"base_availability="7"availability_dropoff=".2"price_increase=".3"lifespan="100"origin="-18,0"/>

This tells us that the point of origin of all deer hide in the game is near the western boundary of the "world", is fairly easy to aquire and is available even on the far side of the "world", although harder to find and more expensive.

The "lifespan" attribute allows the simulation of item perishability. Fish will have a lifespan of maybe a two weeks if packed in salt and ice. Caviar a little less, and various kinds of meat a little more. That means that they rapidly become more uncommon the farther one travels from the point of origin.

Here is another example:
name="wheat"base_value="1"base_availability="10"availability_dropoff=".05"price_increase=".05"lifespan="5000"origin="0,0:-10,-10:10,-10:10,10:10,-10"\>

Wheat is nearly ubiquitous -- available almost everywhere with only slight changes in price.

I think I can use this system for influencing the mix of tribal influences in the towns and hamlets of the game by giving the Romans, Turks, Franks and Bulgars origin points and dropoff values. Towns farther south will be more strongly Roman. Towns near the northeast will have more of a Bulgar flavor. This can also be used to modify random encounters in the travels between the towns.
0 likes 2 comments

Comments

TANSTAAFL
why don't you simply make the origins tag nestable, so that you can have more than one within an item tag?
June 26, 2006 10:47 AM
Tesseract
I will probably end up doing something like that; right now I am still working out exactly how much data I want associated with each item. For instance, once I put in the different tribes, each of which will fave a greater desire for some goods than others, and also have a larger supply of some goods than others.

As for the XML structure, I am trying to keep it as simple (flat) as possible. Actionscript 2.0 does not have native DOM.getElementsByTagName() or DOM.getElementById() methods, so having a single tag with multiple attributes makes for easier, less processor-intensive searching and what-not
June 26, 2006 11:44 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement