Judgement said:
There would have to be a few extra restrictions to eliminate possible exploits. For example, say i have a city that has 40 shields per turn. I could disconnect it from resources and build warriors. After 1 turn, I have 30 shields carryover. If there is not penalty or discount and I build another warrior, then the next turn I have 60 shields carryover, and so on: I can accumulate more and more shields. After doing this for a large number of turns, I could switch to building some improvement or wonder and have enough shields to complete it instantaneously (even if there's a 50% or 25% penalty for switching).
So you'd need to be prohibited from carrying over shields to start wonders, or it would create another mechanism for pre-builds. And pre-building of improvements could happen this way, too (although that's less of a problem).
When I saw Judgement's post, I suspiciously questioned whether he had found a true exploit in Denyd's proposition, so I created four tables and graphed a curve. Let me explain them, or just set your browser to skip to the words, "END OF MATH RANT". Four cities (one for each table) build Warriors and accumulate shields to be spent on a Wonder. To negate overly complicated math, we will assume these cities neither grow nor shrink.
In Table 1, Athens produces 80 shields per turn.
Code:
[Table 1]
Turn | Judgement's exploit | Without exploit
---------------------------------------------------
1 | 1 Warrior + 70 shields | 80 shields
2 | 2 Warriors + 140 shields | 160 shields
3 | 3 Warriors + 210 shields | 240 shields
10 | 10 Warriors + 700 shields | 800 shields
25 | 25 Warriors + 1750 shields | 2000 shields
---------------------------------------------------
Efficiency ratio: 87.5%
In Table 2, Thebes produces 40 shields per turn.
Code:
[Table 2]
Turn | Judgement's exploit | Without exploit
---------------------------------------------------
1 | 1 Warrior + 30 shields | 40 shields
2 | 2 Warriors + 60 shields | 80 shields
3 | 3 Warriors + 90 shields | 120 shields
10 | 10 Warriors + 300 shields | 400 shields
25 | 25 Warriors + 750 shields | 1000 shields
---------------------------------------------------
Efficiency ratio: 75%
In Table 3, Kyoto produces 25 shields per turn.
Code:
[Table 3]
Turn | Judgement's exploit | Without exploit
---------------------------------------------------
1 | 1 Warrior + 15 shields | 25 shields
2 | 2 Warriors + 30 shields | 50 shields
3 | 3 Warriors + 45 shields | 75 shields
10 | 10 Warriors + 150 shields | 250 shields
---------------------------------------------------
Efficiency ratio: 60%
In Table 4, Rome produces 20 shields per turn.
Code:
[Table 4]
Turn | Judgement's exploit | Without exploit
---------------------------------------------------
1 | 1 Warrior + 10 shields | 20 shields
2 | 2 Warriors + 20 shields | 40 shields
3 | 3 Warriors + 30 shields | 60 shields
10 | 10 Warriors + 100 shields | 200 shields
---------------------------------------------------
Efficiency ratio: 50%
Legend:
1 = Athens
2 = Thebes
3 = Kyoto
4 = Rome
END OF MATH RANT
For you math haters who are still with me, I will spell out what this means: If you want to build a Wonder that costs 1000 shields ASAP, and you don't need a big heap of Warriors, then you'd best ignore Judgement's "exploit" and just build the Wonder normally. It's more efficient.
IMHO, Denyd, I think you have a fine basic concept here. Having unused shields added to the next build order is a simple and sensible idea.
Big penalties for switching build orders midway, if done wrong, can spoil the fun for many players. Frankly, I think a small change on Civ2's game mechanic would do fine. Here's how I would have it work:
Code:
SwitchBuildOrder Subroutine(ByValue PreviousBuildOrder as BuildOrder,
ByReference NewBuildOrder as BuildOrder)
If (PreviousBuildOrder was a Unit)
And (NewBuildOrder is an Improvement Or a Wonder)
Then Do BuildPenalty Function(NewBuildOrder)
ElseIf (PreviousBuildOrder was an Improvement)
And (NewBuildOrder is a Unit Or a Wonder)
Then Do BuildPenalty Function(NewBuildOrder)
EndIf
End Subroutine
BuildPenalty Function(ByReference X as BuildOrder)
New Constant ShieldPenalty = 0.5
X.ShieldsAccumulated =
X.ShieldsAccumulated - (ShieldPenalty * X.ShieldsAccumulated)
End Function
For all you people who don't study computer programming, I meant this. Apply a Penalty to any switched build order in which the new build order is of a different type (types meaning either Unit, Improvement, or Wonder),
except in one instance: The Penalty is
not applied when the previous order was a Wonder.
Wonders are so incredibly expensive to build, it's a big disappointment when the player is one turn too late to complete it. That's why I want no penalty from switching a Wonder build order to a less valuable type (Unit or Improvement).
Though I personally suppose a 50% Penalty is good, it should be left to Firaxis, the Beta testers, and any third party chosen by Firaxis to decide on a final Penalty for switching build orders in Civ4. Oh, and suggestions from you people would be fine too, I guess.
(end of mega post)
