7 Days To Die C# Server Mods

Back in 2015 when the indie game 7 Days To Die came out, the servers had very little in the way of server mods to improve the multiplayer experience. So I set about creating some of the popular features players of similar games have come to expect on good servers. Such as setting a home on the map and being able to teleport back to it anytime, aswel as accepting friendly teleport requests etc. These commands would be best described as the Minecraft Essentials for any server for both admin/staff and players to use.

The Linux server for 7DTD had a feature of reading the server logs and allowing the user to create commands using BASH or PHP, unfortunately while this did work, the experience for end users typing in a command resulted in a significant delay in response back from the server. So I looked more into making a direct mod of the games source code, where I could not only create plugins, but the response and features of these server mods could respond instantly to player requests and being within the game servers source be able to hook into gathering other information to help players experience of the game. Such as providing functions to help them see where land claim blocks had been placed in the world. The game at the time had no way of helping server staff find such gameplay effecting blocks. So the need to find a workaround was required.

The process of writing custom code for the game server was made a lot easier with the help of other developers in the modding community creating decompiling tools such as deobfuscate-7dtd https://github.com/DerPopo/deobfuscate-7dtd . This was used to decompile the games assembly-csharp file where it could later be recompiled again with the relevant hooks into important game methods such as the chat hook, where player sent input could be interpreted for any commands <args> that I provided for the server.

With this done I was able to recreate a lot of the server plugins Minecraft had and bring them to my own 7dtd server. At the height of the server popularity we were pushing the max limits on the number of players that were able to play on a Linux based 7dtd server.

There however was  downside to this indepth modding of the games source .dll files.. being a indie game the developers often had bugs to fix on a weekly basis, and thus the process of decompiling every update they did to the game, just to patch it with my own server  improvements meant that often after a game update. My server would be left without any of the custom mods, until I had done this work. The process could often take hours if the developers had changed alot of code, and while many of the players of my server enjoyed the benefit of playing on a server with the best server mods any 7dtd had at the time. It was taking its toll on my own enjoyment. So another solution had to be found…

The other solution eventually turned up in the form of the 7dtd-manager by c0nnex, he had created a third party tool that woudl run on Linux under mono C# and would directly connect to the game servers telnet connection. While this was sort of going back to the slowness and speed of the original BASH/PHP based server modding, it did offer many other benefits in that it was written in C# making porting alot of the commands I had already written in C# directly from the games assembly, plus it directly connected to the server telnet connection making responsiveness to commands near instant. I did lose access to alot of the functionality of modding the assembly, however it meant that whenever the developers updated the game, all of the server mods would continue work without my needed to do the process of fixing and patching the assembly, for a lot of server commands that the 7dtd-manager could handle without needing that game code access.

While I’ve long since archived all of the original C# code that I used to patch into the games assembly, the code that I did port over to the 7dtd-manager, along with some of my further improvements to that program can still be found here https://bitbucket.org/o2a/7dtd-manager/src while its been a long time since I’ve hosted a 7dtd server, I’m pretty sure the 7dtd-manager still works great.

It’s a shame that the developers of 7dtd did things to put me off running one the best servers for their game however the experience I had modding the game in such depth back then, is what got me familiar with the game engine (Unity3d) that they had been using. And after shutting down the 7dtd server and the website. I started spending more free time learning to make my owns games and tools with that.

While those games are still in progress (as of writing this now) they’ll be up on the portfolio when they are finished or in a state of public access , I believe in quality and doing things right. Until then I leave you with some screenshots of the server and a few shots that captured the server mods I did, there is alot of image galleries on the website that got archived but for a portfolio section this will have to do and most the screenshots were of the players buildings and not much of the server mods seen in the chat.

2 Comments on “7 Days To Die C# Server Mods”

  1. The developers should have made an API so you can easily mod the game. If they knew they were going to abandon the game anyway it would have made sense to let the community improve it while they still made money from the sales of the game anyway

    1. Well TFP haven’t abandoned the game, though given how long they take to release any updates you might think they had. Also there is problems with doing a modding API in the early stages of a games development with so many potential future changes. And to be fair TFP did start the game with player modding being possible in mind, it’s just there idea of modding was pretty basic like only allowing players to make xml value changes to exposed things and not quiet the full extent to modding that really lets the community build up on the features, gameplay etc that other games in the past have handled better. So alot of things should have been done and handled better by them.

Leave a Reply

Your email address will not be published. Required fields are marked *