Fixing things that weren't broken

They mentioned in a podcast that the tech tree was something they had trouble with. Apparently, last game, Soren came up with the tech tree early and everybody was like "this is amazing". With the Civ5 tech tree, they came out with one version, realized that it was too narrow and linear, and then settled on this one as a better version.

It's definitely got flaws that come from wanting to avoid dead end techs, filler techs, and wanting to connect all the techs with lines. It's not an easy thing. I don't think you necessarily need OR prereqs, although that is one way of doing it.

OR prereqs have this advantage: They are very flavourful. For example you could imagine reaching Mathematics by way of Currency (the traders developed it), by Engineering (you want it to build machines and calculate irrigation channels), or by Construction (you want to calculate forces).
 
They're nice. But they require even more careful planning. Tech trees are actually a real pain to think of as I'm sure any modder who has tried to make a mod specific to one time period will tell you. Some people are better at making them than others. I, for one, suck at making them.
 
They're nice. But they require even more careful planning. Tech trees are actually a real pain to think of as I'm sure any modder who has tried to make a mod specific to one time period will tell you. Some people are better at making them than others. I, for one, suck at making them.

I think, with the last sentence you've qualified for becoming a developer at Firaxis.
 
lol. Apparently Soren got some kind of divine inspiration that allowed him to have a perfect tech tree for Civ4. With Civ3, they made it easier on themselves by separating it by era. It made things less fun and prevented you from going ahead without completing practically everything, but the tech tree was relatively straight forward and they made sure you had the right techs.

At some point, I will actually give a shot of making a tech tree mod. At a minimum, it would be a fun brain exercise to use my historical knowledge and put it to good use. But I don't think we can be under any illusions that making a tech tree from scratch is easy.
 
lol. Apparently Soren got some kind of divine inspiration that allowed him to have a perfect tech tree for Civ4. With Civ3, they made it easier on themselves by separating it by era. It made things less fun and prevented you from going ahead without completing practically everything, but the tech tree was relatively straight forward and they made sure you had the right techs.

At some point, I will actually give a shot of making a tech tree mod. At a minimum, it would be a fun brain exercise to use my historical knowledge and put it to good use. But I don't think we can be under any illusions that making a tech tree from scratch is easy.

Certainly not. I think the easiest approach is actually to use heavy top-down design. Think about which techs make the most sense to you historically speaking, then delete as many as you need to get down to the number of techs you want. Then arrange them in a tech tree. Then create buildings, game components and units that fit your tech tree. Then balance costs

I reckon this is what Jonson did, and it's probably what Shafer tried to do, but if their first approach was too simple, this would explain a lot of things because if you go for top-down design, it's a catastrophe if the fundamental design doesn't work out
 
I also miss COTTAGES as these simulated (in a rudimentary sort of way) the fact that economic growth progresses over time, as opposed to trade posts which provide a quick fix of cash that remains constant throughout history.
 
