A New Unit Upgrade System

Olleus

Deity
Joined
Oct 30, 2005
Messages
6,478
Location
Beyond the Veil
I know this should probably be in the ideas forum but hardly anyone goes there so I posted here to get a bigger response.

One of the things which annoyed me most in civ is the spearmen beats tank principle. I just hated it when an elephant overan my machinegunner. It seems unfair that once you have put hundreds of :science: to researching new units you get hardly any return. For example a axeman has a strenght of 5 and a maceman a strenght of 8. The difference of 3 doesn't exactly seem worth it as you have poured so much gold and time to getting a maceman.

Not being a man who just sits and complains I modded the game to give units bigger strenghts as they progress across the tech tree (maceman strenght 13, tank 74 are just a few examples). Now this gave rise to a new problem, as soon as you discovered a 'war' tech one branch of your army became more powerfull than all the others. For example, if you discovered feudalism you got longbowman who, with a strenght of 10, were the most powerfull unit around, and capturing a city with these guys just felt wrong.

So what to do. Well my idea is to have slow continuous upgrades of units. This could be done by having techs giving promotions to units. This would allow a small tech lead to give a continuous, small advantage in war instead of a very big one for 10 turns and then no advantage for the next 50. There would still be new units which would represent 'jumps' in military power.
For example:
An archer has a strenght of 3. Discovering mathematics would give it +10% and so would discovering Monarchy, Pottery and Bronze working. Once you have all of these techs your archer would have strengh 4.2. Say that you know discover Feudalism, your archer is upgraded to a longbowman who has strengh 5 (in this example). Once you add all the other bonuses (which work for all archery units) it has strenght 7. If you write the strenght of your archer over time you get.
3, 3.3, 3.6, 3.9, 4.2, 4.5, 7
while in Vanilla civ it would be:
3, 3, 3, 3, 3, 3, 6
As you can see the top line gives a continuous reward for techs which seems fairer.

What do you guys think? Is this a good idea? Should this be made into a mod?

I know that i would be able to do something like this in Python without much trouble.
 
This sounds like what was in Alpha Centauri: intermittent techs along the way give you new weapons, armor, and other abilities, that would allow you to gradually upgrade your generic defense or attack units.
 
Slow and steady bonus's for researching certain techs would be good, it would add extra research possibilitys ( war monger path, religious path ect ). that way bee lining to certain tech could have disasterous ramifercations for the other play style.

MY ULTIMATE ANNOYANCE however is how cheaply the ai can upgrade, and how expensive it is for you! its almost easier to rebuild an equal number of units than to save up enough money to upgrade ( and 100% wealth = no research, hardly an option when you want to try and get in front of the ai )
 
I have also thought about this some time back although along a different train of thought. I was thinking of making sub-branches of a tech to improve some units.

Here is an example:
(Number values are off, this is just to show the basic idea)

Feudalism - :science: = 3000
Longbow Enhancement 1 - :science: = 1000
Longbow Enhancement 2 - :science: = 1500
Longbow Enhancement 3 - :science: = 2000

Feudalism gives: Longbowman :strength: 5
+Enhancement 1: Longbowmen :strength: 6
+Enhancement 2: Longbowmen :strength: 7
+Enhancement 3: Longbowmen :strength: 8

Then as the longbowmen in the game replace the archers, the enhanced versions will replace the old versions with cheap upgrade to values than normal. I see it in making new improved units you will have to detour from normal research with this method. You can see the values are actually below the research to make the Longbowmen themselves initially but enough of a detour to distract from regular research plans.
 
The problem with doing it your way where they gain a set amount of strenght and have to be upgraded is that it requires 4 longbowman units and 3 extra techs. If you do this for every unit in the game it would take a huge amount of room to do.
 
Yeah, I would not do it for every unit. Mostly I would only hit the late eras where units go obsolete so early to make stretches in betwen. Most of this idea has alot more to it like ajusting other tech costs and unit upgrade costs and such.

The thing I actually like about it is that it adds more units and more techs. If I end up one day focusing on this mod, I will probably try making new skins for all the upgrade units as well.

I think there is far too few techs and units in the game as it is.
 
right i've writen the code that gives all melee units +10% strenght when certain techs are dicovered.
For those of you who are interested here is the code.

