The Past and Present of PSIBO
My first game, PSIBO, just released on the eShop for Nintendo Wii U! Because of this, I’ve decided to go over the history of the game, how it came to be on the Nintendo Wii U, the shortcomings of the current version, and how those are going to be fixed in the future.
I started development of PSIBO in 2012. Yes, that’s right. 2012. Before I get into it, I should mention that this post serves the seconday purpose of explaining why it’s so hard to answer “How long did it take you to make this?”
The Original PSIBO
2012 was my senior year in high school. I was taking AP Computer Science, a class which focused on learning a bit past the basics of Java, and use it to aid the learning of how computers & programming languages in general worked. Going into this class, my knowledge of programming was not zero. I had dabbled in a more simple form of Java, some Action Script 3, and some programming languages designed solely for the purpose of learning how to code. Enough to maybe carry me through the first week of class. Even so, something about that class made my brain kick in. Programming clicked, and while learning it still wasn’t easy, when I did learn something it stuck with me and drove me to learn more.
So I learned and practiced outside of class, and quickly pulled ahead of most of the other students. I gained enough knowledge that I surpassed much of what the class was trying to teach.
Why are you bragging about high school, I though you were going to talk about PSIBO?!
I’m not bragging, I’m just explaining how I got to the point where I made PSIBO.
Well get there faster!
Basically, I stopped working on my actual assignments to learn more about how games were programmed. My teacher allowed me to do this because he could clearly see that I had been learning the same concepts, but in a different way. This lead to making many prototype “games” that allowed me to figure out what worked and what didn’t. These included a robot-filled side scrolling platformer, a topdown walking simulator where cats bounced around the screen, and… Well that’s it. It wasn’t much, they weren’t complete games, but it was enough that I felt I could then create something complete. It would be small, but I could do it. I had been kicking around the idea in my head for a while: it would be a combination of Pong, Space Invaders, and Breakout. I had the perfect name for the game too, I would call it…
It was a bad title.
But it was the game that eventually became PSIBO. The concept was simple, but gameplay complex. You take the paddle, ball, and bricks of Breakout, the enemy paddle of Pong, and replace the ball-going-past-you penalty with spawning Space Invaders. It took a couple months to make (keep in mind I only really worked on it in class) but eventually it was complete! Even though it wasn’t chock-full of features, it was complete, written from scratch, without using any external libraries of frameworks. Knowing I had finished it, and hearing that the teacher had to stop the other students from playing it so they would do work, it felt really good.
The title of the game, by the way, did eventually become PSIBO. It was a toss-up between:
BOPSI in particular still makes me chuckle.
PSIBO on mobile devices was an ill-fated attempt at making an ad-monetized game, to potentially bring in a few bucks here and there. I had stopped programming/game development after PSIBO until late 2014/early 2015 (I had been going to college for something completely different). At first I started somewhere comfortable, messing around with different Java gamedev frameworks. It was okay for getting back into programming, but for someone starting new, it wasn’t conducive to making a quality product.
Eventually, I found Unity. Unity (and C#) was fairly easy to learn how to make things work, and I liked it a lot. It’s powerful, simple, and unfortunately, makes it way too easy for anybody to create a game for just about any platform. I say that’s unfortunate because I, like many other people new to game development, thought “I should definitely make & monetize a game!”
And a mobile game, at that.
With only a few months of Unity experience, I decided that a mobile recreation of PSIBO would be the best course to follow. This caused many issues, in fact, the whole process of even getting the game onto mobile platforms was a nightmare. I am not going to talk about that aspect here, though. I am just going to outline some of my key issues with mobile PSIBO:
Touch Screen. I had recreated a challenging, fast-paced game for touch-screen devices. It was uncomfortable and, as with many mobile games, your fingers cover up the game while playing, making it more difficult.
Poor Optimization. I was not well-versed enough to understand proper optimization. The game’s performance is TERRIBLE, even on some fairly powerful devices. Unfortunately, I did not know this until later, as the Android tablet I had used to test the game, while isn’t the best tablet in general, is strangely good at dealing with the kinds of issues the game suffered from.
Ads. I hate ads, and because I hate ads, I tried to make them as polite as possible, apologizing to the user whenever one needed to play. This didn’t really make a difference, and the system I had for when ads needed to play could’ve been much better.
Levels. This is potentially my least favorite part of what PSIBO became. My initial thought was “well every mobile game I see has a bunch of levels thrown in, so let’s do that with PSIBO”. The problem is that PSIBO is a game that came from classic arcade games, where the point was a high score, not to figure out a puzzle. I was able to get creative with the levels that are in there, and some of the people that played it really loved them, but I do not. I feel like the main attraction to PSIBO should be it’s endless, score-based mode.
I do not mean to be dour about mobile PSIBO. The fact is, at the time, I was actually quite happy to, once again, have completed something. I did see these flaws, but much was learned from this project, and I’m glad that I did it.
Also, I’m pretty sure PSIBO is still available for Android devices, but it is not representative of the product on the Wii U. I don’t recommend downloading it. I have, however, thought of some potential ways to make a more mobile-friendly PSIBO, with less intrusive means of monetization. Perhaps one day I will create that.
PSIBO Wii U (A.K.A. PSIBO 1.0.0)
Not long after the release of Mobile PSIBO, mid-July of 2015, I was contacted by the founder of Nami Tentou, Christopher Arnold. He wanted to start publishing games, and offered for PSIBO to be the first by getting it on the Wii U. I, of course, accepted. Not just because it was a great opportunity, but due to certain circumstances (which I will not go into here) I could not have done it by myself.
I knew that if I was going to have PSIBO out on actual gaming platforms, I was going to have to change it. I changed the aesthetic, making it neon, different colors, and semi-3D. I decided to keep the levels, but I wanted it to be clear that the main game is the endless mode. Part of the way I did that, other than putting the menu option at the top of the list, is I beefed up the entire mode. I did this by
A. Making the playing field large enough to fit a 16:9 display, and
B. Adding tons of options to change how the gamemode works.
I also made major optimizations to it.
Instead of starting from scratch, I took the mobile version and started shaping that into something better. This was a terrible mistake, but I will get to that later. I did this in the interest of time. I wasn’t sure when we were going to be able to put it out, so I got it done as soon as possible. In fact, the build I had done in September was not too different from the build I had in November, and that build was not far off from the December build. And that build? Nearly identical to 1.0.0, the build we just released on the console (October 2016).
If it was that close, why did it take so long to release?
The answer to that is a bit complicated, and furthermore, I can’t really answer it. I’m under NDA with Nintendo, which I’m pretty sure doesn’t cover everything, but just to be safe I’ll briefly talk about it in the vaguest of terms: Due to the way the game was configured, we had to wait on something from Nintendo in order to submit it. That took a while, and once it came around we then spent a long time submitting. That’s all I’m really willing (and able!) to disclose, but know it’s been a painful, unexpected waiting period.
So what were you doing all that time?
Other than working on fixes here and there, outside aspects of the game (such as eShop art), small projects, and dealing with personal life stuff (which 2016 has been full of), I have been slowly working on the 2.0.0 “patch”. I put the word “patch” in quotes because it’s not really an update to the existing game.
As I mentioned earlier, PSIBO was built from the mobile version, and that has been the root of all of my problems. When I built the mobile version, I didn’t know what I was doing, and I wasn’t making it in such a way that it could be expanded on in the future. It resulted in a lot of bad code being laid on top of older, worse code in order to make the game work. This wasn’t too bad on me, as I had a good understanding of how this bad code worked, but on the occasions that I had to hand it off to Christopher to add some Wii U related functionality/fixes, he had to work even harder, and even still things would end up breaking.
The game being expanded from something not designed to expand is the reason why I was unable to add certain features, why the current version has some framerate dips despite my extensive optimizations, and why the game even launched with broken audio controls (which I didn’t find out about until the day before launch, and it KILLS me inside). The only way to fix these things is to re-build the game from scratch. And that’s what I’m doing with 2.0.0, starting with a clean slate and recreating the game in a way that works.
Note: PSIBO, in it’s current state, DOES work. You can play it just fine (and I recommend you do!). I worked hard to make it functional, but I am now working harder to make it even better.