No unit cycling is an option (well, it's called "Auto Unit Cycle" and it can be disabled to get the effect you want). Have you not seen it in the options screen? It was added with one of the earlier patches.

Oh thanks. I missed that. The game is now perfect (except for bugs, dumb AI, diplomacy, etc., etc.).
 
I also miss COTTAGES as these simulated (in a rudimentary sort of way) the fact that economic growth progresses over time, as opposed to trade posts which provide a quick fix of cash that remains constant throughout history.
It doesn't remain constant actually. Due to marketplaces and other multipliers, trade posts give more over time. Cottages got the double-benefit, and yes, were spammed. How do you balance a cottage? Either it was worse than other ways to make finance, or it was way better.
 
May I ask, in which way the above proves your point of view and invalidates mine?

And this sequence of statements makes it really ridiculous. :lol::lol::lol:

Sorry, but we're not discussing Civ4's AI.
Any strength or weakness this AI would have had doesn't make Civ5's AI stronger or weaker.

So what?
Because Civ4 allegedly "didn't" play to be an opponent makes Civ5 do so?



I am not confusing anything, I am looking at the game. Civ5, in this case.

As soon as the UN is built (regardless of who did this), you have a limited number of turns after which an "election" is performed.
Known parameters are: No other major civ will vote for you. Under no circumstances, never. You will get your own vote, plus the ones of allied city states and liberated cities. Point, period, end of list of parameters.

This makes it quite easy to determine winning conditions:
Get enough allies, even better, get former allies of your opponents as your allies now.
As getting allies is a function of spending money (if not at war with you currently), it comes down to "collect money, spend it one turn prior to election".

But the AI is uncapable of doing so.

Very similar it is with domination victory. The AI will randomly leave some capitals under the reign of their original civs, although it could easily conquer them and retrieve the domination victory.

Any attempt of going for cultural victory or spaceship I haven't observed yet since my games were over much earlier.

So, the conclusion is quite obvious:
The AI does not pick the available winning conditions, it does not adjust to obvious end of game conditions.
It is not playing to win. It has been programmed to be some kind of obstacle, but nothing more.

Your argument basically boils down to "it doesn't fit my personal definition of playing to win, so it doesn't play to win". In fact, if you had programming experience, you would realise how difficult your strategy is to implement. No game AI is ever going to play like a human would. You can either live with it or stop gaming.
 
My feeling is that the Civ5 people didn't look at what Civ4 did right before designing Civ5.

A perfect example is the unit cycling behaviour. Civ4 did it really well, the map jumped around a lot less than it does in Civ5. It still jumps around a lot more than Civ4 did, even after they improved it in the last patch!

Do they have access to the Civ4 code? Why didn't they just copy the old algorithm?

ROFL at unit cycling in Civ5 !! I move my artillery along the road into a city and then the cycling assumes I want it garrisoned and moves away. I come back and tell it to set up and fire, and again cycling moves away and I have to come back and tell it to shoot as well.

Some features of this game seem to have been programmed by the temporary summer help in the mail room, and in spite of the patch, unit cycling still sucks.

.. neilkaz ..
 
Your argument basically boils down to "it doesn't fit my personal definition of playing to win, so it doesn't play to win". In fact, if you had programming experience, you would realise how difficult your strategy is to implement. No game AI is ever going to play like a human would. You can either live with it or stop gaming.

Actually, if you don't see how an "AI" has to be programmed to achieve a "diplomatic" (aka: bribery) victory, then noone can help you anymore.

What this would have to do with my playing style is completely beyond me.
 
You're basically asking the AI to play to your play style. The AI in this case isn't going for diplomatic. It decided it's condition at the start of the game. What you're asking it to do is check every victory condition and assess the likelyhood of achieving it every turn, switching accordingly, and doing so in a coherent matter. Even if it was implmented (which it won't be), it would result in the AI changing the victory condition it goes for very, very frequently. Either way the AI will lose, it's just a question of how much processor power it will take.

If you actually want an AI that changes strategies faster than a ferret on a sugar high, feel free to suggest the AI do this.
 
See.. There's a few things Civ V Did great.. but..
I'm finding I'd rather play Civ IV than civ V because of A: The Tech tree, B: Trading techs C: .. Why the hell do I have no player generated content anymore?
 
I take that back.. the #1 reason I don't play civ V much is because you can't skip the intro easily XD
 
You're basically asking the AI to play to your play style. The AI in this case isn't going for diplomatic. It decided it's condition at the start of the game. What you're asking it to do is check every victory condition and assess the likelyhood of achieving it every turn, switching accordingly, and doing so in a coherent matter. Even if it was implmented (which it won't be), it would result in the AI changing the victory condition it goes for very, very frequently. Either way the AI will lose, it's just a question of how much processor power it will take.

If you actually want an AI that changes strategies faster than a ferret on a sugar high, feel free to suggest the AI do this.

Although in one of your previous postings you have quoted me, you seem not to have read what I wrote.
But for your convenience, I will copy it:
I am not confusing anything, I am looking at the game. Civ5, in this case.

As soon as the UN is built (regardless of who did this), you have a limited number of turns after which an "election" is performed.
Known parameters are: No other major civ will vote for you. Under no circumstances, never. You will get your own vote, plus the ones of allied city states and liberated cities. Point, period, end of list of parameters.

This makes it quite easy to determine winning conditions:
Get enough allies, even better, get former allies of your opponents as your allies now.
As getting allies is a function of spending money (if not at war with you currently), it comes down to "collect money, spend it one turn prior to election".

But the AI is uncapable of doing so.

This has nothing to do with *my* playstyle.
This is a very simple consequence of the built-in rules of that game.

I have picked the example of the "diplomatic" victory, since this constitutes the most easy to identify winning situation.
All players are getting informed that the UN has been built. All players know how many turns are left, all players know about the winning conditions.

Talking about an AI "designend and/or programmed to win" and then saying "oh well, it just doesn't adjust to the circumstances" is just hilarious. It is just parroting 2K's marketing talk.

I understand that you are fine with having opponents which cannot win. That's ok, to each their own.

But please stop praising the AI for things it just doesn't do.
 
And how often do you propose to have the AI check for the best victory? "Check once and update if changed" is not a valid method - the AI has no memory of past events (other than the diplo numbers), and giving it one would be too complex and computationally intensive to be feasible. You're the one that's not reading (or at least not understanding) what I'm writing.

The AI does play to win. Just because the AI sucks does NOT change that fact.

Did you not read the articles that came out before release? The strategic AI was mentioned almost as often as hexes and one unit per tile.
 
And how often do you propose to have the AI check for the best victory? "Check once and update if changed" is not a valid method - the AI has no memory of past events (other than the diplo numbers), and giving it one would be too complex and computationally intensive to be feasible. You're the one that's not reading (or at least not understanding) what I'm writing.

The AI does play to win. Just because the AI sucks does NOT change that fact.

Did you not read the articles that came out before release? The strategic AI was mentioned almost as often as hexes and one unit per tile.

Yes, I have read that critique-less repeating of 2K's marketing talk.
As we watched a test game play out in front of us, AI programmer Ed Beach explained the way the AI uses subsystems to create and execute its strategies. At the lowest level, the tactical AI uses the forces at hand to win a battle on a local scale. One step up from that, the operational AI picks which battles to fight and makes sure that the necessary forces are available. Moving even higher, the strategic AI manages the empire as a whole, focusing on where to build cities and what to do with them.
At the top of the ladder is the grand strategic AI, which decides how to win the game. If the grand strategic AI decides to go for a conquest victory, the strategic AI will build the infrastructure needed to wage war and the operational and tactical AIs will choose and fight the battles. That way the tactical AI won't be fighting battles merely for the sake of fighting battles, but because those battles are relevant in the grand strategic AI's big picture. In the case of the conquest victory, the AI will be aiming to capture the other civ's capitals, which is all that's needed for a military victory this time.
It sounds kind of insane, but Firaxis is constantly running AI games in a test environment to get a better sense of the relationships between all these systems.
(...)
So now the AI has to decide whether the tactical AI can even win the fight against Rio and, if not, what other adjustments need to be made at the other levels. Each of those four levels also has a unique opportunity to set or be influenced by the AI's research and diplomacy goals, which requires even more flexibility and cooperation among the various subsystems.

About your question how often the AI should check and how demanding this would be and whatnotever, I can only advise you to take some lessons about programming.
Maybe there are some adult evening classes in your vicinity.

would be too complex and computationally intensive to be feasible
My old programming professor would have thrown you out of our class even 25 years ago, if you would have dared to tell him such a nonsense.

And it becomes even worse:
The AI in this case isn't going for diplomatic. It decided it's condition at the start of the game.
What you try to indicate is that the AI picks a winning condition at the start of the game and after that doesn't look left or right.
That is not "being programmed to win", that is following a predefined pattern, come what may.

But is is ok, feel fine to parrot the marketing talk without even thinking about it.
 
Actually I'm a computer science major with a 4.0 GPA. Plus I've modded civ4 a lot, so I have to say that I've probably had infinitely more experience with civ's code than you have. And last time I checked, you need a supercomputer just to have a good Chess AI, and civ is a LOT more complex than Chess.

In fact, here's a sample piece of AI code for civ4 (actually, and override done in python that mimics the AI... but the process is still the same):
Code:
	def AI_unitUpdate(self,argsList):
		pUnit = argsList[0]
		
		FinalFrontier = CvEventInterface.getEventManager()
		
		bOverride = false
		
		pPlayer = gc.getPlayer(pUnit.getOwner())
		if (not pPlayer.isHuman()) and (not pPlayer.isBarbarian()) and pPlayer.isAlive() and (not pUnit.isNone()) and (not pUnit.isDead()):
			iConstructShip = gc.getInfoTypeForString(gc.getDefineSTRING("CONSTRUCT_SHIP"))
			if (pUnit.getUnitClassType() == iConstructShip):
				bOverride = FinalFrontier.getAI().doConstructionShipAI(pUnit)

			#Cloaking
			pTeam = gc.getTeam(pPlayer.getTeam())
			pPlot = CyMap().plot(pUnit.getX(), pUnit.getY())
			if (pPlayer.isTurnActive( ) and pUnit.canMove()):
                                if (pTeam.isHasTech(gc.getInfoTypeForString('TECH_CLOAKING_DEVICE')) and not (pPlot.getOwner() == pUnit.getOwner() or gc.getUnitInfo(pUnit.getUnitType()).isNoCloaking() or pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK')) or pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK_FIRE')))):
                                        if(pUnit.canAirAttack() or pUnit.currHitPoints() < 50 or pUnit.getUnitAIType() == gc.getInfoTypeForString('UNITAI_PILLAGE')):
                                                if(pUnit.getUnitType() == gc.getInfoTypeForString('UNIT_KLINGON_CHANG') or pUnit.getUnitType() == gc.getInfoTypeForString('UNIT_SCIMITAR')):
                                                        pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK_FIRE'), true)
                                                else:
                                                        pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK'), true)
                                                pUnit.changeMoves(60)
                                                if(pUnit.currHitPoints() < 50 and not (pUnit.canAirAttack() or pUnit.getUnitAIType() == gc.getInfoTypeForString('UNITAI_PILLAGE'))):
                                                        pUnit.setScriptData("CloakHeal")
                                if (pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK')) or pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK_FIRE'))):
                                        if(pPlot.getOwner() == pUnit.getOwner() or (pUnit.currHitPoints() == 100 and pUnit.getScriptData() == "CloakHeal")):
                                                if(pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK_FIRE'))):
                                                        pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK_FIRE'), false)
                                                else:
                                                        pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CLOAK'), false)
                                                if(pUnit.getScriptData() == "CloakHeal"):
                                                        pUnit.setScriptData("")
		
		return bOverride

As you can quite clearly see, all the AI does is check for conditions and react too it. In fact, civ4's AI has to ignore the unit visibility rules to act intelligently because it can't articulate that if it just saw a unit it's still nearby... if it sees something in one turn (or even part of it's turn) but not the next, as far as the AI is concerned the unit never existed. It will never approach a human's intelligence, at least not until we have quantum computers.
 
