This one has been asked for quite a few times, but not the last year or two so it's time for another one.
Like the title says please set this flag to try reduce the out of memory stuff.
In the past this might have been questionable since to many people were still using less than 4GB RAM.
But I think we've passed the point were possible issues for those machines get outweighed by the constant crashes for everyone else with CO on its highest graphic settings.
Yeah, I agree with this suggestion, it will greatly help with memory management, specially for people having crashes on content with numerous people playing, I think most people have 8 GB RAM nowadays and the game has measures to use less memory if required, so that should also help people with less memory amount.
The memory leak is still a problem for some users of the game, there are ways to reduce the amount of memory used by the game, but it's impossible to fix the memory leak completely, so I think this could greatly improve things for everyone using the game.
EDIT: An explanation of the flag, for anyone interested.
This one has been asked for quite a few times, but not the last year or two so it's time for another one.
Like the title says please set this flag to try reduce the out of memory stuff.
Problem is that making a program large address aware isn't just a flag. It's recompiling with 64 bit pointers. Which is very simple if everything is coded properly and you have 64 bit versions of all your libraries, but is impossible if you don't have 64 bit versions of libraries and can be a giant hassle if you're storing binary structures or using certain other bad coding practices (which, despite being bad, are historically very common).
I will lay odds that CO is doing something that makes converting to 64 bit hard to impossible, because otherwise it would have been done already.
For reference, I have helped with converting a legacy application (Unix, not PC) to 64 bit. It was probably about a programmer-year of total work and related bugs kept popping up for a couple of years.
Problem is that making a program large address aware isn't just a flag. It's recompiling with 64 bit pointers. Which is very simple if everything is coded properly and you have 64 bit versions of all your libraries, but is impossible if you don't have 64 bit versions of libraries and can be a giant hassle if you're storing binary structures or using certain other bad coding practices (which, despite being bad, are historically very common).
I will lay odds that CO is doing something that makes converting to 64 bit hard to impossible, because otherwise it would have been done already.
For reference, I have helped with converting a legacy application (Unix, not PC) to 64 bit. It was probably about a programmer-year of total work and related bugs kept popping up for a couple of years.
Well I am not any expert in programming so I don't really understand the need for 64bit pointers for LAA. A 32bit address space can already hold 4GB but any single application is limited to 2GB. From what I understand the LAA thing just lets the application use that full 32bit address space in stead of splitting it in half with windows. Of course Windows will need memory for its own, which is why this only works on a 64bit Windows and can cause issues on computers with less than 4GB RAM.
I was not asking for a full 64bit conversion for CO, that would be a bit of an excessive request.
I remember doing this with Elder Scrolls Oblivion and it seemed to have beneficial effects there. I'm wondering if we set the flag ourselves, would that be bannable?
I remember doing this with Elder Scrolls Oblivion and it seemed to have beneficial effects there. I'm wondering if we set the flag ourselves, would that be bannable?
Probably yes. And CO does version checks with a checksum of its executable. That checksum would change if the LAA flag was set, so the server would say "nope, wrong version".
I also learned about this flag from messing with Oblivion. When using higher resolution textures, they were showing as solid black textures because the game ran out of memory.
i've changed the flag many times with no ill effects...it just doesn't stick, because every time a new patch comes in, the exe changes and wipes out the flag
Unless you have a way to bypass the launcher, the launcher will just detect the wrong checksum (version) and replace it with the correct non-LAA executable.
The game's nearly a decade old. It could use any modernization/efficiency tweaks it can. I don't know if the dev team's capable of it, though (could be wrong, from what I'm hearing here and looking up it seems pretty rudimentary.)
The most common RAM configuration is 8GB today, but 16GB is also exceedingly common, both of these configurations together accounting for about 60% of steam gaming users. Computers around the launch time of Champions Online, at 2009, were more accustomed to using at best 4GB ram, but the amount could be as low as 512MB in some cases. 4GB configurations are still pretty common, even today, accounting for 10% of steam users.
If you use /showmem1 to track how CO utilizes memory you will rarely ever see it exceed 1 GB. By the time the memory usage nears 1.3ish GB is actually usually when your risk of crashing maximizes. This general principle of memory growth has applied both to system memory, as well as GPU memory.
Windows 10 users account for an overwhelming number of PC gamers, with the Steam Survey displaying 60% of users on it. I bring this up because some people who've tried playing this game on Windows 10 still get bugs where not all the visual effects are enabled for graphics settings. And this is using some hefty damn cards like GTX 770s or GTX1080s ffs.
People say 'oh it works for me' but seriously. On every Win10 system I've tried installing and playing this game on (sometimes completely fresh) this symptom has happened sporadically. Like, it shows up after starting the game up more than once and then keeps recurring constantly. Unacceptable. The game looks awful with low lighting effects and water and stuff.
CO was built upon DX9, but it did have a DX11 beta adaption created for it (which actually can bypass some of the graphics setting restrictions of the above point but then causes black triangles to start appearing all over the environment, also not great.) Steam survey shows that about 99.1% of users have completely bypassed DX9 by now (if Other is meant to refer to people running really old DX versions...?) If we narrow this down even further to people who are DX12 capable, that's 89% of the steam database. Take that with a grain of salt, though, since only Windows 10 can use DX12 afaik.
To parse that down more narrowly what this means is:
Nobody, not even toaster users with 4GB, are at risk of CO eating all your RAM at this point because it's designed to work with even less than that and usually declares itself unsafe by the time it reaches 2GB. large address aware should absolutely be implemented as an option.
Windows 10 compatability needs to become a priority. Especially if you want new players, you don't want your first impression of the graphics to come off as even older than the game actually is.
Finishing and/or fixing the DX11 bugs is also high on the list, as that'd be a quick way to fix the above issue I'm pretty sure. The texture bug that the DX11 mode has also might even tie into memory usage...
My additional two cents: What we’re talking about here is modernizing Cryptic Engine, and should apply equally to CO, STO, NW, and MtG. Launching MtG with a 32-bit engine that starts backing down at 2GB would be downright embarrassing today, let alone whatever future date it becomes playable, so I hope this is work already in progress.
Choose your enemies carefully, because they will define you / Make them interesting, because in some ways they will mind you
They're not there in the beginning, but when your story ends / Gonna last with you longer than your friends
One is windows limiting any single 32bit application to 2GB RAM, unless the executable has a LAA flag at which point it allows 4GB RAM. This flag is what I was asking about. It can be set by anyone in like 5 seconds, but since it changes the checksum of the exe file you can't actually play CO with it. I think this would be a fairly trivial change for cryptic. Of course I have no idea if it will actually help, CO's engine might have memory management issues that make it choke independent of any LAA stuff.
The other thing is doing structural changes to CO's engine, to modernize the whole thing. That could bring far bigger gains than just Windows allowing 4GB RAM, but of course also takes far more time and effort. So while I also hope they are working on that, I would like them to consider setting the LAA flag on CO's executable in the meantime.
Comments
The memory leak is still a problem for some users of the game, there are ways to reduce the amount of memory used by the game, but it's impossible to fix the memory leak completely, so I think this could greatly improve things for everyone using the game.
EDIT: An explanation of the flag, for anyone interested.
https://helloacm.com/large-address-aware/
I will lay odds that CO is doing something that makes converting to 64 bit hard to impossible, because otherwise it would have been done already.
For reference, I have helped with converting a legacy application (Unix, not PC) to 64 bit. It was probably about a programmer-year of total work and related bugs kept popping up for a couple of years.
Epic Stronghold
Block timing explained
Well I am not any expert in programming so I don't really understand the need for 64bit pointers for LAA. A 32bit address space can already hold 4GB but any single application is limited to 2GB. From what I understand the LAA thing just lets the application use that full 32bit address space in stead of splitting it in half with windows. Of course Windows will need memory for its own, which is why this only works on a 64bit Windows and can cause issues on computers with less than 4GB RAM.
I was not asking for a full 64bit conversion for CO, that would be a bit of an excessive request.
My super cool CC build and how to use it.
Probably yes. And CO does version checks with a checksum of its executable. That checksum would change if the LAA flag was set, so the server would say "nope, wrong version".
I also learned about this flag from messing with Oblivion. When using higher resolution textures, they were showing as solid black textures because the game ran out of memory.
Just a few random stats using data collected by steam, and some other informal articles...
If you use /showmem1 to track how CO utilizes memory you will rarely ever see it exceed 1 GB. By the time the memory usage nears 1.3ish GB is actually usually when your risk of crashing maximizes. This general principle of memory growth has applied both to system memory, as well as GPU memory.
People say 'oh it works for me' but seriously. On every Win10 system I've tried installing and playing this game on (sometimes completely fresh) this symptom has happened sporadically. Like, it shows up after starting the game up more than once and then keeps recurring constantly. Unacceptable. The game looks awful with low lighting effects and water and stuff.
To parse that down more narrowly what this means is:
They're not there in the beginning, but when your story ends / Gonna last with you longer than your friends
One is windows limiting any single 32bit application to 2GB RAM, unless the executable has a LAA flag at which point it allows 4GB RAM. This flag is what I was asking about. It can be set by anyone in like 5 seconds, but since it changes the checksum of the exe file you can't actually play CO with it. I think this would be a fairly trivial change for cryptic. Of course I have no idea if it will actually help, CO's engine might have memory management issues that make it choke independent of any LAA stuff.
The other thing is doing structural changes to CO's engine, to modernize the whole thing. That could bring far bigger gains than just Windows allowing 4GB RAM, but of course also takes far more time and effort. So while I also hope they are working on that, I would like them to consider setting the LAA flag on CO's executable in the meantime.