top of page

Things I learned from 7+ years of running public game servers

Writer's picture: Carl OttoCarl Otto

Updated: 6 days ago

Backstory: Back in spring of 2017, I found a indie game called 'Factorio'. It is not a typical game and more of a simulator, a bit like City Skylines or Sim City. Except instead of building and managing a city... it's a factory, and your life depends on it.


Factorio Logo
Factorio Logo

About Factorio: The basic 'lore' is you've crashed on a planet and your rocket is destroyed. Now, you need to do whatever it takes to get off the planet. What that ends up involving is starting with a stick and mining materials and slowly building all the infrastructure needed to build a functioning rocket from... rocks. ...While fighting off the local fauna. Yes, really. I played the game for a bit and had fun with it. Shortly after the game developers released an update with multi-player. There weren't a lot of publicly accessible servers, and so I decided to set one up. I quickly 'leveled up' and started automating Factorio moderation instead of playing the game.

A robotic arm holds a glass flask filled with red liquid against a black background, highlighting the metallic blue and red details.
Current M45-Science Logo (2024)

Naming it M45-Science: I had been taking a few photos with a telescope (astrophotography). Recently I had taken a fairly poor quality image of Messier 45 (The Pleiades or Seven Sisters). In Factorio, you need to build 'science packs' to advance and the icon is a flask with a colorful liquid in it, depending on the type. The first level is 'red'. The game has some robotic arms (called inserters) that move items on and off conveyor belts. That seemed like a simple, colorful iconography that would work as a logo or icon.I also thought M45 sounded cool. Like 'M5 Industries' of MythBusters fame. Fun fact: This constellation is the origin of the Subaru logo. "Subaru is the direct translation from Japanese for the Pleiades" --Wikipedia


Bright stars in the night sky with a dark backdrop. Blue nebula visible, creating a serene and awe-inspiring celestial scene.
My 2nd attempt at photographing M45

Starting off: Just hosting a game. Then I started to look into scripting the game via the lua scripting they were slowly adding. This allowed me to put an 'info window' with links to a Discord group, rules, etc. It was a bit of effort as I was not familiar with lua or Factorio scripting. Factorio has some... interesting technical quirks and foot-guns. (aka... i once bugged the game so hard that the developers were impressed)


Going down a rabbit hole: After a short while, dozens... and then quickly hundreds of people were playing on my server. Griefers / Trolls (people who just want to destroy + annoy) start show up to spoil the fun. Obviously, I can't be around 24/7 to log into the game. I try to find other people to help moderate. Considering it is unpaid and people all over the globe play at different hours... this is quite hard to do. I decide I need to limit permissions new players have... but after they play for a while I'll have the game promote them to being a 'member'. This actually helps a lot. Many of them don't really want to wait around and play for say a half-hour before they can get access to tools that lets them do some kind of significant damage with not a lot of effort on their part. Eventually I add a voting system where members can vote off new players. This just 'jails' them, sending them somewhere they can't escape but does not outright 'ban' them. This lets them 'plea their case' if maybe people jumped to conclusions or simply made a mistake when trying to figure out who did what. Later on, I added log files to our website so we can see exactly what someone did and said in black and white. It really helps with finger-pointing and he-said she-said, friendships, politics, etc. The problem: I need a way to check on things and take care of issues when I'm not at my desk. I start poking around, and start looking into Discord bots. I see some cool examples written in a programming language called Go. Never heard of it. There is a cool library that makes it easier called Discord Go. Awesome! The project begins...

I eventually manage to get it working enough that chat from the game can be seen on Discord (where I can see it on my phone) and Discord messages also are forwarded to the game (so i can reply). Helpful, but I need to be able to run commands to ban people, etc. I start adding commands. Next, I really need a way to revert the game to a backup save if the damage is extensive. Sometimes people wait until no one is around so they can just walk around and delete things. One of the people who are helping to moderate makes a web control panel for us. I add game timestamps to the Discord messages and show when the map is saved 'Autosave 123' so we know what save is when and what. Awesome, we can rewind the map via mobile (thanks for your help nem).

Time keeps on passing: Well, time passes and the game gets more popular. Dealing with griefers/trolls gets tiresome. There are a LOT of other game servers now. At this point, the server bills are enough that I start asking for donations. I start looking at other Factorio groups, and some of them have a list of banned players on their website. I start writing something to scrape those and add them to our ban list, and make our ban list public as well. I slowly upgrade the in-game lua scripts and discord bot to make things easier. Some other simple mechanics that helped us was having some members-only maps for more long-term or complex games. 2020 happens: Pandemic. More people are home and online than ever. I start investigating some 'warning systems' and alerts for some actions for new players. I add more player levels, better voting systems, etc. I add player commands to vote to reset or rewind a map. This cuts down on how much of my time the server takes. Moderators come and go. People hang around for a while and move on, with a few exceptions. I write some custom stuff to make a window that shows players online. Now a few clicks votes to ban a player to make things simpler for players. 2020 - Present: Things slowly kept improving. Recently there was a huge "2.0" update, and I had to fix/upgrade things to work with the new release of the game.

So, what are some things I learned from the experience? I learned some lua, and go. Go is a wonderful language, and I find it hard to want to go back to C with all its foot-guns. Go's tool-chain, utilties and library are awesome. The performance impact is pretty minimal, and the code is very stable. Even though me, a complete hobbyist wrote it piecemeal and learned along the way.

The number of people who play for 30 minutes to a few hours and never return is about half. The other half just grief. Sharing ban lists helps more than anything else. They just go down the list of servers looking for people to annoy. It is always worse when school is on vacation. When a map is 'fresh' or a 'blank page' and simple it is less of an issue. Everyone feels able to contribute one way or another... even if it is just 'shoot the bugs attacking us'.

Later, everything becomes massively complex. Most tasks are automated or battles to take over new areas are really hard for most people. There is little you can tinker with without screwing something up and angering someone. It seems that many people... when they feel unable to contribute will simply 'kick the sandcastle'. What is before them is just too complex, made by too many people or they just don't have the patience or knowledge (or desire) to allow them to contribute. For roughly half of people, their response is 'destroy everything' and then promptly leave (in shame?). I think many people just feel, inadequate or insulted.

Surely I'm exaggerating... right? No. The number of people promoted to 'member' or higher and the number of people 'banned' is basically 50/50. I think this says some... 'interesting' things about mankind. Positive notes: A few top percent of players play a lot. At time of writing we have over 5400 members and over 900 people on our Discord. Nearly all donations came from people in this group and they are most of the Discord activity. They keep optimizing, solving new puzzles, talking and planning with others... and its just part of their routine. It just 'scratches an itch' for them. I think many of these people are highly intelligent and capable people. If I was running a tech company and wanted intelligent people who can coordinate with others well for long periods of time... Well, people in this group would be at the top of my list. Many don't seem to realize it, but Factorio IS programming, engineering and design. I think this way of organically discovering talent is vastly under-utilized. There is a lot more I can share but I think that is best left for a different post.




4,596 views0 comments

Recent Posts

See All

Comments


Subscribe to Newsletter

Contact Us

bottom of page