Multi-core/64-bit support

Oblivion was Cider ported in less than 50 person/hours I doubt Civ V will be too hard
 
I would often play Civ4 on my laptop which has switchable graphics, and when on battery I would experiment with different configurations. While lowering the CPU clock affected performance a little, switching to the slower video card (with full CPU clock) had a huge effect. It's anectodal, but it mirrors experience I've had with upgrading video cards and CPUs in my desktop.

That could all change if developers start making games utilize the CPU and extra cores more, of course. I don't think they do right now though.

Laptop graphics cards a bit of a different beast. Or rather, puny whimpering sack of flesh.

They're often so slow and so underpowered that switching to a graphics card a single class up make a lot of noticeable difference. On the other hand, I can tell you that there's pretty much no difference between playing Civ 4 on a GTX9800 and GTX 260, two cards which are not that far apart in terms of models and series, but are in general higher end.
 
To address some misconceptions:

You fell victim yourself, but it's ok :)

The downside of 64-bit is that the addresses are twice as long as in 32-bit, so if you want to load a list of addresses (say, all your catapults in your SoD) you need twice the memory to store it and twice the bandwidth to access it.
Most consumer CPUs with 64-bit support use 48-bit addresses. This still gets you up to something like 16TB as your limit which AMD figured was enough at the time and Intel doesn't appear to have disagreed.

... everything gets calculated in 64-bits, so you don't need to spend more time working with very big or small numbers, ...
Many (most even) modern 32-bit CPUs already support 64-bit integers and floats, some have special 64-bit types (long long for instance). This is one of those details that kills novice C++ programers :)

The CPU has very little performance impact on games nowadays. The real bottleneck is (and has been for years) the video card.
Interesting... very wrong, but interesting. See how that fancy new GPU works in an outdated board with an old bus (like the early PCI-E hacks), a slow CPU and cheap RAM. Oh, then install your games, OS and everything else onto a single cheap hard drive and see if you can figure out where the bottleneck really is. Feel free to use an underpowerd PSU too, if you like living on the edge.

I know it sounds like an exageration but this is what you get when somebody who doesn't know better reads a game forum and decides the only upgrade they need is a new $500 video card.
 
Interesting... very wrong, but interesting. See how that fancy new GPU works in an outdated board with an old bus (like the early PCI-E hacks), a slow CPU and cheap RAM. Oh, then install your games, OS and everything else onto a single cheap hard drive and see if you can figure out where the bottleneck really is. Feel free to use an underpowerd PSU too, if you like living on the edge.

I know it sounds like an exageration but this is what you get when somebody who doesn't know better reads a game forum and decides the only upgrade they need is a new $500 video card.

Actually he's right to quite a high degree. Its pretty widely known that for the majority of games released in the last 4-5 years, you can get by with even the earliest C2D. There are exceptions to that, like SupCom, Crysis and some other games, but in general, the graphics card is whats holding back your fps.

For example, an upgrade from a 2ghz C2D to a 2.4ghz C2D would in most cases do little to your framerate. And upgrade from a GTS 250 to a GTX 275 (about the same difference in price) would make your framerate jump up considerably in a lot of games.

You have a point that a GPU upgrade is much unneeded for an old pc of the sort that you describe. At the same time, his statement, as a generalization, is mostly correct, more than yours is at least.

Many (most even) modern 32-bit CPUs already support 64-bit integers and floats, some have special 64-bit types (long long for instance). This is one of those details that kills novice C++ programers

Isnt that more language dependent? And in the same vein, long long int is a C data type, not a C++ one. There's a bunch of other gotcha's with long long's which imho are best to avoid.
 
Many (most even) modern 32-bit CPUs already support 64-bit integers and floats, some have special 64-bit types (long long for instance). This is one of those details that kills novice C++ programers :)
I looked this up, and the fact is that the 32 bit x86 architecture does not support 64 bit registers. It is only possible to use 64 bit types only be splitting the integer into multiple registers, and using multiple instructions to do arithmetic.

Isnt that more language dependent? And in the same vein, long long int is a C data type, not a C++ one. There's a bunch of other gotcha's with long long's which imho are best to avoid.
EDIT:
You want both. 64 bit registers, and a language that has a 64 bit integer type. But both C and C++ qualify. Long long is only made standard by C99 and will be in C++0x, but 64 bit integer support has been present on most windows compilers for a while, whether as long long, int64, or something similar.

But I don't see any reason why Civ V would need 64 bit integers. If anything, it may be an optimization to use 16 bit integers in some places.
 
Actually he's right to quite a high degree. Its pretty widely known that for the majority of games released in the last 4-5 years, you can get by with even the earliest C2D. There are exceptions to that, like SupCom, Crysis and some other games, but in general, the graphics card is whats holding back your fps.

