Strategic Primer: Modeling Mining

One of the many problems I have faced in the development of Strategic Primer is how to model mining. Today I’d like to discuss how I’ve done this in the past, a new way I’ve recently developed, and what still needs to be considered.

The first campaign, back in 2001, didn’t include mining at all—it didn’t do much with any resources. (You can read the log of that campaign, annotated with my comments, in the archives of this blog.)

In the next campaign, which never really got off the ground, I did plan to add resources, in a system I partly based on Civilization: Call to Power and partly on some other source that I have now forgotten. Put simply, “basic” resources could be harvested by building and manning “tile improvements” on top of the source of those resources (an oil well on an oil deposit, for example), which would then provide a constant stream of that resource, while “derived” resources would be produced by passing their input resources through some “building” (see this old post for more about the categories of things that a player could build at various points in the history of the game), at a severely reducing rate.

The current campaign, on the other hand, looks at things at a level such that the “place once and man for constant income” model doesn’t really fit. So I wanted some way of determining how much mining a given vein of ore or deposit of stone might cost, and how much of the resource it might produce, in a given amount of time. And I wanted to model this in a way that gave incentives to exploration, prospecting, and technological innovation.

At some point years ago I read a table on the “Tao of D&D” blog that gave a model for how rich, in both quality and quantity-per-rock, a vein of ore might be. But it didn’t quite suit my needs for Strategic Primer.

Recently, I finally developed a model of my own. I used the various levels from the table I mentioned to specify levels of worth of ore: “very poor,” “poor,” “fair,” “good,” “very good,” and “mother-lode.” Any mine or mineral deposit is assigned one of these as its starting level. I then use a program I developed for the purpose to generate a spreadsheet representing the mine (before it was mined—I’ll go in afterward and block out mine shafts and such by hand) or mineral veins. When a player sends a worker to dig a mine, or dig in a mine, I’ll use this model of the mine (the spreadsheet) to determine the quality of the ore where the worker digs and how far the worker has to travel in the mine (determining the time required).

I see three main problems (so far) with my model so far. First, it doesn’t really fit stone-quarrying (or sand or clay mining), in which the “extraneous rock” is what the player wants, all that well. Second, it doesn’t account for places where veins of multiple minerals are close to each other or intertwined at all. And third, it always generates veins that start at a single point at the surface and work their way down, which is anything but realistic.

There’s also the limitation that, to ensure my program completes in a reasonable amount of time, I stop generating a vein any time it reaches 300 units (what a “unit” is also remains to be determined) horizontally away from the starting point in either direction or 400 units down. If I’m going to change that, I should do so before I put this model into use, which I plan to do this coming turn, because the program is deterministic (always producing the same spreadsheet) for a given “random seed,” and changing the boundaries would change the output.

Do you have any questions, comments, or other thoughts on this or other ways of modeling mining?

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s