top of page
Writer's picturemasonstooksbury

CI/CD for Game Development


Lately I've been working on creating a game with Godot with the express goal of finishing it and releasing it on Steam: a feat many aspiring game devs long for, but never see through. But not for lack of trying! As any of them will tell you, it's not easy working on a game for as long as that takes and seeing it to the bitter end (as well as doing any upkeep via bug fixes, patches, security updates, etc). So to push myself - and inspire my friends who also make games and some who want to get into it - I set out to do the difficult work with 3 simple goals: [1] Finish a game (UI, sound, title screen, polish, etc)


[2] Make it multiplayer (I've done this in the past, but I wanted to learn how to use Steam's Networking API since there's not a whole lot of great tutorials on it and I think I might like to make one)

[3] Publish on Steam


I'll spare the details of this arduous process so far, but suffice it to say that within about 60 hours, I had a playable demo that could be shared with friends to start stress-testing and gathering feedback. All I had to do was: open Godot, click through the export game windows, upload that executable to Google Drive, enable sharing, grab the link, and post it in Discord (the .exe was too large for Discord and I'm not paying for Nitro). Needless to say, this was tedious and could be made much easier.


The solution I settled on involved a GitHub repo and two helper programs. The repository would store the exported game .exe from Godot and I would be able to make releases with a particular version number. The first of the programs would be a generic "launcher" that could be custom-made for any game I make in the future and sent to any tester. The launcher would then be able to hit that repository, grab the latest release, and allow you to launch the game. This way testers need to only hit one button to have the freshest copy of the game to test against. The second program is for my own use and will help me in actually creating the game exports from Godot. All you have to do is select which folder contains the game you're working on, give it the latest version name (what you want the .exe to be named, basically) and it will headlessly run Godot and create your export .exe for you. The beauty of this is that it also has a button to push to GitHub and save you a few more commands. Right now it's hardcoded to push to the test repository of my current game, but I may add a field later so that I can specify a different game repository.


I still have a ways to go before the game is finished, but this setup only took about 10 or so hours to create and iron out all the kinks (including a very annoying bug where the icon for the .exe of the launcher wouldn't bundle with the program so that I only had one file I needed to send to people) and it has saved me tons of time in getting new versions to people faster so that I can spend more time working on the game rather than keeping track of links and cluttering up my Google Drive.



Improvements I want to make (later):


[1] Learn how to sign my .exe programs so that testers don't get 100 messages from Windows about how dangerous it could be to run it lol


[2] Add a generic field to the Export helper so that I can aim it at a different repository

17 views

Recent Posts

See All
bottom of page