For example, an upgrade from a 2ghz C2D to a 2.4ghz C2D would in most cases do little to your framerate. And upgrade from a GTS 250 to a GTX 275 (about the same difference in price) would make your framerate jump up considerably in a lot of games.

You have a point that a GPU upgrade is much unneeded for an old pc of the sort that you describe. At the same time, his statement, as a generalization, is mostly correct, more than yours is at least.

You better expressed what I was trying to say. Calling it a generalization is exactly right - there will be many exceptions but it's usually correct.

One point where CPU will make a difference in this game is the AI in-between turns in the late-game when there are thousands of units running around. Personally I always hated late game - not because of CPU time, but because of MY time wasted moving all those stacks of units around. I'm quite excited at the prospect of "one military unit per tile" because a late-game turn won't take 10 minutes. It would also mean fewer units to tax the CPU.
 
You fell victim yourself, but it's ok :)


Most consumer CPUs with 64-bit support use 48-bit addresses. This still gets you up to something like 16TB as your limit which AMD figured was enough at the time and Intel doesn't appear to have disagreed.


Many (most even) modern 32-bit CPUs already support 64-bit integers and floats, some have special 64-bit types (long long for instance). This is one of those details that kills novice C++ programers :)


Interesting... very wrong, but interesting. See how that fancy new GPU works in an outdated board with an old bus (like the early PCI-E hacks), a slow CPU and cheap RAM. Oh, then install your games, OS and everything else onto a single cheap hard drive and see if you can figure out where the bottleneck really is. Feel free to use an underpowerd PSU too, if you like living on the edge.

I know it sounds like an exageration but this is what you get when somebody who doesn't know better reads a game forum and decides the only upgrade they need is a new $500 video card.

