Donations

    Server Status



    CAL Rotation Top 10

    Sponsors
SRCDS Tech: Optimization
Home » oPg CS:S Server » SRCDS Tech: Optimization
By Laby | No CommentsLeave a Comment
Last updated: Sunday, August 17, 2008

This is part 4 in a series.

Counter-Strike-SourceThe source engine netcode is a little squirrelly. It always has been and it always  will be. One of the questions I am bombarded with is ‘How do I fix XYZ to make the game run better?’ In order to make the universe a slightly better place, I’m going to try and help all of you.

Articles in this series will include:

  1. The basics of how source netcode works
  2. How the source engine compensates for an imperfect environment
  3. Understanding the Netgraph
  4. Optimization Guide (You Are Here)
  5. Everything else advanced and so far not covered

Choke/Loss

Before I get to actual optimization, we need to understand what choke is. Choke is the server trying to send you data when you cannot accept it.

Reasons for this are as numerous as there are blades of grass in the neighbor’s lawn. I’ll cover the most common one’s, which include:

Inconsistencies in

  • Frame Rate and Frame Rate vs cl_cmdrate
  • cl_cmdrate vs cl_updaterate

Failure to

  • Sustain necessary bandwidth (May cause Loss)
  • Correctly set your Steam ‘Internet’ setting

Optimization

counter-strike-source-2005070703001

The above list may be small, but it covers the majority of choke related problems. Almost all choke problems are related to ‘rate’ control variables being set incorrectly.

Here’s my list of choke fixing basics. If this does not solve your choke problems, you should be able to intuitively grasp what might be causing choke from the rest of the series or Whispers Wiki.

Make sure you have enabled ‘net_graph 3′ before any of this

1. Set your Steam Internet connection setting. Set it one setting higher than your actual internet setting. Most of you will set it to “Cable/Fiber < 10M” You find this in steam via

File -> Settings -> Downloads -> “Approximate speed of your Internet Connection”

2.  Make sure you do not have LOSS problems. If you do, check with your ISP and/or GSP to see if there is something wrong with your connection or routing. Then check your router, network card, and everything else you can think of. Loss cannot often be fixed by rate settings.

3. Set your cl_cmdrate and cl_updaterate to the server’s tickrate +1. Set rate to the sv_maxrate. Set your fps_max to your cl_cmdrate.

For our 100Tick server you would set

    • cl_cmdrate 101
    • cl_updaterate 101
    • rate 30000
    • fps_max 101

The idea behind this is that you will never dip below the max packets the server can send to you. Also, your FPS should match your cl_cmdrate consistently. This will effectively eliminate the aforementioned inconsistencies.css-dust-2.big

4. If you cannot consistently sustain the fps_max, drop your fps_max to a setting you can consistently maintain. Or decrease your graphics settings to raise your fps to the fps_max settings.

Match cl_cmdrate to the new fps_max setting.

Example: I can only sustain 80 fps.

  • fps_max 81
  • cl_cmdrate 81

5. Evaluate. Are you still getting choke? If so

6. Begin dropping your cl_updaterate in intervals of 5 until choke is reduced or eliminated.

For a 100 tick server:

Start with cl_updaterate 100, then 95, 90, 85 etc.

7. Evaluate again. Are you still getting choke? If so

8. Match cl_cmdrate and cl_updaterate. Match with whichever is lower.

9. Evaluate again. If you are still getting choke, it is more than likely another problem. Make sure you’re not being obsessive about choke. Some choke is to be expected. This is unavoidable and trying to eliminate it will drive you crazy.

de_nuke1_01 It also may be the server, try a different server.

The concept this whole method is based on is that you use a cookie cutter setting which will allow you to achieve optimal communication with the server. Then, you will tweak your settings until you reach something that you can handle based on your computer and internet connection.

The ‘X’ Factor

It is important to understand that there are things beyond the client’s control which can cause choke. There are also server side factors to consider. All of the following will cause choke as a fault of the server: (Credit to Whisper’s Wiki)

  • Failure to sustain tickrate
  • Failure to sustain fps demanded by tickrate
  • Failure to sustain the fps required by or failure to sustain the sv_minupdaterate
  • Failure to sustain necessary bandwidth to support updaterate and sv_minupdaterate
  • Any general failure of server resources to adequately sustain the SRCDS process

In summary: If the server cannot adequately support the demands of the SRCDS process in either bandwidth or resources, there will be problems. Sometimes these problems result in choke.

One More To Go

Well, folks, with the optimization guide out of the way, we only have the advanced stuff left to cover. I’ll be covering it tomorrow. Tune back in if you’re interested in the new cl_interp_ratio and what exactly server fps means.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Comments

There are no comments just yet

Leave a Comment

Add your picture!
Join Gravatar and upload your avatar. C'mon, it's free!