Introducing MapTracker

August 13, 2019

I make it so secret that I play a lot of Source Engine games, mostly Garry’s Mod and Counterstrike: Source / Counterstrike: Global Offensive. One of the key features of these games are dedicated/custom servers; a feature all to rare in games nowadays. To keep it brief, dedicated servers allow a user to host a multiplayer server themselves, outside of the game. This gives them the ability to customise a games rules and features to what they like most and allow others to join them. Dedicated servers allow dedicated users to create unique, deep experiences in games through customisation, and creation of communities who enjoy those customisations.

Okay cool. So what about that? Well, the biggest annoyance I have with dedicated servers as a whole, it the fantastic range of content they offer and the enjoyment the players bring. Why is that bad? Some content is better than others; that is reality. I would like to skip some maps or modes, and come and join in others I especially like. Unfortunately, there is no existing way to watch or wait for maps in Source, or even via Steam; your only option is to manually keep track of the state of your favourite servers in the server browser.

I got tired of this; and decided to build a tool that will let me know when my favourite communities start playing my favourite maps!

Enter MapTracker…

MapTracker scratches my little itch (and lack of concentration) for developing something new, and solves my problem with a simple, pleasing experience. The idea is simple; I give the application a list of servers and maps I like; the application will notify me when one of those servers switches to one of those maps.

From this starting point, I knew what I needed:

  • A datastore for my servers and maps, as well as the current state of my servers
  • A way to send myself notification
  • A way to check each of my servers current map
  • A data entry tool to add my favourite servers and maps

Having wanted to learn some new web tech for a while now, a webapp was the immediate choice; as I can keep it running at any time. TypeScript and Vue were my front-end choices; I knew very little of either, but increasing popularity of both, combined with typesafe JavaScript (maybe god is real!) made for some satisfactory choices. Backend is Go, largely due to a combination of language preference, and that I had already written a library to fetch steam game server statuses in Go. I will talk about more implementation details another time.

Maptracker Server Browser

Anyway, fast forward a few months, and my application is up and running, and publiclly available for anyone to try out! The front-end is also open-source here: https://github.com/galaco/maptracker-app. The backend I’ll make available when the code quality is a little higher.

Honestly, even though I can only receive FireFox notifications (really Apple, no web notifications on iOS?) the application is really handy. I can be programming away and get a brief glimpse and what is happening in my favourite games; then join if it interests me.

If you have an idea, go and make it! Even if it only helps you, it still helps you!