You see, this is exactly your problem.

You don't understand it.

Now you come with code of Civ4 (and even then, not of the core game) to exactly prove *what* for *Civ5*?

This is just ridiculous. As far as I am concerned, this particular "discussion" is over.
 
What's "this"?

The code was meant to show you how civ's AI works. I doubt the methods of programming it will have changed at all between civ4 and civ5. I also figured that at this point it would be better to show you an example that I wrote. But to humor you, here's one from the base game:
Code:
    // try to use Warlords to create super-medic units
	if (GC.getPromotionInfo(ePromotion).getAdjacentTileHealChange() > 0 || GC.getPromotionInfo(ePromotion).getSameTileHealChange() > 0)
	{
		PromotionTypes eLeader = NO_PROMOTION;
		for (iI = 0; iI < GC.getNumPromotionInfos(); iI++)
		{
			if (GC.getPromotionInfo((PromotionTypes)iI).isLeader())
			{
				eLeader = (PromotionTypes)iI;
			}
		}

		if (isHasPromotion(eLeader) && eLeader != NO_PROMOTION)
		{
			iValue += GC.getPromotionInfo(ePromotion).getAdjacentTileHealChange() + GC.getPromotionInfo(ePromotion).getSameTileHealChange();
		}
	}

As you can see, it's just a series of if statements.
 
Top Bottom