Fist-Fighting the AI - The Mack Diary
Fist-Fighting the AI - The Mack Diary
Well, we made it. Took MONTHS of dedication and hard work, but we made it. The game is released! And what a project this was... I've learned so much in the creation of this game. From systems design to infrastructure to source control to general coding skill, not a single aspect of my skills as a developer has been left unimproved over the course of the creation of this game. IT challenged me in ways I have not been challenged before, and I like to think that the end result is one of my greatest achievements to date.
So why is that? What about this pushed me so hard to grow? Why do I consider this project to be the most important thing for my own development that I have ever worked on?
Simply put; the game's AI. I'm not going to pretend that it's revolutionary. It won't knock your socks off. But it might just be able to challenge you, as a player, to think about your next move more carefully, and for how complicated this game is, that's enough for me. The game has so many different variables and systems in place that the effects of actions can be hard to understand and predict before actually making the action. This creates an environment where creating an AI to challenge the player becomes an extremely difficult task of gargantuan proportions. I started work on the AI in mid October 2024, and it was not completed until late April 2025. That's 6 months out of the game's 8 month development cycle. During this time, it was pretty much the only thing I worked on aside from occasionally assisting the rest of the team with bug fixes. It is an immense personal achievement for me to complete it.
Alas, there is far more to this story than simply "I spent 6 months developing the AI." And even then, I’m forced to simplify the story for both my own flawed memory and the sake of not boring you to death.
The Early Days
Pre-Development
2023-24 School year
Lev first told me about the idea for Sillypolitik long before we ever started working on it together. I don't remember when exactly he had started pitching it, but it was at least 6 months before we started. We had been friends for a while already by this point. I thought the idea had merit, but I had always had my own projects to work on so could never really help him with it. He too was busy with other projects, so Sillypolitik mostly just fell to the side, pocketed for a later date. That date would come in April of 2024. Lev and I had just found ourselves placed into the same section of Game Dev Practicum, a class at Purdue University, for the fall semester. We still had summer break before the class began, but even before Lev had decided he wanted to work on Sillypolitik, we knew we were gonna work on a project together.
See, despite being friends for nearly 2 years at this point, we had never actually worked on any projects together. We had tested each other's projects, given feedback on design, even helped with bug fixing, but never had we shared a large project. We both wanted the chance to work closely with the other. Game Dev Practicum was that chance, and we both hopped on it. It was an exciting prospect to finally get to work alongside the fellow developer and friend that I had in Lev.
First Steps
August, 2024
5 more people would join us for the project. Anna, George, Camden, Sam, and Steven filled in the gaps of our skillsets. They all have played vital roles in this project, and I'm proud to call them my teammates.
Lev mentioned in his dev diary the first playtest session we had on the paper prototype. This session was an immensely useful session for everyone in the project to understand the vibe of the game and what exactly play was going to look like, along with solving many issues with game loop and balance. I remember sitting down for my first game when I arrived at the playtest and immediately finding a game breaking exploit with the systems.
Another thing that happened around this time was the realization of all that this project would entail, and notably, how the AI was going to work. I distinctly remember talking to Lev about how the AI would likely be a project that itself could take as long as the rest of the game combined. I also remember the dawning realization that I was the person who was most likely to be handed this task, and the dread that it filled me with.
Would I be able to do it? I always knew that the AI would take a lot of effort, and I had ideas of how it might be done, but it was far beyond any project I had worked on previously. In the beginning I compared it to a chess AI. Chess AIs are well researched, but still difficult to train. I needed to now make an AI that could compete 1 on 1 with a human player, but how? I was still a novice programmer. It was a terrifying prospect.
The Project Begins
September, 2024
The AI was not actually the first thing I worked on for the project. The first thing I worked on was the base class for the cards. To be honest, at this point in the project I was not as skilled as I am now. The work I did on this predates the lessons I learned from the AI, and looking back at this code, it was exceedingly messy. I would have done it very differently if I were to have started with the knowledge, skills, and understanding I now have. But still, it was the beginning. It was slow to start, with us not really understanding how to get the ball rolling and go from nothing to even just the first level. Slowly though, that ball picked up momentum, and by October, we were well on the way to our first level being playable, aside from one major issue.
The AI had not even been started yet. We had delayed the beginning of this, partly because I was terrified to start, but also because we needed to have a large portion of the game's infrastructure completed before the AI would have the tools it needed to do anything. But now, I was out of excuses. The infrastructure, while messy and unpolished, was there. The AI needed to get started to ensure it would be completed on time.
The Plan
October, 2024
But before I got started, I got the opportunity to talk with somebody who actually knew what they were talking about. Lev's friend Nathanael, who wasn't involved in the project, actually knew a thing or two about AI considering it was his major. I chatted with him about the AI, what it needed, how the game worked, and he gave me great pointers on where to get started. His insights were of tremendous help in the early stages, as the three of us (Lev, Nathanael, and Me) were able to make a rough gameplan of what stages the AI would undergo through its development.
In short, the AI would start with just being able to understand a few moves. Specifically, the ones in the tutorial level. This way, we could test game systems against the AI safely. Then, we would expand this to all possible abilities. This would mean all levels would be playable. Finally, it would gain the capability to plan out moves into the future, and through this theoretically be able to combo abilities. Each of these stages would take time to develop, but they were vital to making sure I didn't try to take on too much at once. This would also allow us to have a functional—if possibly incomplete—AI, whether or not development is on schedule.
Trial and Error
A Lack of Experience
November, 2024
My first attempt at AI was flawed. Very flawed. See, while I thought of myself as a fairly decent programmer at the time, I really was still rather amateurish. The AI was a baptism by fire. Even if it took me a bit to realize how badly I had messed up the systems, its effects were immediate in how it slowed down the development. The bugs were everywhere.
I won't get into what exactly was wrong with it, but I will explain the arguably more important part of why it was wrong. I wasn’t aware of how to properly structure complex systems like the AI to be expandable, and by the time I had learned the mistake I had made, we only had a few weeks until the semester ended. Therefore, I had to keep chugging with the broken, buggy system that was the AI at the time. It sucked, a lot. I was throwing my head against the wall trying to figure out how to fix the system.
Eventually, I came to the conclusion that the system could not be saved. The only solution was to start over, from scratch, halfway through the project.
The Rebuild
December, 2024.
The end of the semester brought with it an opportunity. No classes for a full month. I could dedicate myself fully to Sillypolitik for the duration. It was a chance to remake and fix the broken AI, and allow it to be built off of in the future much more easily. Lev mentioned that he was reworking the ability system with a similar goal during this timeframe. In all, I would consider December of 2024 to be one of the most important months of the games development, despite many of its developers taking the month off. Its systems were revamped, and it set the stage for the rapid development that the next 4 months would see.
As for me, my work was as rewarding as it was complex. My baptism was complete. I had learned so much about what not to do, and now all I had left was to do it right this time. And so I did. Now, it obviously wasn’t quite that simple. It took weeks of dedicated work to rebuild the AI. Moreover, upon returning to class and getting back in contact with Lev, more reworks would have to be done to accommodate the revamped ability system. But the AI was now more functional then it had been when the previous semester had ended, and it was in a state that allowed it to be expanded far more easily. This would be vital in the next steps.
Into the Rabbit Hole
Bugs, Bugs Everywhere!
January, 2025
January was marked primarily by a lot of bug fixes. I already mentioned how the revamped ability system causes issues, but there was so much more that still needed fixing. This would take up most of January. There were issues with targeting, issues with scoring, issues with infrastructure, The AI was even messing with the UI. Everything under the sun had an issue with it. With time, I would solve them all, but it was still a large effort.
Another issue was also rearing its ugly head for the first time. The AI was, and still is, laggy. I have, over the course of the project, had to put immense effort into preventing the AI from freezing the game for several seconds when it takes its turn. I think I did a fairly good job of this, all things considered. Comparing the AI now to then, it is night and day, even if the game does still; struggle a bit in the later levels.
Another thing also happened in January. An 8th member joined the team - Owen. Another talented individual whose contributions to the game were instrumental (literally) in the end result.
The Next Stage
February, 2025
By the end of January, the AI was working ok-ish. It was mostly bug free, or at least bug free enough to where I could work on the next stage of the AI’s development. It was time to make the AI see into the future! This would be a complex task on par with the original creation of the AI. it required a minor rework of its internal systems, and a whole bunch of new systems had to be created. And thus, the rabbit hole begins.
See, through this entire time, the AI had always been my brainchild. And it was complicated. There had been running jokes for weeks about my descent into insanity programming the AI. The other members of the team had such little idea of what was going on that when they were making Jira tasks for me, they had no clue what to call them. One that I remember very well was “Fist Fight the AI,” which became the inspiration for the title of both this devlog and the “Boxin’ Dynamics” card that appears in the final level of Sillypolitik.
But with the AI now looking multiple moves into the future, its systems were reaching the point of complexity where even I was beginning to struggle to understand what the AI was doing. The AI had always been a bit of a rabbit hole, but now it was taking its first steps towards becoming a black box. Luckily, there wasn’t much left to do with it, so we haven’t had to deal with that just yet.
Bugs 2, Electric Boogaloo
March, 2025
The revamps done during February would, of course, come with plenty of bugs. Some were simple. Others were anything but. It was yet again a process to work them all out, one exacerbated by the newfound complexity of the AI. But the AI would be completed! It would still be somewhat buggy for a few weeks, but its core systems were finished. It could now play against human players, and while maybe not challenge them, it could at least give them something interesting to play against. Once again, the AI would cause large amounts of lag. Once again, I had to spend a lot of time reworking these systems to mitigate this lag. Once again, it was worth it.
Completion
Final Stages
April, 2025
By mid April, the AI would have only a few major bugs left. Remarkably, it was one of the least buggy systems in the game, despite its complexity. This meant I would get shuffled around a bit, sent away from the AI to work on fixing other bugs. It was an odd feeling, really. When I had started with the AI, I was terrified of it. I also didn’t really want to spend half of a year of my life on it. Yet when I finally found myself on the outside of it, away from its machinations, I didn’t know what to do anymore. I missed the AI. Lev jokingly called it Stockholm Syndrome.
Still, there were things left to do. I wound up spending some time making VFX for the card class I had programmed all those months ago. It looked so different to what I had remembered it looking like. Months of reworks and additions had morphed it from the messy jumble of code it had once been to a less messy jumble of code.
In a way, I think that in my absence, the card class had experienced the same thing I had. It had been brought in, messy as can be, but we all thought it would be good enough. Then it wasn’t. But slowly, it was molded into a better version of itself that could do the tasks it needed to do in a better, more efficient way. It’s not perfect, but it’s closer. And it’s there. It works. Through months of work.
At the end of April, Sillypolitik was released. It was a buggy mess at first. Then we fixed it. And hey, we got a nice shiny award for ourselves.
The End
May, 2025
So here we are. Today is May 1st, 2025. It was a journey. One I'm sure I will never forget. Many members of our team are graduating now, Lev and Anna among them. They were the centerpiece of our team. This is in all likelihood the end of Lint Trap Studios. We’ll still make a few patch updates, I’m sure. Bugs could always use a fixin’. But largely, Sillypolitik is a complete game. My first complete game. What’s next for me? For Lev? For the rest of the team? Well, I have my own plans, and I’m sure they do too, but at the end of the day I think we will all miss this. Miss working together on Sillypolitik. I think I'll be dreaming about how to improve the AI for years to come. But god damn, am I proud of what we made. For a bunch of students who didn’t know what they were doing, we made a banger game.
Get Sillypolitik
Sillypolitik
Surrealist political card strategy
Status | Released |
Author | Lint Trap Games |
Genre | Card Game, Puzzle, Strategy |
Tags | card-battler, political, politics, Singleplayer, student, Turn-based Strategy, windows-95 |
Languages | English |
Accessibility | Interactive tutorial |
More posts
- Added Simulatorium!68 days ago
- Mac Support!73 days ago
- Bugfixes!74 days ago
- Launch! - The Lev Diary75 days ago
Leave a comment
Log in with itch.io to leave a comment.