I believe I have successfully sketched out a framework which will combine everything we have been wanting, but is still possible to code using existing game features as a base. And to quote someone else on this forum, “No, I don’t blame anyone who thinks this is sickeningly long.”
These are the current Civ 4 resources (35 altogether):
Strategic (9):
Aluminum, Coal, Copper, Horse, Iron, Marble, Oil, Stone, Uranium
Luxury (15):
Dye, Fur, Gems, Gold, Hit Movies, Hit Musicals, Hit Singles, Incense, Ivory, Silk, Silver, Spices, Sugar, Whale, Wine
Food (11):
Banana, Clam, Corn, Cow, Crab, Deer, Fish, Pig, Rice, Sheep, Wheat
Broadly speaking, they are divided into three categories as shown. However, they are all fundamentally the same--
they are all resources. They are all tradable in the same way, they are all binary, and they all provide some kind of bonus (happiness, health…
to every city connected to them.
They are treated exactly the same.
We’ve talked about splitting them up before, and what I propose here is just that, with one major difference:
the game recognizes each category as fundamentally the same, so it solves all the coding issues. The categories are largely user constructs. Only one category will be true (strategic) Resources; the others will be Food and Luxuries. It’s a no-brainer.
The problems we have been having for so long stem from trying to reconcile Stockpiled Resources and Capacity Resources. My proposal, which is not new, is to split them into three categories. Food resources will be non-quantitative and non-stockpiled; luxuries will be quantitative but not stockpiled; and only strategic resources will be both quantitative and stockpiled.
Here’s how it will work. Food resources will be set up basically like they are now--not quantified, not stockpiled. If you have access to one, that’s all that’s necessary to get health bonuses throughout your empire. My reasoning is that food resources can be grown on demand, unlike most luxuries and all strategic resources. So having access to one farm might seem silly if it can provide an empire-wide bonus, but you’ve got to remember that there may be 100,000 people working there on a area of many hundreds of square miles. A farm can expand and grow as much as you need in real life (within geographical constraints). If you don’t like this idea, we can make it like the luxury system, which I’ll explain below.
There is no need to stockpile food because in real life, this just doesn’t happen in the long term. Food spoils. Plus, most of the “storage” in the game is handled by the existing mechanic with granaries and tile yields, so any stockpiles for the Food category would be redundant. A true QR system involving food would necessitate an entire overhaul of the food system, which we are not prepared to do here. Maybe in Civ 5. Meantime, this is the best solution.
In the trade screen, Food resources will be traded only per turn, just like it’s done right now.
Luxuries will be halfway between Food and Strategics. They will be quantized, but not stockpiled. What do I mean? Simple: it’s like the slot system described earlier. Each luxury will provide so much output per turn with the proper terrain improvement. A gold mine might yield +5 gold per turn. However,
this is not stockpiled, meaning you won’t have ~40 counters total to watch over. Instead, the sole focus is on the
per turn production. In XML you could set it so that one gold per turn provides X cities with happiness. If you go over your supply limit, any new cities don’t get the gold bonus. It just doesn’t show up in the city screen--it’s like it’s not even there. (If this doesn’t work for you, we can debate city handling issues later.)
Example: a gold mine produces 8 gold per turn, and it’s set so that 1 gold provides 2 cities with happiness. That means so long as you have less than 16 cities, you’re okay. In the trade screen, this would show up as “+8 gold available for trade” on a per turn basis. So you can sell any excess gold to the AI for profit.
Once again, if you feel this is too complicated then we can simply take the lesser Food approach, which is largely binary.
Finally, there’s strategic resources. They are fully quantified and stockpiled, meaning you can define X stone is needed to build this wonder/unit/building, etc. You can also set up multiple production chains with various facilities and buildings, as Dom said in post 50. Trades with the AI will work just like trading a lump sum of gold does now; it’s added or deducted from your global resource counters. This way, you only have around 9 counters to keep track of, since only Strategic resources are stockpiled. And because they are stockpiled, we avoid the issue in Genetic Era where a loss of a resource will mean you can’t build any more units. You will still have your reserve supply.
A comparison to the current game setup:
We tend to forget that there is already one thing in the game that can be traded as a per turn or lump sum: MONEY. We can use that existing code here. Food and luxury resources will work almost like they do now, and can only be traded per turn. Strategic ones, however, will be traded quantitatively, in lump sums, and if we wished later on we can also enable per turn trades. So if you’re concerned about the coding aspect, my response would be to say that it’s already there; we only have to utilize it for these new resource classes.
Now, the issue Dom has is that this is a pain to code. He doesn’t want a hybrid system because it’s too hard to do. I can hear him objecting right now, and I understand perfectly. That’s where the surprise comes in.
The beauty about this system is that
we can define ALL the resources as fully quantified, but it doesn’t show up that way in the game. The player never has 40 counters to check each turn. Hence, we scrap the old binary system like Dom wanted, and apply an entirely new one, but it still gives the
illusion of binary resources for the ones defined that way. Here’s how I see it:
Each resource gets its own per turn counter (which measures the total amount produced per turn) as well as its own stockpile counter (which measures the amount already stored, and will only show up in-game for the strategics).
Food is the simplest. 1 corn resource = +1 corn produced per turn. 2 corn tiles = +2 corn per turn, etc. The stockpile is irrelevant here.
Luxuries are a step up. Instead of just one, they produce several, e.g. a plantation makes +5 silk per turn. The per turn counter is elsewhere used as a check against cities. Suppose 1 silk increases happiness in 5 cities as defined in XML. Hence, if you have +5 silk per turn and 13 cities, you’ll have a net flow of +2 per turn which you can sell to your trading partners without affecting your own economy. Again, the stockpile is irrelevant.
Finally, quantized strategic resources will have both. An iron mine makes +5 iron per turn, which gets added to the storage counter at the end of each turn. You can sell specific amounts to your friends, require X amount for a building, and everything else we’ve been talking about.
The best part is that Dom’s bonus modifier (for techs, etc.) can still be implemented. You just base it on the per turn production or stockpile of a specific resource, for the reasons I said before. And it satisfies the “80% of it is going on under the hood” test. The only thing the player will have to watch closely in-game is the new counter system for the 9 select strategic resources. So the moral of the story is everybody’s happy… I hope.
Again,
80% of it is going on under the hood. Each system is fundamentally the same in code, but the way they work in the game gives the illusion of very different properties. There’s just an extra bit of code needed for the happiness/health issue, but that’s all. The rest of the framework (e.g., for AI trading) is already in the game in some form.
So that’s my idea, and it’s open for discussion. We can tweak the fine points however you like, but I think the basics are sound. Please ask any lingering questions and tell me what you think.
EDIT: It seems FanaticDemon has done something similar to this (part of it, anyway) so I direct the reader to his mod for further information.