Interview: bawNg from Intoxicated Gaming

Rust Battle Royale will ring a bell with most Rust players I bet. Recently, I had a chat with bawNg, founder and developer over at Intoxicated Gaming and former developer for Oxide. This community (abbreviated: IG) was founded back in 2011 as a non-profit organisation setting a new standard for South African game servers. IG believes everyone’s gaming experience can be improved with an environment which is completely fair to all players (no pay to win, unfair advantages or biases towards anyone). Most known for their Rust Battle Royale server, they host a wide variety of servers ranging from good old Vanilla to Rust Sandbox. Instead of me yapping on, let’s hear it from the man himself shall we?

This interview has been split up in three parts. You are currently reading part I.

Gegroet (greetings) bawNg! Thanks for taking the time to talk to us. First off, how are you doing?

Hi Syff, things are crazy as usual but I’m doing well, thanks.

Intoxicated Gaming launched back in 2011, that’s a while ago. Can you tell us how you guys got started and how the journey has been so far?

It has been quite the journey and I’ve worked on so many different projects over the years, but I will try to give you a glimpse into Intoxicated Gaming’s history.

I’ve been a gamer since I was young and I used to host large LAN parties with friends, but I never had any interest in software and did a lot of work with hardware and networking for most of my teen years.

It all started back when *inhales

I played a lot of Dota1 and other Warcraft 3 game modes. There was a need for reliably hosted games since War3 only supported p2p hosting and many lobbies were unplayable as they were hosted by players with inadequate internet. So I learnt the bare minimum to automate the War3 client in a VM with a chat based interface hooked up with raw sockets, which worked better than expected. Not long after that, I figured out how to reverse engineer and document the client protocol from packet captures and then worked with a couple other people to prototype the first ever actual dedicated hosting server for War3. That would eventually be rewritten in C++ by someone far more experienced and that project is still used today. After realizing just how much was possible when I knew nothing at all about software, I was hooked, and I’ve had a passion for reverse engineering game servers and finding solutions to problems ever since.

“I hosted over 50 CS:GO servers at one point”

Counter-Strike Gun Game

Back in 2011, all game servers in South Africa were hosted by internet service providers, who were the only ones able to host them due to extreme bandwidth costs; unfortunately, that also meant that they imposed corporate policies on players which much of the community did not agree with. I had gotten back into playing a lot of Counter-Strike: Source and was a big fan of the concept of GunGame but the only version which existed left much to be desired and the only server in South Africa was only populated at peak times, which was a problem for myself and the other regulars who were not big fans of sleeping and would prefer to play right through the night.

One day I saw that a local data center had launched a new product line which finally made hosting with moderate bandwidth affordable to consumers, so naturally, I jumped at the opportunity to get my own Linux server and start building my own GunGame server. Initially, I used most of the public GunGame plugins with improved configuration but I immediately learnt the language and made loads of changes before eventually rewriting everything from scratch. I constantly improved existing functionality and also built new complex systems such as a smart spawning system which improved gameplay immensely. By that point the community had grown a lot, I had launched a DM server powered by many of the systems I had built, and my GunGame server was the only CS:GO server which had players on it 24/7. I felt limited by what was supported by SourceMod, so I learnt how to reverse engineer previously unknown parts of the Source engine from decompiled native binaries and created C++ extensions which modified the engine to do many things it was never designed to do. This made new interesting concepts including whole new kinds of gameplay possible, as well as many QoL improvements and other crazy things like full screen custom in-game UI and music streaming support.

The early days of Counter-Strike: GO

When the closed beta of CS:GO was released in January 2012, I had put so much time into development, testing and playing that my Steam account was one of the most active in the world for CSS and Valve gave me access to the closed beta. I took the opportunity to create initial modding support, port my CSS game modes and launch CS:GO servers within days, which were not only some of the only servers in the world but were also the only modded ones for quite some time. Over the next few years I continued to expand my CS:GO servers in South Africa with the help of sponsor-provided hosting. For the first few years of CS:GO, my servers were used almost exclusively by most players in the country. I hosted over 50 CS:GO servers at one point, including ones for pub casual, pub competitive, clan matches, pickups, and many game modes that I built including GunGame, AimGame, DM, Aim maps, 1v1 Aim DM, Bhop, Minigames and Surf. When I got a high end dedicated box in the EU as a trial to host a few servers for one of my game modes which had never been seen before outside the country, even without any kind of advertising, it became so popular in less than a week that all the servers were constantly full and it was not long before the host terminated the contract due to excessive bandwidth usage.

“It was not long before the host terminated the contract due to excessive bandwidth usage”

Natural Selection 2 & infrastructure

While I was still focusing most of my efforts primarily on CS:GO, I also had a bunch of servers for various other games. I used to enjoy playing Natural Selection 1 on LAN back in the day, so I wanted to support the NS2 community when the game was released. I hosted a few servers, learnt lua and created an open source high level modding framework for the Spark engine which I used to build a bunch of mods for my servers. I also supported the developers at Unknown Worlds with feedback and built the software used by their internal playtester team to download new builds of the game.

