Sabotaz Inc. Post Mortem Part III: Programming and the Rest
In this article I try to give you an inside look on how the development process of our game Sabotaz Inc. went! In the third and final part I tackle Programming.
[As posted on The Way of the Indie Game Developer]
It's been almost a year since the initial release of Sabotaz Inc. and this post was getting postponed for a crazy amount of time. eNVy softworks got through various phases during the last year which I hope to discuss in some future article but for now let me just say it was never the right time to post this article.
The right time is finally here! Why you ask? Well we are back working on fixing all small issues and adding some much needed content on Sabotaz Inc.
Now let's get started!
Welcome to my domain! It's time to talk programming! If you missed the first two parts of the post mortem check them out here and here. You can always download the latest version of the game from our GameJolt profile here.
Programming
For this project we decided to take a two programmers approach. Me and Manolis would do the job. The problem was that we never coded on the same project before. We worked together but we never coded together. The first thing we had to do was to figure out what role was better suited for each one of us. Neither of us cared what our role was going to be; making things much easier. After some thought we decided I was better suited for gameplay programming since I had more experience with mechanics while Manolis was going to program the engine(save, menus, screens, UI etc.) since he had more experience using Unity 4.6.
After that was settled we were ready to roll. I will present the events in a chronological order to help you better understand what went wrong.
Day One
The first day I started setting everything up. I made a draft background on Microsoft Paint, found a walking animation online and got ready to work. At first the background was divided into three sprites: audience, stage and wall. I don't remember why I thought that was a good idea but it obviously was not. Despite that, the background remained in three parts for the rest of this day. I was not too experienced with the way Unity handles animation but I got used to it after a while of playing around. I decided that the best way to start was by coding the AI for the presenter. I created a quasi-random pathing algorithm and made him make several stops along the way. At the time I did not have the blowpipe ready to check if the AI was good enough so after that was done I decided it was time to make the blowpipe.
At the beginning of the day Manolis started collaborating with Panos to create the main menu. He spent most of the day making text boxes to fit the missions, the news and the jokes. He was finished before the day was over.
Was it a good day? In retrospect the first day went really good for Manolis and not that good for me.
What went wrong? Since it was still the first day I had to take care of some organization matters as well. Be certain everyone was on the same page and that we were making progress. The artist were giving me assets all the time to fit in the game and see how it looks. I spent a lot of time taking care of aesthetics and adding the latest art in the game that I did not have enough time to program.
Day Two
Even though I added the blowpipe in the game the previous night things were not going as planned. My goal was to make the blowpipe follow the mouse cursor. I really underestimated this part. It took me most of the second day to finally be able to accomplish this. In all fairness that was not the only thing I did in the second day. The animations for the presenter were ready from last night so I spend a part of the day replacing the proxy with those and made some changes on the AI to change animation
when needed. That was also the day Aggelos came to help us with the music. So I also had to help record the SFX and voice tracks. After a lot of math and planning I finally found a way to make the blowpipe follow the mouse. I was also able to make it spit balls that could hit the presenter.
Manolis faced a similar problem on his front. He was trying to make the autosave function work correctly. We wanted for the players to be able to progress through multiple plays so we felt saving was really important. It had been a while since he last implemented a saving function so it took him most of the day to do it correctly.
Was it a good day? It started really bad for both of us. It was the worst day of the jam hands down. In the end of it I managed to get back on track but Manolis stayed a little behind.
What went wrong? We were a little bit out of our depth. We faced problems we did not face before and they had us occupied for a while.
Day Three
Only three problems remained to be solved from my front. The first one was to add a loading bar that would show when you could shoot again with the blowpipe. After a while I realized that synchronizing the bar with an animation wasn't going to be easy so I decided to use a two-state led instead. Green if you can shoot, yellow if you can't. The second problem was the security guard AI. It was a simple pathing algorithm and I was done really fast with that. Finally I had to face my stupidity. Deciding to not venture into 3D space I had to make a function to shrink the spitball according to perspective. It was easier than it sounds but it was totally unnecessary. I was done with the game 3-4 hours before the end of the jam. So I added the sound effects and the music.
Manolis was still fighting with the saving function and managed to beat it around noon. He started creating the random generation of the levels and fixing some other minor details of the engine. When he was done 2 hour before the end of the jam both his and my code where bugless. Then we decided to merge. Long story short, all hell broke lose...
We spent the last 2 hours of the jam debugging. We did not have time to add some features we were planning to just because of this. We uploaded just before the servers shut down.
Was it a good day? No! No! NO! NO!
What went wrong? We did not think that merging the codes would be such a big deal! Apparently we were mistaken. That was our primary mistake, but we made another one a little less severe since we worked around it. We wanted a 2D game and did not realize that does not mean we can't work on 3D space. We played smart and found a work around but it could have saved us a lot of time.
That concludes programming. As you can see if something went wrong with the project it was mostly our fault. Our errors were mostly due to inexperience with game jams in general and our swallow understanding of Unity (I was only using it for 2 months). The best thing about those errors are that we made them now. We learned from them and did not repeat them in the National Game Jam. Of course we are always getting better and game jams are the best possible way to understand your weaknesses in both personal and team level.
The Rest
After 3 days of strenuous work and an additional 7 days of promotion the results came in. Well we faired bad. We placed 625th. There was a dispute around the viability of the rating system used by GameJolt but that is not really the issue. What really matters for us is that we believe we made a good game that we are proud to call ours. By the time I wrote this article (December 2014) it had a rating of 4.7/5 out of 249 ratings on the indiesVSPewDiePie GameJolt page, 10 thousand views, 1200 downloads and 4 let's play videos. Today (September 2015) it has a rating of 4/5 out of 173 ratings on its GameJolt page, 18.4 thousand views, 7.3 thousand plays and 8 let's play videos. We also started gaining popularity and connections among other game professionals and gamers. I know those don't sound like much but we feel it is significant progress!
So what's next? I'll just talk about what's next for Sabotaz Inc. for now. Development is still in progress and we hope that it will come to a definite end by the end of this week. We are currently fixing all bugs, implementing all features we did not have time to (mostly the upgrades tree) and fixing some design issues. We are also planning on uploading the game on multiple distribution platforms alongside GameJolt keeping the price on an absolute zero for all of them.
Epilogue
Even though it took me a while to publish this I hope it helped solve some of your questions on how the development of a game jam game works in practice. I hope I helped you avoid some fatal mistakes you can easily fall for when coding under pressure.
Overall Sabotaz Inc. is one of our most valuable experiences as a team and we all both learned and earned things from it.
As I write this we are a day away from finally releasing the final version of this game to the public. It took us ten months (8 more than we anticipated) to finish those updates (which is worth an article on it's own) but we can finally move to other projects happy and with a clean conscience.
I will soon make a new post describing what changed and informing you that the final version of Sabotaz Inc. is online. Until then stay around and stay focused!
About the Author
You May Also Like