I actually started writing code last night, sitting in Terminal A at SFO Airport, waiting to fly home. This is just exploratory, prototype code, intended to make me think about how to model all this stuff. In this code, I defined the class Colony, which is meant to represent Frisgard itself, but of course can be used to represent other colonies, should the game have need for that. For example, if you’re doing mining or manufacturing on another planet, it might be useful to establish a small colony there — but it won’t be as protected, and it might actually draw off human from Frasgird, imperiling your efforts to achieve population size and diversity.
Anyway, as per my discussion here, I’m using a working model of Frasgird as a series of concentric rings, with each ring containing some number of plots available for development. Each plot can hold zero, one, or multiple developments. Even with an abstract representation, I can envision plots that cannot be developed — due to some pre-existing natural feature, e.g., a chasm — without a sufficiently high tech level and some investment of resources (time, money, people, raw materials, etc.). The default for now is one development per plot, but I can likewise envision allowing multiple developments per plot, either due to some natural synergy (ranch + farm, mine + steel mill) and/or sufficiently advanced technology that allows a given development to take up less space.
That led into some pondering about the basics behind a development. I have some notes I wrote on the plane last night; let me expand and give meaning to them here.
Let’s start out with a very simple example: a plot with one development on it, a farm. The farm will produce some number of units of food each certain period of time. So right off the bat, we run into several issues.
First, what is the basic unit of time in Frasgird? I’m inclined to make it no less than one day and no more than one month. I lean towards making it one day, so long as there is a mechanism for speeding things up. So, a farm plot will produce X units of food per day.
But that’s not how farms work. Farms tend to produce some lower-level of food on a daily or weekly basis, then have several (different) crop harvests at varying times of the year, according to seasons, crop rotations, and so on. Now, this game is not Farm Tycoon or Sim Farms, so the X units/day is probably a useful and acceptable abstraction…except this is a chance to tie it into tech level.
Sundog had tech levels for planets: the possible range was 0..15 (4 bits!), but the lowest for any given planet was 5 or so. I didn’t have an actual mapping in mind for what each level meant; it was used primarily for calculating availability and prices for certain components and trade goods.
Now, Frasgird will have the possibility of a quantum jitter damaging, disabling, or destroying all tech above a certain level. So a sufficiently severe quantum jitter will send farming back to pre-industrial techniques, which does in fact mean that you’re now looking at minimal constant production and periodic harvests — which means that you have to fend off (or accept) starvation in the short run and warehouse the harvests when they do come in. That’s a fascinating elaboration, but one I’ll set aside for now.
More to the point, however, is that as the tech level of the plot climbs, the food production per unit time should increase, and the number of people required to produce that much food should decrease. So food production becomes a weighted function of (at least) two variables: if tech is low, then # of people working the farm becomes dominant; if tech is high, then tech is dominant.
This, I think, suggests a general model for all developments:
- One development/plot to start with, though we may allow multiple developments/plot with sufficiently high tech.
- Creating a development requires certain resources, including people. This would also normally include money as well, though I’m tempted to drop that for now.
- Whatever the development produces per unit time is (usually) a weighted function of the tech level of that development plus the number of people assigned to it.
- The development’s function should take into considering the possible lower bounds for both people and tech, as well as the upper bounds of people and (possibly) tech.
- A given development may require a minimum tech level of X and a minimum number of people assigned to it for it to function at all.
- As the tech level of the development (not to be confused with the overall tech level of the colony) rises, the minimum number of people required for it declines. Sufficiently advanced developments can be run fully automated.
- It may be possible to build and add to a given development a special item that likewise boost production, reduces staffing, etc.
- To upgrade the tech level of a given development requires an investment of time and resources, as well as access to the right technology.
- Quantum jitters can downgrade the tech level of a given development; it can also break or destroy any ‘special tech’ items.
This may not apply per se to all developments, but that raises the next issue: what developments are there? Classic city-building games, particularly 4X games, tend to have research, food, money, and physical things (such as ships or spaceships). I think Frasgird needs to take somewhat different tack to maintain its appeal and to provide some distinction, though it will obviously need to produce food, etc.
The overall goal of the game is ensuring the survival of humanity, and that it turn depends upon gathering a large enough, sufficiently diverse, and sustainable population in Frasgird itself. To achieve that requires at least the following:
- Building an economically viable colony. Frasgird has to be able to produce both goods and technology to sell to other cities, alien and human.
- Providing housing and food of sufficient quality and quantity.
- Using said people to produce the goods and technology to sell to other cities.
These goals depend upon building the right developments in the right order. More later.