This is applied when a new tech is discovered
Code:
	def MeleeUpgradeOnTech(self, iPlayer, iTech):
		list = ["BRONZE_WORKING", "IRON_WORKING", "METAL_CASTING", "NATIONALISM", "STEEL"]
		for Tech in list:
			sd.sdEcho("The tech being checked for is %s" % ("TECH_"+Tech))
			if iTech == gc.getInfoTypeForString("TECH_"+Tech):
				iNumUnits = gc.getPlayer(iPlayer).getNumUnits()
				sd.sdEcho("The player has %i units" % iNumUnits)
				for iUnit in range(iNumUnits):
					sd.sdEcho("Looking at unit %i" % iUnit)
					pUnit = gc.getPlayer(iPlayer).getUnit(iUnit)
					sd.sdEcho("Unit is of combat type %s" % pUnit.getUnitCombatType())
					if pUnit.getUnitCombatType() == gc.getInfoTypeForString("UNITCOMBAT_MELEE"):
						pUnit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_"+Tech+"_MELEE"), True)
						sd.sdEcho("A unit has gained the %s Promotion" % Tech)

This is applied every time a unit is built
Code:
	def MeleeUpgradeOnUnitCreated(self, pUnit, pPlayer):
		sd.sdEcho("A unit has been built")
		if pUnit.getUnitCombatType() == gc.getInfoTypeForString("UNITCOMBAT_MELEE"):
			sd.sdEcho("That unit is a melee unit of team %s" % pPlayer.getTeam())
			pTeam = pPlayer.getTeam()
			list = ["BRONZE_WORKING", "IRON_WORKING", "METAL_CASTING", "NATIONALISM", "STEEL"]
			for Tech in list:			
				if pTeam.isHasTech(gc.getInfoTypeForString("TECH_"+Tech)):
					sd.sdEcho("The team has %s" % Tech)
					pUnit.setHasPromotion(gc.getInfoTypeForString("PROMOTION_"+Tech+"_MELEE"), True)
As you can see it is fairly small code and does not take much room.
 
Right I've done my homework to make sure that the game remains balanced. I have attached a chart which shows all of the 'upgrades' that units can have and how that affects the units. I think that i have included every land military unit their (not counting UUs). Tell me what you think and if anything seems over or under powerful
 
While I agree with new technologies adding some level of extra benefits to new and existing units I think its possible to overdue it.

Not knocking the idea or any of the work thats been done (especially since I ahven't tried it out yet).

Something along the same principles I would like to see is gradual upgrading of city units, a colesium is a colesium but wheres the Astrodome?
 
i've played half a dozen games where the units are about that powerfull (just excluding all the tech bonuses) and it works quite well. It basicaly means that having a technological advance of 1 age makes a war a whole lot easier but it is still possible to loose. You can believe me when i say that no spearman will ever beat one of those tanks. However a well defended rifleman might finish off a wounded tank.
 
interesting idea. does the tech tree in your mod, inform you of all of these boni? so I know that researching X will give me +% to this or that unit?

Did you take into count all the UU? how far along the tech tree does your +% effect the final #? What I mean is does the fact that I learned horse riding 3000 years ago make a final difference in my Modern Armor?
 
It just affects that unit. For example, mathematics affects archers but does nothing to longbowmen. I started from the principle that you already have mathematics so their is no need to give an extra bonus.
UU will be affected in exactly the same way as its 'parent' unit. (the 'parent' unit of a preatorian is a swordsman for example)
 
Interesting ideas! It might make catapults a bit stronger in the very long time it's the only siege unit until cannons. Good luck with this mod!
 
Well, its actualy almost finnished. Every land unit has been included and the others will soon be included to. The only thing i've got to do is create 50 ish promotions which should take an hour or so.
 
Lord Olleus -- Excellent timing. I was just going to post a query about how things were coming along.

If you need someone to do some testing, count me in.
 
Ok. I'll post the mod tomorow or the day after. If a few people would like to test it to make sure its balanced, it would be great.
 
Nice idea and certainly worth trying in mods. I assume both overall strength increase for all units and continuous small tech promotions apply (if only the second one was in effect it would be in fact easier to devastate brand new machinegunners with beefed up ancient elephants ;) ).
 
Lord Olleus -- how are things going with that mod of yours?
 
Well i've had some serious problems with unit upgrades. The problem was that when a unit is upgraded it keeps all its promotions, but i wanted it to loose the tech promotions. It's taken me some time to figure out how to do this but i've done it. Here is the alpha version of the mod. I recomend that you keep the exel chart posted above open so that you know where to get those extra promotions. Also i haven't been bothered to name all of my new promotions and lots of them are just called "Engineering War Elephant" so dont worry about that.

Other minor changes i've made include:
1) 5 people per unit (stole this mod off someone else)
2) upgrade cost equalls 1 per hammer difference in cost of unit
3) added trebuchet
4) french UU replaced by Cuirassier (replaces cavalry a lot more powerfull but costs 150 instead of 120)
5) Grenadiers and Marines are now melee units

I am playing this mod now on prince, huge map, epic, 12 AI, Prince, Napoleon and everything else default, and i am going for a domination victory. If alpha testers could use different settings it would help in testing the mod.

http://www.civfanatics.net/uploads11/test.zip
 
Top Bottom