:( A Mac Pro can only take 64GB Apple is cheating us
Then Again 8 cores dual threading
 
That's an OS restriction on physical memory. Virtual memory can probably be higher. Windows has similar limits.

Virtual memory is what your programs see. If your needs for memory exceed your real memory, your hard disk (or solid state drive!) is used in a suitable complicated matter to maximize speed.
 
Are you seriously suggesting that playing ciV is even an option on an Atom or P4 cpu? Get real. The Atom is not supposed to be used for gaming, and the P4 is ancient as hell. Maintaining legacy support for such ageing systems is crippling modern gaming. Christ, the gaming market is supposed to drive the hardware market. If you want to play a game released in 2010, you should have decent hardware.

I know a Pentium 4 is sufficient to play Civ4, and it probably will do okay (assuming it's not an early Pentium 4) for Civ5, too. At Atom also will probably be able to play Civ5. Not as fast as a Core i5, of course, but they should be able to handle it.

And really, once you get below the minimum theshold to make the graphics reasonably smooth, which shouldn't be very high, the only difference is in turn time.

Like I said, for Civ 5 Firaxis will not be making it 64-bit only. All those of you who are going "Oh my god, but I only have XP/Vista/7 x86 so I wont be able to play it!!!!11!one1!" are freaking out over nothing. If Firaxis makes it 64-bit compatible, there will still be a 32-bit version. Its just that instead of shipping a single executable file, they'll have two. One for x86 and one for x64.

As for where it will speed up: mainly with map size. Allowing the game to address more than 2GB of RAM will allow huge maps to remain fast and responsive even well into the late game. Depending on the compiler used, the game may also be faster for virtue of the 64-bit instruction set.

Good post.

I don't think Firaxis should support XP at all, it's a ancient OS from 2001, supporting this would limited their possibilities.
If you want to stick with a ancient OS like that you should stick to a ancient game as well.

Well, according to Amazon, Civ5 will run on XP. It's not quite as good as official, but I suspect Amazon checked before they listed it to avoid having to refund a bunch of sales.

Well, this is where the Mac users cry out in pain and frustration. All current machines are 64 bit, all current machines are multicore, and Snow Leopard goes out of its way (so I am told by people who can code "Hello, world" without a handbook) to make parallel programming easy. But Firaxis continues to pretend that the world is made of Windows users only ...

Oh well. StarCraft 2 will probably be out first, in both Mac and PC versions.

It's where most of the money is. In the capitalist world, you do have to pay some attention to money. And while they could use more cross-platform APIs, their developers may not be versed in those, and training them costs time and thus money.

The CPU has very little performance impact on games nowadays. The real bottleneck is (and has been for years) the video card.

Depends on the game. On huge Civ maps, CPU generally matters a lot more than GPU, once you meet a minimal GPU threshold.

:( A Mac Pro can only take 64GB Apple is cheating us
Then Again 8 cores dual threading

I don't know about Apple, but at least with Windows, Microsoft only certifies Windows for as much memory as they can actually test with. That may explain any stated upper limit on OSX. For the MacPro, the issue is that the chipset itself can only support 64GB - a limit you'll encounter on any chipset.
 
I don't know about Apple, but at least with Windows, Microsoft only certifies Windows for as much memory as they can actually test with. That may explain any stated upper limit on OSX. For the MacPro, the issue is that the chipset itself can only support 64GB - a limit you'll encounter on any chipset.
Windows server can handle 2 TB of physical RAM. I sincerely doubt they test that.
 
I can't imagine they will not support multi-core processors.

Support is not an issue. Utilization is. Just how many games do you know of now that take complete advantage of even a dual core?
 
Support is not an issue. Utilization is. Just how many games do you know of now that take complete advantage of even a dual core?

L4D1 and L4D2 definitely do. Civ IV definitely doesn't. As somebody said here, I would pay money for a multicore version -- especially because Civ V seems so different that I'll probably continue to play the older version.
 
L4D1 and L4D2 definitely do. Civ IV definitely doesn't. As somebody said here, I would pay money for a multicore version -- especially because Civ V seems so different that I'll probably continue to play the older version.

so, 2 out of...infinity?
 
You have a point that a GPU upgrade is much unneeded for an old pc of the sort that you describe. At the same time, his statement, as a generalization, is mostly correct, more than yours is at least.
Except that we're talking about Civ5 here, not Call of Duty or one of the multitude of fast pased action games with a high focus on eye candy. You can't cheat here and simply turn off the AI for units that aren't being rendered like you can in an FPS game. In general, a TBS game will also be working with substantially more data than an action game. For TBS games specifically, what is worse, 24fps animations (instead of 60+) or 1 minutes pauses between turns (instead of 30 seconds or less). For fun, you can look at some other games that, despite being played like an FPS, benefit greatly from CPU and memory upgrades, the quickest examples I can think of off the top of my head is Morrowind & Oblivion, both of which saw a huge benefit from faster CPUs.

You know, you don't have to speculate, chances are your bios supports some degree of overclocking and if it does that you can just as easily underclock so go ahead and slow down your CPU and see for yourself what happens without having to believe what anybody on the internet says :)

I looked this up, and the fact is that the 32 bit x86 architecture does not support 32 bit registers. It is only possible to use 64 bit types only be splitting the integer into multiple registers, and using multiple instructions to do arithmetic.
That was in response to his statement about 64-bit letting you work with bigger numbers, not about being able to access 64-bit registers which only changes HOW you work with those bigger numbers, not whether or not you can.
 
Except that we're talking about Civ5 here, not Call of Duty or one of the multitude of fast pased action games with a high focus on eye candy. You can't cheat here and simply turn off the AI for units that aren't being rendered like you can in an FPS game. In general, a TBS game will also be working with substantially more data than an action game. For TBS games specifically, what is worse, 24fps animations (instead of 60+) or 1 minutes pauses between turns (instead of 30 seconds or less). For fun, you can look at some other games that, despite being played like an FPS, benefit greatly from CPU and memory upgrades, the quickest examples I can think of off the top of my head is Morrowind & Oblivion, both of which saw a huge benefit from faster CPUs.
While you are correct that Civ 5 and the like can benefit from a faster CPU -- I never disputed that fact -- I did mention that in general a faster GPU does more good for your fps than a faster CPU. This does not hold true for all games, but in the vast majority of circumstances it does apply.

A little better reading comprehension please.
 
I would like to come back to the topic.

I assume that certain things can be taken as granted:
Civ5 will be executable under XP 32 bit (may be that a SP will be mandatory, but XP will not be left behind)
Civ5 will not require a multi-core processor.

Nevertheless, I would like to have support for the next evolutionary steps in terms of hard- and software.
As far as software is concerned, I would like to have Civ5 support as much memory as ever possible. We know from many modifications of Civ4 that memory is the bottle-neck (MAF's).
We may assume based on our experience with the former Civ-versions that modifications of map size, number and type of units and improvements and so on will be just around the corner.
All of this requires mainly one thing: memory and access to it.

Second, even Civ4 runs on multi-core processors. It utilizes one thread of one core to almost 100 per cent, while some other threads are busy with background programs (OS and whatever) - the rest of the processor than is just idle.
I would like Civ5 to be programmed in such a way that certain "general" values are calculated somewhere by a second/third/fourth core (say, the value of a certain ressource or possible trade route connections).
In general, I want the "inter-turns" especially on huge (and modified gigantic) maps to be processed in a much quicker way.
 
Well we know what threading library Civ V uses, so it seems they put at least some effort into multi core benefits. There is no way to say how good of a job they did parallelizing the application until release.
 
Most consumer CPUs with 64-bit support use 48-bit addresses. This still gets you up to something like 16TB as your limit which AMD figured was enough at the time and Intel doesn't appear to have disagreed.

Many (most even) modern 32-bit CPUs already support 64-bit integers and floats, some have special 64-bit types (long long for instance). This is one of those details that kills novice C++ programers :)
C++ is what kills most novice C++ programmers :rolleyes:

I looked this up, and the fact is that the 32 bit x86 architecture does not support 32 bit registers. It is only possible to use 64 bit types only be splitting the integer into multiple registers, and using multiple instructions to do arithmetic.
dude, you should stop taking medication! :D

on msvc++ 8 express edition:
the following code:
Code:
int i = 0;
++i;

will generate the following asm code:
Code:
; 85   : 	int i = 0;

	mov	DWORD PTR _i$[ebp], 0

; 86   : 	++i;

	mov	eax, DWORD PTR _i$[ebp]
	add	eax, 1
	mov	DWORD PTR _i$[ebp], eax
the eax and ebp 32bit registers. they do split into, for eax,
high 16bits and low 16bits called ax: ax splits into high 8bit ah and low 8bit al registers.

EDIT:
You want both. 64 bit registers, and a language that has a 64 bit integer type. But both C and C++ qualify. Long long is only made standard by C99 and will be in C++0x, but 64 bit integer support has been present on most windows compilers for a while, whether as long long, int64, or something similar.

But I don't see any reason why Civ V would need 64 bit integers. If anything, it may be an optimization to use 16 bit integers in some places.
my box is a P4 3Ghz, 1gb DDR ram, GeForce 7600GT. bought it all used two and a half years ago for about 8k rubles or $350.

if civ5 will not run on my hardware, i would be pretty much screwed :D

and a vaguely related topic:

on msvc++ 8 express edition:

cout << sizeof(char) << endl; // -> 1
cout << sizeof(short) << endl; // -> 2
cout << sizeof(int) << endl; // -> 4
cout << sizeof(long) << endl; // -> 4 (!!)
cout << sizeof(long long) << endl; // -> 8 internally "long long" is referenced as __int64

too bad u_int32_t, int16_t, etc. are not part of the C++ Standard.

as to 64bits in general, the biggest advantage to moving to 64bits is the 4gb memory limitation. however for that, without careful data typing, the devs will pay by having all their data use 2x the memory. imho not really worth it, considering that the number of any entities in civ rarely exceeds 16bit (65536).

as to multi-core multi-thread thing: it's really complicated and bug-prone. definitely not worth it in the client code. the server code will benefit from the multi-threading thing. for example moving pathfinding into it's own thread on a separate core.
 
dude, you should stop taking medication! :D

on msvc++ 8 express edition:
the following code:
Code:
int i = 0;
++i;

will generate the following asm code:
Code:
; 85   : 	int i = 0;

	mov	DWORD PTR _i$[ebp], 0

; 86   : 	++i;

	mov	eax, DWORD PTR _i$[ebp]
	add	eax, 1
	mov	DWORD PTR _i$[ebp], eax
the eax and ebp 32bit registers. they do split into, for eax,
high 16bits and low 16bits called ax: ax splits into high 8bit ah and low 8bit al registers.
I meant 64 bit registers. I really should proofread my posts better.

on msvc++ 8 express edition:

cout << sizeof(char) << endl; // -> 1
cout << sizeof(short) << endl; // -> 2
cout << sizeof(int) << endl; // -> 4
cout << sizeof(long) << endl; // -> 4 (!!)
cout << sizeof(long long) << endl; // -> 8 internally "long long" is referenced as __int64
Yep that's typical. Use int for the general case, and long for when you know you need 32 bits, because int can be 16 bits on older systems, including embedded chips.

as to 64bits in general, the biggest advantage to moving to 64bits is the 4gb memory limitation. however for that, without careful data typing, the devs will pay by having all their data use 2x the memory. imho not really worth it, considering that the number of any entities in civ rarely exceeds 16bit (65536).
I dunno, maybe using 4GB will mean we can have big maps like in Civ II again, with the graphics detail of Civ IV.

as to multi-core multi-thread thing: it's really complicated and bug-prone. definitely not worth it in the client code. the server code will benefit from the multi-threading thing. for example moving pathfinding into it's own thread on a separate core.
Most gamers have multiple cores these days. If Civ is to be a top of the line immersive game, then it needs to take advantage of the power that modern computers offer. And that means good multithreading.

Civ 6 will be under even more pressure to do good threading, because the way things are looking, the number of cores per chip is expected to increase.
 
Top Bottom