Any game mechanic for upgrading ships should take these factors into account: 1) The cost difference between the original ship and the upgraded ship to prevent cheese. 2) The distance from the planet it was constructed on (to prevent cheese with building super fast ships and then upgrading them to mega death ships easily). 3) The MANUFACTURING capacity of either your planet or your civilization to reward players who have built up a manufacturing capacity -- MONEY should NOT come into play unless it's at a massive penalty. |
You cannot stop the player from cheesing you in the field, if you allow in-field upgrades! All you will be able to do is slow them down to a certain extent.
Now, are you really married to an in-field upgrade solution? If so, you are providing players and AI alike a production bonus, because their starports can be busy making new, cheap units, and let the in-field upgrade process finish the work! You can raise the cost up (ie, every bc/shield difference in the upgrade versus the build new cost is x5 upward (depending on whatever techs you want to use to adjust costs in the field). Refitting at a starbase or starport should be at just x2 construct new costs (because you are just refitting an existing base, the piecemeal updating should be cheaper to step up then scrap and build new, but it should cost more then just building an empty hull and then refitting so the optimal path is to build the best you can when its new!.)
If, however, you change it so all work has to be done at a starport/starbase, then the balance is back on the side of the biggest empires with the best industry. That would be the MoO2 system, btw. You could automate this approach, sit a button on a ship in the field that when clicked, sends it to the nearest StarPort and has it queue itself into that starport after whatever is being built. Then the ship would rally/auto-launch/notify as any build.
What kind of cheese do you want to stop? The SMAC minimum shell to instant uber unit? This is a way to do that. You could limit in-field upgrades to an empire's Logistics. Have any and all upgrades suck up military spending (stopping all production at home if you are upgrading a huge navy in the field, for instance), and use that production build, up to your Logistics rating (x something reasonable after game balancing). This means that in mid-game, it would take you a long time to upgrade 100 Serpents in the field, because your Logisitics just isn't high enough to rework everything quickly. This means that sending them back to be reworked at a planet's star dock wouldn't matter in a logistical sense, as that still requires the same resource that is being used to upgrade everyone. Only the actual cost is changing (based on range modifier). And I'd make the Range Mod itself based on Logistics.
For example, I have a Logistics of 50. This lets me upgrade 50 x4 (current game balance setting) shields worth of my ships (wherever). I've got 50 old battleships I want to upgrade with new defense and some meaner weapons, and the total shields worth of work, per ship, amounts to 150 each. This means I can upgrade 4 ships in 3 turns (1.33 ships per turn) That means it will take 37 turns to be able to process all those ships in the first place. Now, range could really eat into my costs (sucking yet more military production up from my empire). Under this set up, an empire with a large military budget would be able to better afford upgrading its in field units. And Logistically advanced societies would be able to more quickly and more efficently re-outfit the ships in field. (I'd suggest you modify the cost for range after determining the maximum rate of upgrading, so that the amount of ships done per turn remains the same, if the empire can afford it. This would help both players and AI figure out how long it will take to upgrade their fleets, although the range cost could make humans miscount what they get done at home while doing the upgrades).
Sound reasonable? Of course, as I said, if you just send the ships to a shipyard, you get around all this, as the same mechanism that builds new ships will upgrade old ships. But that can be troublesome to worry about when playing with massive fleets (made worse on large maps as out lying worlds might probably won't have the production capability to put in those big upgrades).