here are some of my ideas which I tried to implement in the past in Python .. got stuck with saving this stuff to the savegame , also had some other urgent things so I dropped it
The Freighters.
1. hammer freighters, they represent a hired work force that are transferred from one city to another for performing various jobs. Can be built in one city and moved to another city, to be unloaded there for a fraction of hammers used to build them, which are added to the current project.
To make this less cheesy, make ancient freights very inefficient. Also the longer the freight is being moved to destination, the less hammers survive the trip. In essence, each turns the worth of any freights still in game decreases by some percentage.
As you see, the efficiency of this kind of hammer transfer depends heavily on the distance to the destination city AND the quality of transportation system of your empire, which is IMO pretty realistic.
2. Food freights. Represents the ability to import food reserves to the city if it starves etc. This is tricky as you can't build with ONLY food, hammers also count.
This is why this unit works like this -
You build a "food freight" unit in some city. It is built like workers/settlers or like the usual unit, does not matter. It's relatively cheap.
The unit has following commands -
Load food - this subtracts food from the granary of a city it is located at, loading itself. After this it works the same as hammers freight - its stored food decreases each turn etc.
When the freight arrives to destination city, it can perform Unload action which moves food from freight to the granary. You can't fill granary over its max capacity, the rest of food is wasted (or maybe it stays in the freight if you like). The freight itself may or may not be removed from game by this action.
Again, the speed of food decline depends on the era and techs (f.ex. with refrigeration freights last longer).
Some might argue that it's a bit unrealistic to be able to instantly transfer vast amounts of food stored in granary, as the granary is just an abstraction for natural city growth. So maybe this needs some tricky scheme to load a freight. For example - there should be a special treatment of the command "Sentry" for a food freight (heck, maybe for hammers too). When the food freight is "sentried" in a city, city's food surplus is added to this freight instead of granary, with some limit. If the limit is reached, freight is waken instead of being filled. While being filled, freighter food reserves do not decrease. However freighter can be filled only once after being fully unloaded or built, which is easy to take care of with additional attribute tied to a unit.
These two are relatively easy to implement - using some Python coding plus storing of the special attribute associated with each unit, which can be stored in simple Python table. The tricky part is how to save this table with saved game .. (I am sure this is now easily solvable though, am I right?)
3. Permanent resource trading. This was in civ2 I think ..
basically you remove some amount of resource income from one city and add this amount (or a little less) to another one. each resoource route should cost money to maintain each turn, which is more if the source and destination is farther. It's trickier to implement than regular freights described above though.
And of course it's going to be a nightmare teaching AI to use these things
