Fix For Stuttering In Unreal Engine 2 Games When Vsync+Crossfire Are Enabled

Posted: February 12th, 2012 | Author: | Filed under: Crossfire Scaling, Hardware, Tips/Tutorials
Tags: , , , , , , ,

I discovered this some months ago, when vsync and crossfire are enabled in old UE2 games, the combination will cause strange framerates and massive stuttering. So you should disable CF by disabling Catalyst AI, rename the game to ForceSingleGPU.exe, or make a profile in RadeonPro or the profiles feature in CCC (starting from Catalyst 12.1).

This seems to affect the standard UE2 games, not the heavily modified ones like Bioshock or Duke Nukem Forever. It does not matter if you’re enabling vsync with D3DOverrider, an in-game option, or the engine .ini file, it all results in the same stutter. I’m noticing it in Unreal Tournament 2004 for example.

Last Modified: April 27th, 2012

No Comments »

Unlocking BRINK’s Framerate In Singleplayer

Posted: August 15th, 2011 | Author: | Filed under: Software, Tips/Tutorials
Tags: , , , , , , ,

You may have noticed how awful Brink feels and looks in motion when playing the campaign or challenge modes, totally different from what your framerate counter displays. Here is how to get around that nonsense. The main idea is 1-you will run a local dedicated server, 2-you set what campaign or challenge to load, 3-you connect to it.

First, install the dedicated server in the tools section of Steam. While that’s downloading, go to the launch options of Brink in your games list and add ‘+set win_allowMultipleInstances 1‘ so that Brink’s executable can run more than once at the same time. (Otherwise you wind up having to launch the game first, then alt-tab to launch the server second.)

Once installed, check the ‘\Steam\steamapps\common\brink dedicated server‘ folder and you should see example .bat files. Edit an existing one, or copy into a new file, adjusting the server name and ports as you want them. Everytime you want to launch the server, just run the .bat file. Push the quit button or type in ‘quit’ in the console for the server to shutdown.

Now it’s time to tell the server what campaign and maps to load. Instead of memorizing server console commands or map names, I would make a .cfg file for every map of each campaign so that it’s very simple to quickly start playing on the mission that you left off in your campaign. Every .cfg file will look like this:

si_rules sdGameRulesCampaign
applyServerConfig Standard
campaign set campaign_#TEAMNAME#
si_playMode 1
si_onlineMode 2
si_needpass 1
g_password #YOURPASSWORD#
si_maxRank 4
si_botDifficulty #NUMBER#
net_serverAllowHijacking 0
spawnServer mp/#MAPNAME#.entities

Replace #TEXT# as necessary. You can have spaces in your password, quotes don’t seem to be needed (eg: ‘g_password hello world‘). Change the campaign team name to ‘resistance‘ or ‘security‘. To play the Agents of Change DLC maps, add ‘_dlc1‘ to the end of the campaign line (eg: ‘campaign set campaign_security_dlc1‘).

Bot Difficulty: any: -1, easy: 0, normal: 1, hard: 2

Resistance map names (in order of campaign): aqarium, seetow, terminal, resort, ccity, refuel, shipyard, reactor

Security map names (in order of campaign): aqarium, terminal, ccity, sectow, shipyard, reactor, resort, refuel

Agents of Change DLC map names (in order): lab, founders

Challenges: enable server hijacking then selecting a challenge as 2 player and public should join your server, or any other for that matter (source)

OR I think I managed to make a .cfg that works:

si_rules sdGameRulesChallenge
applyServerConfig ChallengesCoop#NUMBER#
campaign set campaign_challenges
si_playMode 1
si_onlineMode 2
si_needpass 1
g_password #YOURPASSWORD#
si_maxRank 4
net_serverAllowHijacking 0
spawnServer sp/challenge_#NUMBER#.entities

