My original intent was to write a blog post every day during the jam, but unfortunately I was so involved in improving the game I just couldn’t find the time. Instead I will just give you the whole story in one shot. So here begins the story of MagBall.
For those who don’t know, the Ouya is a new Android based game console that was recently funded on Kickstarter. The main tenant of the Ouya is to be a completely open platform – anyone can make games or software for it and anyone with the console can use it for whatever they like. The hardware is not locked down like the 360 or PS3, so anyone could create their own custom software for it if they so please.
The Create Game Jam is being put on by both Ouya and Kill Screen magazine. The rules are simple, create a fun game in 10 days and you can win a plethora of prizes ranging from an Ouya development console up to $20,000! Needless to say, the prizes are very enticing for a 10 day contest.
I started with nothing except for a simple idea. I wanted to take advantage of the fact that you have four controllers hooked up to a single TV screen. Many Xbox games today are limited to online-only multiplayer which is great, but it is not the same experience as when everyone was gathered around the same screen to play games like Mario Kart or Goldeneye. Everything is filtered through the internet. So my goal was to create something that fostered friendly competition among four people in the same room.
Off of the idea of same-screen multiplayer I decided that I didn’t want to create something that has been done over and over again…so I skipped over the dual stick shooters and side-scrolling platformers. I am not much of an artist so I also wanted something that could involve a fairly simple theme. I also wanted to utilize the physical controller as much as possible to really differentiate it from a purely mobile designed game.
After a bit of brainstorming I ended up coming up with an idea that I wanted to base my game on: Magnetism. From that I decided to allow each player to control the push/pull of their magnetic field. Then it seemed quite obvious to make a sports type game where you have to push a ball around. The theme of robots seemed to be a nice fit as robots are much simpler to create art for than humanoid characters. It would also be easier to allow for customization/replaceable parts in the future. You can see my initial idea page to the left. Please excuse my terrible handwriting.
Originally I was planning on using Futile and doing a 2D game, but given I was already using Unity I decided to go for 3D. It would be my first actual foray into 3D, other than when I played around with OpenGL back in high school. After a few hours I had a working prototype with some boxes pushing around a sphere. It seemed pretty fun as long as I could refine the controls and physics.
In my first design for the game I put the goals on the floor, with a little lip the ball had to go over. This proved problematic as the ball would often not go over the edge, or you would end up launching it across the map. At this point I decided to move the goals to the walls. In the actual game I will probably support multiple goal types, but for these 10 days it was just beyond the scope.
For me one of the hardest parts of the jam was actually figuring out where to spend my time. Between graphics, AI, controls, physics, music and sound effects it was a difficult balance. If I do another jam I will probably look for a partner who can take over on the graphical aspects. But I did end up doing a little bit of modeling in blender, and I don’t think it ended up being too bad for such a short period. UV mapping proved to be a bit too much for me to handle, so I resorted to using some cell shading effects in the final game to give it a more unique look.
So what went wrong? Many things. The Unity plugin for Ouya is in very beta state and had some issues. It was even updated once during the competition. I ran into problems upgrading to the new version, in getting Xbox controller mappings working in the simulator, and getting controllers working on actual Android hardware. Luckily I had two people in the Ouya forums to actually test my game on Ouya hardware and see that it works.
I also implemented Futile for the games 2D UI elements. This went alright until the very last day when I did some reorganization of my scenes. I put the Futile script on the OuyaGameObject which unfortunately caused the controllers to stop working, but only when playing on the actual device. So I did not find out till a few hours later when I built for my Nexus. The Game proceeded to not work and I spent around 2 hours fiddling around until I found the culprit.
There is also still a lingering issue. Input is currently passed from the Java ODK to Unity via JSON snippets…which is terrible for performance, every single move of an analogue stick and button press is passing a string from Java to C#. I found it to be fine on my Nexus 7 with one controller, but I am afraid it may cause issues for four player games on the Ouya. I left the option in there anyways, hopefully the judges can at least play a few minutes before the game starts lagging out.
The last big issue was AI and making a decent opponent to play against. I just ran out of time for this because of the time spent fixing the controller issues. Right now the AI is a simple state machine, but since the AI team members can’t communicate yet they end up doing the same thing most of the time, unless you move the ball around a bit to get one in a different state. This will be fixed in the full game of course, but for the jam I mostly wanted to focus on the multiplayer aspect. But the AI is there…just not all there.
One more thing, my YouTube video. In the last few hours I was fixing bugs and other small issues I ended up having about an hour to get a video together. Seemed doable, but I forgot that my Macbook Air was low on SSD space (less than 2GB free…) This caused my computer to essentially freeze up while trying to import footage onto an external drive so I ended up taking video straight from the camera directly on to YouTube. I was hoping to have something a little better, but at least it shows off the gameplay.
Overall I am pretty happy with what I accomplished over the period. I hope the judges like my game and can see the potential in the idea.
As for the game itself, its future is on hold at the moment while I do some client work to pay the bills. If it becomes a finalist and wins me an Ouya dev console I will definitely try to get it ready for launch day. If it wins a monetary prize I will surely be doing that. If it doesn’t get anywhere then I will probably still complete the game at some point, but with much lower priority. Not having test hardware makes development really difficult as the feedback loop is so slow.
Thanks for reading, and don’t forget to support my game by sharing its page: Magball!