Retrofitter is an idle clicker game developed for the 2026 Athena Game Jam, inspired by the theme of "retrofit". In this game, you take on the role of a dataminer who uses his personal hardware to generate microchips to upgrade your computer hardware. As you progress, you unlock new upgrades and faster automation speeds, making your system efficient and maximising your microchip production. This project was a solo project, as I created the design, programming, and overall game balance, ensuring that the game felt enjoyable for the player.
For this project, I worked completely solo and continued to work inside of the Godot Engine. I took this opportunity to learn some skills in balancing and creating a game that saves your progress.
13th - 16th April 2026
15th April 2026
Released for PC / Windows Platforms and playable in browser using HTML.
During the lead-up to the Athena Jam, I had already developed an idea I wanted to go ahead with for this project, which would be relatively easy to make, allowing me to enter the competition and be able to balance the remaining tasks of my current assignments. I had high hopes for this Jam, and was really looking forward to creating something unique that other teams wouldn’t have thought to create.
During one of my lectures prior to the Jam, my lecturer had suggested that it was a fun experience for students to create a clicker game at some point, and so I took this to be the opportunity for me to create this style of game. With the actual theme not to be announced till the opening event, I had to only hope that the theme would be able to fit with my idea.
Eventually, when we finally knew the theme of “Retrofit”, everyone was confused by what that really meant. Retrofit is essentially fitting something with new or modified parts, which originally stumped me as to what I could actually do with this theme. Had the theme been something straightforward like “Mask”, I would have simply created a mask clicker and made it so you upgraded your mask the more you clicked. However, after some quick thinking, I settled on making it so that you collect computer chips and could purchase new hardware to progressively earn more and more.
Being such a simple concept, and also having an idea myself, I chose to work solo on this project, as well as wanting to work in Godot again. The main area I wanted to improve with this project was understanding how a save system would work, especially considering how this was an idle clicker game. With my main development focusing on the save functionality, creating that feature was actually really straightforward. With all the details being saved to a generated text document, my only real concern was forgetting to save a specific item to the save manager. However, after spending so much time setting up the different pieces of data that needed to be saved, it became very easy to remember to add each element to the save script.
Alternatively, my priority was making the actual clicker itself, and the slow increase in the number of clicks. This was a balance that I knew I had to get right: increase the amount generated over time too much, then it feels too broken; increase the amount earned per click too much, and the balancing would be off again. I focused a lot on making sure that it felt just right, and personally, I think I achieved this perfectly. I wanted the main task to be actually clicking, not relying on the accumulation of chips over time, so upgrading the mine speed does produce more, but that’s the whole point of the game.
I also took some time to create a lot of the images myself, using Photoshop to create the background and buttons. Especially since The Mask Platformer used art assets from a free website, I wanted to let some of my creativity free and provide myself with the appropriate and on-theme assets. I also took graphic design back in secondary school, and although we used the unavailable tools of Adobe Fireworks at the time, eventually having learned my way around Photoshop in college, I was confident that I could make my own assets.
I also once again used SilentWolf to create a global leaderboard of top scores. I loved the option to showcase the time it took to complete a level in The Mask Platformer, so a game where you can infinitely increase your score needed the inclusion of a leaderboard. My favourite part about releasing this game was slowly seeing the high score change and grow over time, and knowing that people were genuinely playing the game for long periods of time to attempt to place in the top places was really fun to see.
Eventually, I did reach a satisfactory point with this project where I felt like I had nothing more to add. I ended up finishing a whole day early, but with how simple and straightforward the game was, I didn’t mind having this extra time from my game.
For the game to save, I made a script that was always loaded when the game starts, this ensured that all the defined variables were loaded and when they were eventually modified through being saved could be loaded in that way. This script was incredibly useful for keeping track of the variables and made it really easy to add more save data to the file. I also set up a script that would check if the game had previously generated a save file for the game and would load all the data that had been saved, but in the instance that it hadn’t, the game would set one up. What worked really well for this is that the player can save their progress on the itch page or through my portfolio itself. This wasn’t something I was sure would work in the browser, but I am happy that it does; in case people were concerned about their progress, the option to download a Windows version is also available.
On reflection of this feature, I’m really happy with how it turned out! It’s a really simple addition to the game, but being a very straightforward game, it complements the gameplay loop really well. It’s a really useful skill to have some concept of, especially when there’s eventually going to come a time when I need to implement something in a Uni project inside of Unreal Engine, which I know follows a similar setup to Godot.
Another element of the project that took a lot of focus was making sure that putting your chips into generated chips or clicking the button to get more was at a decent enough level to not be too powerful, but not too weak. I achieved this by using a set variable and multiplying it by a percentage every time a purchase was made, for both the cost to buy something and when the player would click.
On reflection, I think this is set up really well by taking an established variable and updating it infinitely throughout playing the game. However, I think some balancing could still be used. I think that upgrading the chips generated over time just isn’t scaling with the amount you earn when you click after upgrading that a decent amount. I think this would have been something I would have picked up on a lot sooner had I done some playtesting during the development of the project.
On reflection on this project, I had a very negative view of this one. I wasn’t proud of what I accomplished; I felt like it wasn’t as good as other submissions in this Jam, and I actively spoke badly and criticised myself about it. This was mainly down to a couple of circumstances that weren’t in my control, and I let them affect me and my attitude towards my game. I know how much care I put into my project, and on this occasion, my efforts in the jam didn’t feel appreciated, as if I had actually stained some works of art. I have come around to this project; I do personally enjoy it, and I love clicker games. However, I do still feel like it is very empty and could do with some more interactions, some small design tweaks, and maybe some background music. I think the style works well; I tried to go for an old vintage computer vibe, and overall the development of my own personal skills with the Godot Engine grew too. I’m lucky to have someone in my life who cares very deeply about me and my work, and without her, I don’t think I’d ever have got over my dislike of this project because of my experiences with the event.