Set your coop player amount to a number between 2 and 4 (eg. ‘applyServerConfig ChallengesCoop2‘ for a 2-player game). Change your password just like a campaign server, and then change the challenge map number to the challenge you want: Be More Objective: 06, Parkour This: 05, Escort Duty: 01, Tower Defense: 03 (eg. to have a Parkour This challenge, the last line would be ‘spawnServer sp/challenge_05.entities‘)

So once you make your .cfg files (or use mine), place them in the ‘\Steam\steamapps\common\brink dedicated server\base‘ folder. Launch your server with your .bat file from earlier and type ‘exec security3‘ if you want to play the 3rd mission of the security campaign and your .cfg file for that mission is named security3.cfg. Then launch the game and go to Freeplay, search for LAN servers, and you should see your local server ready for you to join. If your router’s ports are open, you can have your friends join your server as well. There is a handy script to open and close the ports via UPnP, so that you don’t need to bother opening your router admin settings as long as UPnP is enabled.

Now you can play Brink the way it’s supposed to be! It may seem complicated, but once all this is set, you just exec the .cfg you want from the server console window, nice and simple.

Source for original .cfg file and discussion: Steam Forums
More information on some of the commands, or using additional ones: BrinkBase.de
You can also type commands in the console window and sometimes the values and what they mean will be displayed (eg. typing ‘si_botDifficulty‘ in the server console).

Last Modified: March 3rd, 2012

No Comments »

RailWorks Tram Test 2

Posted: January 17th, 2011 | Author: | Filed under: Media
Tags: , , , , , ,

Now that I’ve got the track rules working, it’s time to have proper overhead tram wires. Most trams around the world are just a single overhead wire, so here it is.

RailWorks Tram Test 1 – Track Rules
RailWorks Tram Test 2 – Overhead Wires
(this post)

Last Modified: August 4th, 2015

1 Comment »

RailWorks Tram Test 1

Posted: January 15th, 2011 | Author: | Filed under: Media
Tags: , , , , , ,

Why are there less than 5 known existing tram mods for Railworks? A couple aren’t even released. Maybe it’s because it’s so confusing to mod the game…

Well I’m hoping to get some sort of base working, maybe release it as a pack for others to create content with it. First, I’m trying to make a track with a small curve radius, attempting to mimic an existing track (Oxford Concrete Clean), though I couldn’t get anything to appear in the editor, even just a track rule. In this video, I ended up modifying the track rule for ‘MainLine’, but modifying existing game files is way too sloppy.

UPDATE: I got custom track rules working.

RailWorks Tram Test 1 – Track Rules (this post)
RailWorks Tram Test 2 – Overhead Wires

Last Modified: August 4th, 2015

No Comments »

Unreal Development Kit – It’s Alive!

Posted: January 5th, 2011 | Author: | Filed under: Media
Tags: , , , , , ,

I finally got a standalone UDK game working. I’ll make some kind of a tutorial, at least about the flash resolution buttons.

The main point was to get all of the custom stuff functional and out of the way. Now I can focus on content. Here are the ‘features’:

-standalone packaged installer
-custom splash screen
-custom intro movie
-custom menu background level with matinee camera loop
-custom menu in flash with resolution changer
-custom gametype in 3rd person
-custom map
-custom AO/post process chain
-custom sounds

Last Modified: August 4th, 2015

No Comments »

Making Unreal Engine 3 Games Their Smoothest

Posted: May 15th, 2010 | Author: | Filed under: Software, Tips/Tutorials
Tags: , , , , ,

UPDATE: On some newer UE3 games, enabling vsync either in-game or from the .ini files causes severe stuttering, particularly in crossfire. If you run into such a game, you need to use D3DOverrider to force triple buffering. I can confirm this on a 4870×2 and a 570m in UDK, Tribes Ascend, Blacklight, Monday Night Combat, Hawken, and probably some others. Single GPU or Crossfire, same type of low framerate and stutter caused by vsync without triple buffering. Otherwise, no problems with a lot of older games like Borderlands.