Apart from the game servers themselves, I also built a lot of external infrastructure to support my servers and community, including my own hosting platform tightly integrated with the servers and an anti-cheat platform similar to Overwatch. One of the larger projects I worked on was the Intoxicated Play web-based matchmaking platform, which could be compared to FACEIT and ESEA, and was used by the local competitive community for years before there were official matchmaking servers. By modding the files that were included with the Dota2 client, I was also able to create my own headless dedicated servers and provide matchmaking for Dota2 long before the game had matchmaking or supported dedicated servers.

Rust

I first came across Rust when it was still a browser game and was immediately intrigued by it’s potential, so I bought the game and tried it out not long after legacy was released at the beginning of 2014. I soon noticed that the most popular servers would randomly wipe due to issues or when their population dropped, they sold pay to win kits, and the admins would spawn and remove things for players; this turned my initial excitement into bitterness and it’s sad to see that the same issues are still widespread today.

Since Facepunch had started work on a rewrite, I waited until the new version started to take shape before launching my first Rust servers in October 2014, so that there could be some completely fair servers, with no admin abuse, pay to win bullshit or bias towards anyone. Server stability was a big problem and at times my servers were essentially the only playable ones, so naturally, my first Vanilla servers became home to a large community of players from all around the world, even though they were still all hosted in South Africa.

“I soon noticed that the most popular servers would randomly wipe due to issues or when their population dropped, they sold pay to win kits, and the admins would spawn and remove things for players; this turned my initial excitement into bitterness”

Working on Oxide

While planning to create my own modding engine, I came across the Oxide project and realized that the original author had essentially abandoned it, so I decided to join the Oxide core team and work on getting the alpha into a useable state. Soon after learning C#, .Net and Unity, I came up with a way to create C# plugin support with minimal overhead, optimized the core and wrote high performance libraries so that large scale modding would be possible. Sandbox was the very first game mode I built, which gave players the power to test out the new experimental Rust easily throughout development, it has come a really long way since then. I eventually did end up writing my own modding engine to meet the ever growing requirements of my servers, but that’s a story for another time.

*exhales

You host a very interesting and unique set of Rust servers. Can you briefly explain what newcomers can expect?

There are many things that set my servers apart from others. Not only will you never see any admin abuse, anything pay to win or any kind of unfair advantages, but there is also absolutely no admin influence when it comes to gameplay. That means that all players are completely on their own when it comes to gameplay and nothing will ever be spawned, controlled or removed manually for any reason. You can also be sure that all players and situations will be treated as fairly as possible without any bias

You can expect functionality to work as expected, exploits and serious issues to be patched right away, performance to be optimal, and almost no downtime at all, even after updates. I create all mods and game modes from scratch myself and ensure that everything is designed well and optimized. Serious issues introduced by updates are fixed long before Facepunch gets to them and I also constantly profile performance so that bottlenecks in the game itself can be optimized to eliminate even tiny performance spikes long before they can be noticed by players. I have countless custom optimizations in place for the servers, netcode and client-side performance too. I’ve even optimized boot times significantly so that there’s minimal downtime after routine restarts and updates.

“I create all mods and game modes from scratch myself and ensure that everything is designed well and optimized”

Vanilla Rust

These servers provide gameplay that is identical to the official Facepunch servers, so there will never be any kind of change to configuration which has an impact on gameplay.

Rust 10x modded

This server has increased rates and various other features but unlike most other modded servers, it doesn’t include anything game breaking such as TP. Careful consideration goes into designing all features so that nothing is exploitable and gameplay remains balanced, fair and enjoyable

Solo/Duo/Trio 2x

This server provides near-vanilla gameplay with balanced 2x rates for most things and a limit of 3 players per team. Solos and small groups who don’t have enough time to play on vanilla servers are able to experience similar gameplay here. There are systems in place which automatically detect and ban anyone who works together above the limit.

Rust Sandbox

These servers are a sandbox which gives you the tools to do just about anything you can think of without getting interrupted by other players. You get unlimited resources, admin abilities, access to many features including the ability to spawn almost anything, and there are systems in place which protect you from malicious players and annoyances. Players use them for trying out new features like electricity and vehicles, learning loot tables, coming up with new base designs, seeing how well builds stand up to raids, building arenas and hosting events with friends, and all kinds of other things.

Rust Battle Royale

You spawn into a match with a torch and a bandage and have to find loot to gear up as you make your way towards the center. You only get one life and the last player standing wins the match. Many matches can be played concurrently and you can also play the DM warmup or gamble scrap in the lobby while queued for the next match.

With that many servers comes lots of player management I would expect. I noticed that the admins are not participating in the actual game itself. What does a day in the life of an admin look like within IG?

I am the only admin for all the game servers, so things work quite differently to what you see elsewhere. I rely on a lot of automation to reduce the amount of time required for manual moderation, so there are systems which handle most moderation, heuristics and reports are automatically collected, game rules are enforced by sensible game mechanics, etc. I am also available on Discord at most times of the day and night to answer questions from players and deal with any issues which require manual action as soon as possible.

More recently, ThaUnknown_ joined IG as support staff and he has been invaluable when it comes to QA. He puts a lot of time into testing changes and giving me feedback about issues, minimizing the number of issues which go unnoticed and allowing me to focus more time on development. He also contributes in various other ways, including providing ideas and input for changes and mocking up possible future UI designs. He helps answer players questions on Discord too.

End of part I