Swat 4 is awesome game, great tactics, decent graphics and experience, but it's highly unoptimized.
I've been able to tweak few games to run to their maximum even on my older test pcs. I did the same with Swat 4, so here's a guide to help you optimize your copy of Swat 4 for best experience and even smoother gameplay.
Before we start, BACKUP ALL DATA THAT YOU ARE ABOUT TO EDIT.
We will edit files in \SWAT4\ContentExpansion\ and \SWAT4\Content\ folders.
Many players wonder and ask "what's that text thing you do?" "how to get that custom text? etc. What we talk about is Swat 4 keybinds.
Keybinds are supported in many MP games and they are useful when voice chat is not available or you simply need to say something on a quick.
To add keybinds to your Swat 4 TSS go to \SWAT4\ContentExpansion\System and find user.ini file then open it up.
Here, you will see lots of key configurations for your keys under [Engine.Input]
Scroll down to add custom keybinds to unused keys. You can add keybinds for both teamchat and global chat by specifying the needed command. Say will drop a keybind for global chat while TeamSay will drop it only for your team (blue or red)
You can literally add keybinds to any key.
Here are few examples that I made and use:
Left=TeamSay [C=FFFFFF][B]WITHIN 9 - 12 O'CLOCK RANGE / ON THE LEFT.
Up=TeamSay [C=FFFFFF][B]AT 12 O'CLOCK / STRAIGHT AHEAD
Right=TeamSay [C=FFFFFF][B]WITHIN 12 - 3 O'CLOCK RANGE / ON THE RIGHT
Down=TeamSay [C=FF9900][B]CONTACT IS ON THE MOVE
NumPad0=TeamSay [C=FFFFFF][B]IGNORE LAST MESSAGE
NumPad1=TeamSay [C=00FF00][B]I'M READY
NumPad2=TeamSay [C=FF0000][B]SUSPECT(S) SPOTTED
NumPad3=TeamSay [C=00FF00][B]CIVILIAN(S) SPOTTED
NumPad4=TeamSay [C=FFFFFF][B]DEPLOYING FLASHBANG
NumPad5=TeamSay [C=00CCFF][B]DEPLOYING GAS
NumPad6=TeamSay [C=FF9900][B]DEPLOYING STINGER
NumPad8=TeamSay [C=0033FF][B]COVER ME
NumPad9=TeamSay [C=FF0000][B]NEED BACKUP, NOW!
Those are just few basic examples. As you can see, I set mine to be dropped in team chat. To make them work, you will need to make EXACTLY same changes in [SwatGui.SwatInputReset] found in same user.ini file.
Keybinds also support any console command. That being said you can attach any console command to your keys and even combine few actions for one key.
Here are few examples that I made and use:
P=ToggleFlashlight | OnRelease ToggleFlashlight
i=Say [C=FFFFFF][B]Wait, FLUSHING CACHE. | flush | OnRelease Say [C=00FF00][B]Flushing complete, READY.
As you can see. P key will act as flashlight toggle, that you can use in game to either broadcast flashlight signals or pin-point an event silently. C will toggle crouch and help you manage your stances better. i will flush your filecache (we will discuss about this one later) on hold (make sure you hold it until done) and notify others when you are done flushing your cache, also, it will be broadcast in global chat.
There are many possibilities, be creative, and if you find unusual yet very useful ones, post them in comments for others to see.
Here are few color samples.
FF0000 - Red
00CCFF - Aqua Blue
FF9900 - Orage
00FF00 - Green
0033FF - Dark Blue
FFFFFF - White
To apply changes, save the user.ini file, to apply changes for each expansion/mod, you will have to edit each user.ini file separately.
Console commands (Credit: AST|
You can open the console simply by pressing a special key which is usually the key left to "1", like "^" or "~". All console commands are case-insensitive.
abortgame - Ends the current round.
flush - Flush all caches. Regenerates all lighting, 3D hardware textures, etc. Can be useful to reduce lag or to clear texture corruption due to 3D hardware driver bugs.
handsdown - Hides your weapon and hand from the 1st person view.
get - Gets the default value for a variable in a class. eg get swatgame.serversettings maxplayers
open - Opens a local map. Can be useful to open custom maps in Single Player. eg open sp-u273
reconnect - Reconnect to the current/previous server.
sad - Login as admin with specified password.
say - Broadcast a message to other players in the game.
set - Sets the specified property of the specified class with the specified value. eg set swatgame.serversettings maxplayers 5
set input - Set up keybinds in-game. It automatically writes to the User.ini file. eg set input u say hello
setres WxHxD - Set the resolution and color depth. eg setres 1024x768x32
shot - Take a screenshot and save it in the System directory with a consecutive name like Shot0001.bmp.
startgame - Makes all players ready.
stat all - Shows all stats.
stat fps - Shows frame time in milliseconds.
stat game - Shows game stats.
stat hardware - Shows interesting hardware stats.
stat render - Shows stats about rendering. Note especially the Staticmesh/Triangles count.
stat net - Shows network performance statistics including ping, packet loss, bytes/second.
stat none - Turns off the display of any stats.
teamsay - Broadcast a message to your teammates.
quit/exit - Exit the game.
Executable commands (Via shortcuts) (Credit: AST|
To use command line parameters, right click on the shortcut that you usually use to start Swat 4 or TSS, choose properties, and add the commands you would like to have to the target field, right after the path to the executable, e.g.
"C:\Program Files\Sierra\SWAT 4\ContentExpansion\System\Swat4X.exe" -nointro -windowed
-log - Runs with the log window initially visible. The log file can always be found from SWAT 4\Content(Expansion)\System\Swat4(X).log
-nointro - Skip the intro movies and ads (very convenient).
-windowed - The game starts in windowed mode.
Game cache, or caching size.
This one is also associated with the above mentioned flushing. It's basically amount of RAM memory allocated for the game to use and load objects, thus reducing stutter and lag.
Cache settings depend on amount of ram you have installed, by default, cache value is set to 32 mb.
Go to \SWAT4\ContentExpansion\System and open Swat4X.ini file.
Under [Engine.GameEngine] you can find CacheSizeMegs=32
Change this to a value that will best fit ram amount available from the list bellow.
For 256 MB of RAM, use CacheSizeMegs=32
For 512 MB of RAM, use CacheSizeMegs=64
For 1024 MB of RAM, use CacheSizeMegs=128 or 256
For more than 1024 MB of RAM, use CacheSizeMegs=256 to 350 or even 400
:idea: A small update on this one. If you try values of 2, 4 or 6 you may actually get a 50%+ performance boost, specially if you have newer version of RAM installed (DDR3+ preferred) This in addition speeds up loading times.
Please note that increasing this value will also slow down your level loading time since game engine will now load more data.
To apply changes, save the edited file.
TIP: Alt tabbing is known to flush graphic card RAM cache (that is not flushed with flush command) what this means is that if you Alt Tab your game, your graphic card will dump all cache it loaded from your RAM memory, to prevent this from happening simply don't Alt Tab too often as it will re-load objects all over and over. However, if you experience unusual lag and flushing cache doesn't help, Alt tabbing will actually resolve this and even fix sound bug (muted sound) if you ever encounter it.
Swat 4 supports some features that are not used in-game, but they are accessible once you edit them. Some of them are EAX and 3D sound.
By default, Swat 4 uses stereo output. You can change this by going to \SWAT4\ContentExpansion\System opening Swat4x.ini and editing few parameters under [ALAudio.ALAudioSubsystem]
Once you edit these to true, EAX will add effects such as pitch, some cheap echo and enhance volume control, however, using of 3D sound is known to cause trouble so I don't recommend it as it's buggy. If you are to tweak anything related to this, EAX is ok.
The above mentioned tweaks are few most known and well tested ones. However, there are a lot more for you to try out, but at your very own risk.
Level voice intro.
When you play online and a level loads up, a dispatch will by default announce location and entry. This is unnecessary as it will slow you down. If you haven't tweaked this go to \SWAT4\Content\Sounds\ScriptedVO and either backup, delete or rename every Load_dis labeled file for each level. This will disable the level voice intro.
Many other tweaks.
Tweaks for Swat4x.ini and Swat4.ini:
Language=int (allows you to use symbols in chat and your nickname)
SpeechLanguage=int (allows you to use symbols in chat)
CacheSizeMegs=XXX (where XXX is numeric value, increases amount of ram used for level loadup to reduce stutter and lag)
UseSound=True (if you are short on processing power and RAM memory, turning this to False will disable sound completely and save you resources)
WindowedViewportX=1024 (windowed mode resolution)
WindowedViewportY=768 (windowed mode resolution)
FullscreenViewportX=1024 (fullscreen mode resolution)
FullscreenViewportY=768 (fullscreen mode resolution)
UseJoystick=False (joystick setting, disable to save resources)
NoLighting=False (set to False to enable lightning in game to True to disable and save resources)
MinDesiredFrameRate=35.000000 (set to values higher than 35 if you have a powerful PC)
Decals=True (set to False to disable decals such as wall cracks, blood stains and other temporary decals, this will in return save you some memory and reduce lag)
NoDynamicLights=False (Set to True to disable dynamic animated lights, this can drastically improve frame rate but decrease gaming quality)
TextureDetailInterface=Normal (UI texture detail, Low, Normal, High)
TextureDetailTerrain=Normal (Terrain texture detail, Low, Normal, High)
TextureDetailWeaponSkin=Normal (Weapons texture detail, Low, Normal, High)
TextureDetailPlayerSkin=Normal (Players and AI skin texture detail, Low, Normal, High)
TextureDetailWorld=Normal (World texture detail, Low, Normal, High)
TextureDetailRenderMap=Normal (Texture density detail, Low, Normal, High)
TextureDetailLightmap=Normal (Bumpmap and light texture detail, Low, Normal, High)
NoFractalAnim=False (Set to True to disable fracturing animations such as broken bottle or wood)
ScaleHUDX=0.0 (If you are using high resolution to run the game, but want bigger UI, use this setting to scale your HUD)
ConfiguredInternetSpeed=2600 (what is your internet speed? This setting should be used to optimize your ping, although values used are unknown whether they are bytes, KBs or MBs, default setting is 2600)
ConfiguredLanSpeed=20000 (same as for internet, except this is for LAN)
UseEAX=False (Set to True to enable EAX)
Use3DSound=False (Set to True to enable 3D sound, I don't recommend this)
Channels=64 (This setting helps if you have older PC, set 32 or even 16 to increase fps but decrease audio experience, channeels values are to determine amount of sound clips loaded and played at same time)
StreamingSoundFudgeFactor=0.375000 (determines radius of sounds loaded/heard, I don't recommend tweaking this setting as it may cause errors)
DisablePitch=False (Set to true to disable voice pitching)
LowQualitySound=False (Set to True to use lower sound quality and get more fps)
VolumeModifier=0.000000 (Use this if your sound is too low even if you set everything to high, but beware, higher values MAY DAMAGE YOUR SPEAKERS, HEARING AND EVEN CAUSE COMPLETE HARDWARE FAILURE)
AllowDownloads=False (Setting this to True should in theory enable auto-downloader that is built in game so that you can view other players skins and download maps you don't have)
UseTripleBuffering=True (Use Tripple Buffer if your graphic card supports this so that you can load textures faster)
DesiredRefreshRate=75 (Set refresh rate, 75 is minimum recommended as anything bellow will strain your eyes)
Use16bit=False (Set this to True to use 16bit output which should in theory increase fps but decrease quality)
Use16bitTextures=False (Set this to True to use 16bit output which should in theory increase fps but decrease quality)
UseVSync=False (Disable VSync to gain more frames or enable to get smoother gameplay on high-end systems)
LevelOfAnisotropy=4 (Level of detail for textures by distance where 2 is lowest and 16 highest, increasing this value will decrease fps but increase quality)
TesselationFactor=1.0 (The so called tesselation or object smoothing, set to 0 to disable it and gain huge fps boost or increase value to get smoother object detailing)
bLowGore=True (Set to True to get more frames but decrease blood puff quality, this setting nearly doesn't affect quality but does increase fps)
bVeryLowGore=False (Same, except that this setting increases fps even more and slightly decreases quality)
PhysicsDetailLevel=PDL_Medium (By default, this is set to High, set it to Medium to decrease physics computation for more fps but less precise physics or to Low for maximum fps gain, this setting increases fps drastically, and if it's possible, server hosts should try it out in their server ini in order to increase ping for all players and bring more accurate experience, though beware this is not tested)
DisableBspBumpDynamicSpecular=true (Should in theory enable bump effect on all objects if set to false)
WorldDetail=Medium (World detail, Low, Medium, High, UltraHigh(untested) )
TextureDetail=Low (Overall texture detail, Low, Medium, High, UltraHigh(untested) )
UseRealtimeMirrors=True (Mirroring detail, ie render reflections in realtime or not, True or False )
Allow20Shaders=True (Pixel Shader 2.0 setting)
FluidSurfaceDetail=High (Water detail, Low, Medium, High, UltraHigh(untested) )
DynamicShadowDetail=High (Shadow detail for motion objects, Low, Medium, High, UltraHigh(untested) )
GlowEffectDetail=High (Glow detail, Low, Medium, High, UltraHigh(untested) )
BumpmapDetail=Medium (Bump reflection detail, Low (to disable), Medium, High, UltraHigh(untested) )
User.ini (beside above mentioned keybind tweaks)
HudMode=0 (Set to 1 to disable)
Crosshair=0 (Set to 1 to disable)
Sound/Video optimization (codec):
To even further enhance the experience and gain more FPS, if you have K-Lite Codec Pack installed (which I highly recommend) go to Start>All Apps>K-Lite Codec Pack>Configuration, and from there on, ffdshow for both Audio and Video. In both Audio and Video ffdshow settings you can find 2 lists, one for excluding and one for including of executables that the ffdshow codecs will work with, if you add Swat 4 to allowed/included list for both audio and video you will notice a small but welcome performance boost in game specially in situations when there is lots of shooting going on. You may also apply this audio/video tweak to many games, it will gain more FPS and possibly solve audio jitter/stuttering in games, it's up to you to try it out. Additionally you may want to further tune ffdshow settings but be careful.
Flashlight bug fix (sort off):
In game settings turn the Shader 2.0 off and additionally use the updated version of CacheSizeMegs tweak.
Alternate Voice Chat Overlay (Supports TS3, Mumble, Ventrilo and many other):
If you use voice communication tools like TeamSpeak 3 you are probably familiar with their overlay feature, sadly though they are often buggy, can lag your game or even crash it. Swat 4 supports VoIP by default, however, voice output quality is very bad and many opt to use TS3 or Mumble in Swat 4. So how to get a proper overlay in Swat 4 and see who is talking without lag or issues?
Find your user.ini and find both fields for voip, default is G=VoiceTalk, remove the VoiceTalk for both G= fields, next up, find the key you are using for push-to-talk in TS3, Mumble, etc, and in user.ini add VoiceTalk attached to the key you use for both fields, mine looks like F15=VoiceTalk. If you don't know what is your F key combo, go to Settings>Key Config>Command>Voice chat, select it and click on Change then press the desired voice chat key once, you will see your key name and according FXX numeric like Your Key / FXX, in my case Mouse Button 4 / F15.
Save the user.ini file (repeat procedure for Swat 4, Swat 4 TSS and any mod installed, to find out how to access these files read sections above in this guide)
Next up open your Swat4x.ini and find [ALAudio.ALAudioSubsystem] field and set as bellow:
Save the file, repeat procedure for Swat 4, Swat 4 TSS and any mods installed.
Next up, make user.ini and Swat4x.ini files read only so to prevent them from being restored by the game launch.
Once you do that, open your voice chat tool of choice, if you use its native overlay, in exceptions list add Swat 4 exe file so that the TS3, Mumble, etc overlay is not used with Swat 4 game.
Last but not least, if you are a server host/clan member and voice communication is a mandatory, you should enable VOIP on your server and instruct members on how to manually enable overlay in Swat 4, thus feel free to distribute a link to this guide or simply share Alternate Voice Chat Overlay field of it.
Some useful tips about this overlay. It will not work if there is only 1 player in server, it will change and display tags according to team you are in (Blue or Red) and only for your team, it will not display if Settings>Audio Use VOIP checkbox is ticked off (but the above Swat4x.ini tweak should cover this) This tweak works only with Push-To-Talk.
These are just few tweaks that I have found right-on-the spot. There are many that I didn't discover, if you find useful tweaks, share them in comments and you will be credited.
Last but not least. To make lasting changes of those tweaks, set tweaked files to Read Only, this way game executable won't reset them to default. However, if you change settings in-game, they will not be saved, instead they will be valid for the lasting session (until you exit game) To edit them again, uncheck them as Read Only.
I bear no responsibility for any damage made by use of these tweaks, use them at your own risk.
Also, since MOH 2010 is based on same Unreal Engine used in Swat, I tweaked some settings that make all in-game settings to highest but give decent ~30 FPS even on low end single core PCs. If you want the ini files, send me a pm. I have some tweaks for ArmA2 as well.
I hope this guide helped you. I will try to update it over time so keep checking for updates.
Speed, Precision, Experience, Endurance. General System Tweak Guide