Quick tip for Unreal Engine: Fix the awful defaults. Mainly, set the smooth framerate option to match your refresh, enable vsync, and disable mouse smoothing.

Any movement or animation on any monitor screen is visually smoothest when it’s synchronized to the screen’s output, or refresh, rate. Vsync does just that. The Aero theme of Vista/7 looks nice and smooth when things are moving because it always has vsync enabled. Similarly, games should also have it enabled whenever possible. This even applies if you’re getting lower fps that’s not completely aligned to your refresh. For example in Crysis, I’ve seen it go around 35-45 fps, but looking really jerky until vsync is enabled.

Watch out for increased input lag, however. This is when you push a button or move your mouse, the action that should appear on screen gets delayed. Different engines handle this side effect better than others. Source engine appears to get almost unplayable with vsync enabled, unless you cap the game with fps_max (removed in Left 4 Dead and Left 4 Dead 2, so it’s a little more annoying). Unreal seems to be quite nice with vsync, especially since the engine can be set to render only up to your refresh to avoid the input lag seen in Left 4 Dead. Unreal also appears to have triple buffering built in, helping if your system cannot render as fast as your refresh: It won’t just jump straight down to half fps, but render as fast as it can with light ticking stutters.

Anyway, on with the Unreal tweaks. You’ll need the *Engine.ini and *Input.ini files for the game you’re adjusting. You’ll have to figure out where they’re located, but it’s usually either in MyDocuments or AppData. Here are a few:

Alien Breed 1 #MyDocs#\My Games\UnrealEngine3\AlienBreedEp1Game\Config\
Borderlands #MyDocs#\My Games\Borderlands\WillowGame\Config\
Homefront #MyDocs#\My Games\HOMEFRONT\GCGame\Config\
Mass Effect #MyDocs#\BioWare\Mass Effect\Config\
Medal of Honor #MyDocs#\EA Games\Medal of Honor\Config\
Mirror’s Edge #MyDocs#\EA Games\Mirror’s Edge\TdGame\Config\
Moonbase Alpha #MyDocs#\My Games\Moonbase Alpha\MoonBaseAlphaGame\Config\
Rock of Ages #MyDocs#\My Games\UnrealEngine3\BoulderGame\Config\
Sanctum #MyDocs#\My Games\Sanctum\SanctumGame\Config\
Section 8 #MyDocs#\My Games\Section8\S8Game\Config\
UT3 #MyDocs#\My Games\Unreal Tournament 3\UTGame\Config\

Under the Engine.ini, find the smooth framerate parameters. When set to false, I noticed lots of stuttering in Mirror’s Edge, so I always keep it on just as it is by default. I just put the min at 0. More importantly, fix the max since it’s always at 62 at default (why!), make it 60 or whatever your refresh rate is:

bSmoothFrameRate=TRUE
MinSmoothedFrameRate=0
MaxSmoothedFrameRate=60

Also find the vsync toggle if there is none in your in-game options, might as well do it now since you’re in the Engine.ini:

UseVsync=True (note the message at the top of this page)

Now go to the Input.ini. It seems that in Unreal Engine, when you’re fps starts dropping with mouse smoothing enabled (which is usually default), the mouse movement starts accelerating! This completely throws your aiming way off. Turn smoothing off and your movements should be the same on screen whether you’re 60, 40, 20, or any fps:

bEnableMouseSmoothing=false

Now your Unreal Engine based game is as smooth as it can be! Unless of course your system isn’t powerful enough to sustain 60/refresh framerates, but it’s still less jerky than if the image was tearing or your mouse control was changing speeds. Have fun!

Of course, this is all separate from any actual in-game options that raise or lower details. Even if you can’t stay at a constant 60 (or whatever your refresh is), these tweaks still apply to make it smoothest even at lower fps.

Last Modified: September 23rd, 2013

12 Comments »