Some people are good at making things. Others are good at breaking them. I guess I’m a breaker.
As some long time players know, we’ve been trying to find ways to reduce the memory foot print of Kumquat (the engine behind Elemental). It’s a non-trivial thing to do, especially when long ago when we were specing this we were thinking of the day of 64-bit gaming when the 2 gigabyte memory limit was no longer a concern.
2 Gigs
Now, a quick thing about that. No matter how much memory is on your computer, a PC game will only be able to see 2 gigabytes of it unless the game itself is 64-bit which, to my knowledge, there are no major games that fit that yet. This is something pretty high on our priority list for the future but with most people still running 32-bit Windows, we have to focus on the here and now.
Crazy Games
Anyway, I have a saved game that upon loading would instantly crash the game because it was on a crazy sized maps with crazy sized cities with crazy numbers of units. The challenge to the team was to find a way to make this work.
Most games work around this problem with unit limits. That’s why Sins of a Solar Empire and Starcraft 2 (to name two examples) have very definite numbers of units in the game. War of Magic has no such limit. There’s nothing stopping someone from creating tens of thousands of unique units.
Multithreaded
The Kumquat engine is highly multithreaded. Now, what does that mean? It means that if you have multiple cores, execution of the game will occur on multiple cores. The AI has its own thread. The graphics engine has some threads the main game has a thread, the music has a thread and so on.
It’s the reason why, even on a relatively low end system, you can zoom out and see the world and then zoom in and see individual people living out their lives in one smooth, fluid motion. It’s a pretty impressive technical feat imo. But it comes at a cost – memory. The easiest, fastest way to implement this ability was to give each unit its own instance so that it could be threaded. That doesn’t mean each unit is its own thread, that would create a different set of problems. It’s a bit more complicated than that (ok, it’s a lot more complicated than that). But what it means is that the engine can choose to put different groups of units into their own thread in order to make sure everything remains smooth. But it means doubling up on memory – or tripling or quadrupling and so on.
Now, this isn’t something that was a mystery to us. We knew about this. The problem was, how do we have our cake and eat it. The solution basically boiled down to months of work to write a different system to do this. So for the past few months, that has been what Codecritter and the gang have been trying to do. Now, in v1.19, some people people have reported a performance drop so that’s being addressed presently as well.
But the good news is that, in theory, the next beta of v1.2 (v1.19c? d?) should largely eliminate the memory issue for most people.
Far Reaching effects
Most people don’t connect gameplay limitations to memory. But there’s a definite connection. Because when you’re fighting a memory limit, it greatly limits what you can add to the world. You end up having to bland things out because, frankly, adding more “stuff” becomes very problematic. Most people don’t make these connections (if you read forums they think the designers or developers are just oblivious or didn’t “see” some issue). But that is the challenge of designing a game – any game – on any platform is making guesses as to how much of a design can fit in. That’s another reason why sequels are so tempting. You already know the scope.
The bottom line is that it’s good news for War of Magic and great news for Fallen Enchantress.
No, they are able to simulate the events in the game in their head.
I was happy once, then I read this.
Naw thats called pretend time..
Depends on how it is done. If you are doing puedo-random number generation for the results, then you are playing a video game in your head.
Is it possible to use video card memory for storage as well?
I have like 30,000 Legos. Does that work?
Some of the memory issues seem to be coming from the eventmanager on the right hand, seems that if you dont close the events and leave them in opened state (in combination with auto turn option) and next -> next -> next your turns it seems to create the dreaded OOM crashes around 200 turns for me (winxp-32bits-2GB).
I run 64 bit pro and the game runs like a dog, basically don't play it anymore because how slow it is. What a joke. Unless you reduce the footprint, no matter how great you think the game will be, we can't even enjoy it on relatively high end machines.
Crysis has a 64-bit executable that comes with the game and the editor itself can ONLY be run on a 64-bit OS. It looks like Crysis 2 will follow this pattern. The Source engine was likewise released in 64-bit shortly before HL2:Ep1's release and you can now run any HL2 game, even Lost Coast, in 64-bit.
When I started playing computer games, one had 640 kB of RAM and I had a 'big' hard drive of 20 megs all running at 4.77 MHz and in wonderful 4 colour CGA. Obviously, this imposed severe limits on what game designers could do (but they were remarkably clever at at working within those constraints). As pc's evolved, but DOS didn't as quickly, one had to do very strange things with autoexec.bat and config.sys to fool your PC into using that 'upper RAM', which started at a whole extra 360 k then became 1 Meg or two, or three. Now I run a system with twin dual core processors running at 3.72 GHz, twin 1 GHz video cards, a physics co-processor, 8 Gigs of Ram, 64 bit OS, etc, etc. It stuns me that this still imposes limits on game designers (but as my sons are programmers and graphic artists in game design, I am aware that they do).
Still, we do appreciate your efforts at doing the most with the 'little' you have to work with. Maybe you could go back to CGA, that would free up a lot of space.
Oh man I remember good old green and black monochrome. Those were the days!
My computer history didn't go back quite that far, my first real computer was an Amiga. And it was amazingly advanced for its time (compared to PCs and consoles around then). However they just didn't know how to market it well (or ran out of money for marketing, one or the other).
Best regards,Steven.
I sue this to get around the 2gb limit since I have 8gbs in my machine currently.
http://www.techpowerup.com/forums/showthread.php?t=112556
pff Crysis was a optimization trainwreck
"Still, we do appreciate your efforts at doing the most with the 'little' you have to work with. Maybe you could go back to CGA, that would free up a lot of space."
VGA graphics with a color palete is simply the best. Think about all the advantage, you can change the color of a sprite in real time, only by changing the color palette. Color palette animation for waterfalls will save an enormous amount of processing power.
I wondered why they never made a more powerful video mode that use color palette. Like Having a larger palette, like 1024 or 4096 color, with better resolution would have simply been awesome. Thay could have added hardware translucency like they did on the SNES since you cannot have translucent effects in palette modes.
Thanks for the link. I will give this a shot. With the latest version of Elemental, it doesn't take long at all for me to run out of memory.
A similar effect can be achieved with pixel/fragment shaders.
Large Address Aware
what? I don't understand this. But, more memory (usually) --> better running of software?
The idea is that software does not place every thing in memory, it swap to disk. So the less memory you have, the more it swamp on the disk and the slower is the game. So more memory is usually faster.
One of the things that eats up a ton of memory are the custom generated player cards that everyone has. That's something that I really didn't think of as being an issue but when you have thousands of units, it's a big deal (even though most of them would share the same one).
The custom cards I wouldn't mind seeing them axed or severely downscaled if they are a cause of memory problems.
You mean the little card that shows up at the bottom right corner of the screen? I would agree to axe that and add more useful info to the character screen. If if you don't 'know' the character (they are neutral or hostile) you oughtn't really know much about them, except possibly their overall strength (level or combat rating or something) compared to the selected unit. Maybe.
Is there some other way?
There are many great features available to you once you register, including:
Sign in or Create Account