You've heard this rant a million times, GTAIV was future proofed all reflections and shadows are scaled with the resolution. A stupid yet seemingly unfix-able problem that makes the game a mess. Playing a game in 1024x768 or lower is not acceptable. If I wanted to do that I would pull out my P2/P3 with its 32/64mb graphic card. From looking at GTAIV, it has a lot of new technology but nothing that should struggle to run on 8800's or even 8600's. Its that resolution scaling, im sure of it!.
There must be a way to correct this mess. Lets look at our checklist.
- Configs/Settings Profiles in game directory? /fail.
- Will R*'s patch will add more options in? /fail.
Not long ago I figured out you can run in windowed mode in 800x600 and then stretch the window larger and it gets around R*'s quality scaling that would increase the reflection maps.etc that would lag the game and make objects/textures disappear and horrid pop-ins. It made the game look good because you weren't dealing with such a low resolution and the game played extremely well.
I wanted to look into this and see if you can achieve the same thing without stretched the window manually every time.
After browsing the net, I noticed others used commandline.txt to set the size of their window, and some people have achieved resolutions over their memory limit without using -norestrictions and only using the resolution from the command lines. This instantly helped me find the answer I wanted.
How To Do It:
Now my theory was that, if you have a memory limit on, and you enter a resolution in the command line that is unable to be achieved with that memory limit, it will still put you in that resolution, but the quality scaling will not be implemented. Therefore no disappearing objects/textures, no long or noticeable pop-in's, and less/no lag.
The trick is implementing the higher resolutions with you preferred graphic settings, by limiting your memory to just barely include the options you want, and then you force the resolution.
1. Get rid of -nomemrestrict or any current commandlines you have. Run the game and let it die. When you run the game, go to the graphic options, turn your resolution to 800x600 or 1024x768 or whatever you want the reflection maps/resolution based quality to be at, I did 800x600 mainly because it looks simular to the rest and will give you the most performance. Use the rest of your memory budget in draw distance.etc.
2. If you cannot acheive the graphical settings you want with your currently memory budget do this next step. If you can, then you can skip this step.
make commandline.txt or append -availablevidmem (multiplier):
This command works like this, say I have 256mb vram. -availablevidmem 2.0 would make it say I have 512mb vram, its a multiplier.
So for getting our settings as we want it lets make a budget of 512mb vram, so -availablevidmem 2.0.
Open GTAIV, set resolution in the ingame settings to 800x600, set rest of the options to whatever you want (be reasonable).
Now continue to the next step.
3. Now you have your game set as you want it, but in a f-ugly resoltion, but we will fix that. Next step is to trick GTAIV, even people with 512mb graphic cards or even 1gb, this is even useful for them.
One of my buddies with a 8800GTX loves this tweak because it allows him to get much higher frames with very little to no graphical loss.
So now lets say all our desired settings ingame @ 800x600, use 650Mb. Ok. But say were now using a 1GB card so it says 650/1024Mb. This is a problem now because if we force -height 1080 -width 1920. We will end up with our ingame options changing to 1920x1080 giving us way more slowdowns because R* starts using that dam scaling reflection maps.etc with resolution.
So what we need to do now is limit the memory GTAIV sees to exactly the amount to run our game in 800x600 (or whatever quality refection maps.etc you want) with our desired settings.
So lets go back to our dilemma, we have a 1GB graphic card and the game only takes up 650mb with the settings we want in 800x600.
We can figure this out by doing some simple math.
1GB Card (650mb desired settings): 650/1024 = 0.635 (its 0.634 but give a tiny bit extra, just like a couple megabytes).
So you would use -availablevidmem 0.635 that would make the game detect you only have 650mb ram which barely fits the features you want in 800x600.
So now once we have figured that out your commandline.txt or your shortcut appending should look like this (depending on what resolution you want/your vidmem.etc):
-height 1080 -width 1920 -availablevidmem 0.65
and maybe you add stuff like (-framelimit, or -noblank or whatever).
*BUT DO NOT USE ANY UN-RESTRICTION (this includes the nomemrestrict and norestrictions or anything like that)!
4. Now when we start up our game. We will be in our desired resolution, and when we look in the game options it will say 800x600, even though we are in a way higher resolution and all your settings will be how you want them and your memory budget will be exactly the right amount or similar like 650/650 or 742/746.etc
Funny thing here you wont be able to go back cuz it will detect your memory budget is to low and the game is forcing a higher res, so you might not be able to leave the options screen now, so alt tab, and close the game. If all your settings looked right and it said 800x600 but was clearly in a higher res. Then you did everything right, if not, go retry.
5. Now restart the game and play. Yay, good fps, cheated GTAIV to not up the reflection quality with the resolution.
Additional Speed: If you happen to be running Vista x86/x64 and you have a directx10 capable graphic card. Do what elecg2 figured out. I tried creating empty/easy HLSL shaders and putting them in GTAIV to get rid of shadows and stuff but that didn't work.
However by doing what elecg2 tried, I got a huge performance increase,
Go to GTAIV folder, go into common, then shaders.
Backup everything in there <- !!!
Then copy the contents of win32_30_atidx10, and paste them into win32_30_nv8. Or just rename the folders, whatever makes you happy.
That gave me a significant performance boost and I have no graphical problems or abnormalities. Try it, if it causes you problems or decreased performance then just put it back to normal. With these steps you can get your game running beautifully in no time, or at least better than before.
*Ill be adding screen shots tonight.
Please Sticky This, I'm tired of people complaining when the answer is right under their nose.
To do a test to actually see if you get any gain from this start your game with 800x600, rest settings how you want them, but start the game in windowed mode. Manually drag the window to your screen size. See if you have a performance increase there, if so. Then doing this big mess of text will help you achieve what you achieved there without having to start the game in windowed mode and manually resize it, thats all this thing does. If you don't get a gain from it then clearly this is no use to you. But it is use to a lot of people.
Now wheres my proof?
*Oh nice monkey, you showed us some screens but you have no proof!.
*Oh yes i do!.
Here the game is 800x600 in game options but tweaked to play at 1680x1050 (look at the highlights/sun reflection on the water):
Here is the game at 1680x1050 in game, no tweak (notice the waters highlights/sun reflection is not as stretched, higher res, because in the first screen we are cheating the reflections to not up with the res, also notice in the distance everything disappears):
And to keep things fair, in those water screens, the game was maxed, high textures, high render, full distance, full detail, hence the FPS remained 10 in both!.
I rather play the game in a higher res with no disappearing objects and no pop-ins with lower reflection maps, than the game in a high res with better reflection maps but everything disappears.
This tweak shmozzle does something!, so its not a placebo. I'm happily running the game 1280x800 with medium tex, hi rend, always in the 20s. So I honestly can care less if you believe me, the evidence is here that it will help someone and if you don't believe me then don't. Ill go enjoy my game while you can sit there and sob.
If your settings constantly reset, please use what ircmaster wrote:
If your graphics settings reset every time you start it up again just follow this quick fix:
(Note this is the Vista way, I'm not sure how to do it in XP)
1. Go into your C:\Users\YOURUSERNAME\AppData\Local\Rockstar Games\GTA IV\Settings folder
2. Delete everything that's in there
3. Start the game with your desired settings and settings shouldn't reset anymore
And I'm not lying or trying to ruin your game or anything. I got this off of the official GTA IV support website.
Btw, you know what pisses me off, R* could have added a single checkbox that says "Quality Resolution" and then you check it or uncheck it, checked it would up the reflections with the resolution unchecked it would just do what were doing by doing this whole frag feast of text. Lazy R* (do you wanna sell more games?). And a single check box would not make the options complicated!.