TLDR

A weird interplay happens when a external program like the SoStronk app launches CS:GO and attempts to connect the game to the server. This has caused a small percentage of gamers to report FPS drops during gameplay. Therefore, we have implemented a workaround which requires gamers to copy and paste th connect string (which the app will conveniently place in your clipboard) and connect directly using the console.

The Journey

Back in January, SoStronk patnered with GGNetwork to hold the first tournament on our newly developed eSports platform. This was the first time we had invited people to come play on our system, and needless to say, we had some fairly hairy times.

Kunal

As is expected from a young system, we had our fair share of crashes, of silly bugs, and of not so silly bugs. But, when you can reproduce the problem, fixing it becomes a matter of prioritising it and giving it its due time. After the conclusion of the tournament, we analyzed the situation and decided to tackle all the bugs that were reported. Having a dedicated dev team definitely helps in this regard, as we can objectively attack all the problems which are reported.

For the most part, we were fairly successful. Our system gained a magnitude of stability through this process, and we got a good grasp on how our system held up when faced with real world usage. However, one issue still eluded us. There were reports that a small percentage of gamers were facing random FPS drops while playing games on the SoStronk servers.

The Problem

We did not take this lightly. We immediately started scouring through our code base to see if there were any possible signs of resource overuse which would cause a otherwise stellar experience to be scarred for the subset of gamers facing this problem. We found a few bugs and resource leaks which would cause the SoStronk app to use 5-10 % CPU if certain edge cases were triggered. But throughout our investigation, we never found out any thing glaring enough to actually cause the kind of reported FPS drops.

Remember what I said earlier about bugs being fixable once you are able to reproduce them. Because this FPS issue was only happening to a small subset of the gamers, and not happening to anyone in the dev team, it was very hard for us to understand what exactly went wrong during the reported drops.

0% CPU

Nontheless, we made major strides in improving the overall stability of the app and gained a much better understanding of how our app behaved when running on a variety of computers in the wild. As we had no solid way of reproducing the FPS bug, we relied on getting feedback from second tournament which happened in March. Apart from the awesome matches where we introduced our stats/demos/GOTV system, we got a strong feedback from some of the pro gamers that the FPS issue was still a real thing and it was rearing its head at the most unfortunate of moments during gameplay.

One thing became amply clear. We had to get a handle on the FPS issue by hook or by crook. By now, we had optimized the app to such an extent that it was literally running on fumes (it would be weird to ever see the SoStronk app any CPU cycles during game play). We had switched the app to Direct X rendering because a few bugs in the OpenGL codepath would cause a sustained 0.01% CPU usage. Yes, low enough that it won’t register in the task manager, but we were feeling extremely paranoid at that point and were going after every CPU cycle we could see.

Current state of affairs

Now, we have optimized the app to the maximum extent possible. We no longer use GPU rendering because of the possiblity of any interference with the running game. We infact unload the entire user interface when the game is running (or when the user clicks the X button on the app) and go into a low CPU usage mode. We are also aware of a few bugs in CS:GO which get triggered if the game is launched using the steam://connect/ip:port method. As a result, we are introducing a popup which shows when gamers double click the server in the server browser. As pictured below, this popup will provide a “connect ip:port” string (it can conveniently put in your clipboard) which you can then use to connect to the SoStronk game server from the game console (after pressing ~. If your game console is disabled, please enable it by going to Options > Game Settings > Enable Developer Console).

We want the gamers to know that we care deeply about their gaming experience, and are doing everything possible to get to the bottom of this problem. This week, we spent a good few hours at the LXG Gaming Parlour trying to diagnose the issue. The cover photo was taken there itself; we are indebted to Aravind from LXG for letting us use the resources of the cafe. Although we were able to reproduce the problem twice, the low rate of occurance and the inherent randomness didn’t really allow us to make any real progress (where we could definitely say that the the issue is done and dusted with).

Bug Bounty

We want to hear from you if you have a solution to our FPS drop issue. Mail us at bounty@sostronk.com (for more sensitive, security related issues please use security@sostronk.com) and we will take it from there. The minimum reward for the accepted reports is $100 (no upper limit). However, considering the sensitivity of this particular issue, the minimum being offered is $500 for reports related to this particular issue (again, no maximum). To be accepted, your bug report should include detail steps for reproducing the error and should be reproducible each and every time. A more detailed post about SoStronk’s bug bounty program will follow soon.

Conclusion

Watch this space for updates on the FPS issue. I will make sure I will update everyone as we make progress on this front. We want to revolutionalize gaming and eSports, even if it happens 1 FPS at a time 🙂

Update 1 (2015-05-14) {#update-1}

A few of you have pointed out that FACEIT has a similar problem. We wanted to let you know that we are already aware of this particular problem and a workaround is in the works (the solution should land as a insta update sometime this afternoon). So bounty hunters, nice try! You have to try harder to bag the $500. However, if someone does submit a 100 % reproducible test case to replicate the problem, we will definitely consider it for the reward.

Spread the joy

This site uses Akismet to reduce spam. Learn how your comment data is processed.