Puppy in Bubble: Winning by shipping.
How publishing our game won us 3rd place in Microsoft Imagine Cup world finals.
I never thought of myself working on building a game. Yes I used to be a hardcore gamer back in the days but since I got into computer science, I was dragged immediately into web and mobile.
Working on a game was an eye opener for me, a new experience that needs a new mindset, and even a new way of development other than the server/client side I am always used to in web and mobile. It is one of the best experiences I ever had in my life.
It all started when my friend Ahmed Abd El Hay called me and asked me to be the team’s mentor in Imagine Cup. He said they are building a 2D Physics game called “Puppy in Bubble”, the idea of the game is about a naughty puppy called “Spout” that gets lost from his owner “Adam” and using the different game elements you have to bring Spout back to Adam by putting the “Puppy in Bubble”.
A first reaction from me was “Do I really want to do this?” and “What will I add to a team that’s building something in an area I never worked on?”. It is very challenging yet the curiosity and desire to do something new plus the fact that I liked the team members when I met them made me accept the challenge.
Puppy in bubble 1.0
This was the first version of the game, it had around 10–15 levels and only two elements to navigate the bubble, the fan, and the vacuum cleaner. Also this was the old Adam who looked more like a gas station worker more than a kid.
The game also had a very new weird feature, you can record your celebration after you win a level, and after doing this you will hear your recorded voice celebrating after you win every level!
Reading the Imagine Cup guidelines we knew we can participate in two competitions, the Egypt’s local games that qualifies to the pan Arab semi finals which qualifies to the world finals, and the online judging that also qualifies to the world finals directly.
Congratulations, you are not qualified!
We started with the Egypt competition, as always I said the first round of the locals in Egypt is always easy, most of the teams don’t even have prototype and it is just ideas on paper. We entered this round and we passed easily, and qualified to the next round which we also passed easily, qualifying to Egypt’s finals.
So, this was the deal, there are 3 competitions in Egypt’s local finals, Games, Innovation, and Citizenship. In order to go to the Pan Arab semi finals we had to win in the games category, and the judges must select us as Egypt’s national winner who will play in the Arabs semi finals. After an amazing presentation and having published version 1.0 on Windows Phone store we managed to win the Games national finals, but we were not selected as Egypt national winner and we were not qualified to the Pan Arab semifinals.
Back to square one
We only had one option left, the online judging round which is very tough as you compete with thousands of teams to get a place among the top 100 semifinalists!
We applied with this proposal and a quick and dirty made video that showed the game play. We passed this round and became among the top 100 teams in games category.
Store photos and docs online. Access them from any PC, Mac or phone. Create and work together on Word, Excel or…onedrive.live.com
On Wednesday, 4th of June. I was in Costa, with Sherif El Mahdi at 12 AM when I got a call from Gafar, the academic evangelist in Microsoft Egypt who is responsible for Imagine Cup. Gafar said “Congratulations to puppy in bubble! You made it to the worldwide finals”!!!
A new opportunity
I was overwhelmed and very happy, and it was the moment I knew we are up to something, I said to myself the easy part is over, now it is time to go the extra mile and compete globally. I had an internal challenge with myself that I don’t want this team to fall in the same mistakes I did when I qualified to the world finals and I didn't have a mentor to tell me about it. That’s when I decided to heavily step in and take responsibility of getting the team there.
Avoiding the trap
I met the team asking them what’s next? they came up with this long list (The first one means fixing/improving the levels)
- Tazbeet el levels: Making the levels better and improve their quality.
- Power ups: Adding powerups to allow players to purchase them and pass the tough levels.
- Score System: Building a better more engaging scoring system to evaluate players.
- SM Integration: Social Media Integration with Facebook and twitter (Sharing score, level progress, inviting friends…etc)
- Spout Store: Add the ability to buy food to Spout (Our Dog)
- Bubble: I don’t remember what was that :-)
- Theme 2: The first theme of the game was that Spout is lost at home, we have plans for further themes like the circus and the haunted home. Every theme means new game elements and new navigators as well as challenges.
- Virtual Pet: Some of the team members wanted to make Spout a virtual pet that gets hungry if the player didn't play for long, and get tired if the player played a lot..etc
- Theme 3: The haunted home.
- Hint System: We wanted to have a better hinting system to introduce the player to the new elements of the game.
- Leader boards
Build half a product, not a half-ass product.
Build half a product, not a half-ass product. — 37 Signals
I knew we will never finish all of this on time of the world finals which is 6–7 weeks from now, especially that the holy month of Ramadan was coming and we will have to fast for 16 hours everyday not eating or drinking, plus because of Ramadan the traffic rush hour become longer and more crowded.
After long discussions with the team not believing that we have to cut this list in half (We have all been there stuffing features), we ended up with what’s marked on the picture, all must go in parallel with the ART which our great designer Nehal will work on.
Real artists ship
Real artists ship — Steve Jobs
Part inside me was saying we will not finish all of this on time, so we have to prioritize very well and most importantly, we have to ship the game to the store before the competition.
While the competition rules do not require you to publish your app before the world finals, I insisted on publishing it for the following reasons
- It is a way to force ourselves to prioritize consciously and not working on multiple things at the same time which always results in screwing up everything else (Half assed products).
- It is always a positive sign to the judges if you published your app. It is a sign of self confidence and trust in what you built.
- Imagine Cup is a world festival, you don’t know who you gonna meet and because the competition this year was in Microsoft HQ. I knew there will be many high profile people and this started when they announced the judges which included XBox director, and other prominent judges who started gaming companies or worked on some very famous games.
- You don’t want to miss the PR hype around the competition and the press there.
Let’s Rock & Roll
Saying all of this, this night, I opened our Asana project and started listing tasks and sub projects on it and I sent this email to the team.
The 50 levels
One of the things we learned from the first version, is that 20 levels are not enough to have a balanced game play. So the team decided that we will build 50 levels with different difficulties to have a good player progress and have the ability to introduce different game elements, navigators and have enough levels for the player to enjoy them.
To also add a nice touch to the levels, we decided to make them in 5 level groups, every level group contains a group of levels with an average difficulty harder than the previous group.
We also decided that level 50 open a windows that will ask the player to sketch her own level and upload it, and if she wins enough votes, we will implement it and add it to our game!
Honestly, I was very skeptical — because of my ignorance of game development — we will finish on time, but thanks to Unity, I discovered that building game levels is a piece of cake, the hard part is in sketching them on paper and deciding which levels will be where.
The team started sketching the levels and they ended up with 49 levels.
On June 30th, the team gave me the 49 levels to test them, I didn't sleep that day playing the game, but I noticed a very important problem!
One of the best skills you get working at Microsoft — 30th of June was my last day there — is knowing how to make your life easier using Excel.
I opened a new excel file with all the levels from 1 to 49, and I started giving every level two evaluations (Very easy, Easy, Medium, Hard, Very Hard). The two evaluations one for the ease of winning the level, and the other was on the ease of collecting the 3 bones inside the level.
I wasn't very happy, when I charted the levels difficulty in terms of reaching Adam and winning the level — not collecting the 3 bones — I ended up with this chart.
As you see, majority of the levels are very easy, but the important question is: How do we want the level difficulty to be?
I worked on another excel sheet, describing the level of difficulty we need for every level of the 50. I ended up with this chart.
I sent both charts to the team, along with the explanation to what I did, and I gave them the following notes and action items.
Back again, we started working on making the levels harder, and having a more balanced game play till we finally had 52 levels, with 5 level groups, and much more balanced game play. Of course we had some few bugs, but these were minor issues for now.
The new elements
Along with the 52 levels, we wanted to introduce more game elements other than the fan, and the vacuum cleaner. We ended up splitting the main game elements in two categories
Navigators are used to navigate the bubble through the different levels to reach Adam & collect the bones.
Fan: Blows air to move the bubble away.
Rotating Fan: A fan that can change its direction by swiping it.
Vacuum Cleaner: Sucks air and attracts the bubble towards it.
Soap Gun: Launches new bubbles that carry the bubble up.
Extra Bubble: Launches a new bubble that can take Spout and move him up.
Soap Surface: Slides the bubble on a specific surface without bursting it
Cook: Blows air that moves the bubble up.
Kitchen Hood: Does the same thing as the vacuum cleaner, but in the Kitchen.
Active enemies move during the level and try to burst the bubble.
The Scoring System
We were confused between two different main scoring systems (Not including the bonus score)
- Seeing how long the user spent in every level, and according to that we do some sort of mathematical calculation to it.
- Calculate the average time spent for every level and give the user score according to how far they are from that timing.
There was a huge split inside the team, and I saw both systems are complicated and will have many corner cases. I suggested a very simple scoring system which is calculating the inverse of the number of milliseconds the player spent in every level and multiplying that by 10,000 to have an integer number. The team agreed to that.
We then added two more elements to the scoring system
- Bonus Score: The bonus score is calculated based on how many bones you collected in the level, the more bones you collect, the much higher the bonus score you receive.
- Badges: Since we have 5 level groups, we decided that we will add Gold, Silver, and Bronze badge whenever a player finishes a level group. The badge is determined based on the number of levels finished with all the three bones collected.
I know it is late to work on the game UX after the levels! But it is never too late.
Our UX focus was mainly on improving things, not building new experiences from scratch because there is no time for that. We focused on
The Hinting System
Our users suffered in version 1.0 from the text hinting system. Many of them didn't see it and since our game targets kids, they may not even understand it. We decided to switch from a textual based hints, to graphical ones.
The hints would show whenever we introduced a new controller to move the bubble, like the soap gun, and whenever we wanted to prompt the player to take action like recording the celebration, or sharing to Facebook.
We introduced two new screens that show up whenever the player looses.
In version 1.0 recording the celebration was in the main menu of the game, even before selecting the level. Almost 99% of the users didn't see it or understand it. We decided to change that and make it after the player wins the first level of the game, moving it to transition menu.
Right Vs. Left Hand
Another feedback we got from version 1.0 was when players played with the index finger. Sometimes they have to tap on a game element like the vacuum cleaner but their index finger would hide it with the bubble, resulting in bursting the bubble and losing the level. We decided to implement a new feature, that allows players to change the game flow from left to right to right to left and vise-versa, giving space for more players of different kinds to play the game.
Version 1.0 didn't have settings. In V2.0 we gave players the ability to change the celebration, mute game sounds, and reset their level progress.
Sound Effects and Game Music
This was also a new part of user experience for me, sound is the second most important element in game after graphics, changing our soundtrack surprisingly resulted in making users feel the game is now faster while we actually changed nothing about its speed!
This part has 15% of the Imagine Cup judging criteria, to win you must have a solid game, with a solid business model. Our business model was to get players to buy in app items though in app purchase like
We introduced 3 powerups that players can buy to pass tough levels inside the game
- Magnet: The magnet attracts the bubble to bones. Allowing players collect them easier.
- Double Score: Double Score.
- Destroy: Gives players the ability to destroy our active enemies like the Rocket Launcher, The kid with the BoGo stick, and the Jumping Cat.
We made spout health decreases the more you play levels whether you lost or won. Once his health drops to zero you have to buy him food to be able to continue playing.
We made our social integration with Facebook on different stages, these stages are:
- Sharing Score.
- Inviting friends.
- Sharing Celebration.
- Personalized leaderboards and rankings.
Time is up!
Working on all of this, day and night, in Ramadan, before and after Iftar we reached Friday, 29th of June with a good working game, no presentation, plus it is the last work day during the week which means if we didn't publish now, the game will not be accepted before Monday or Tuesday which is very high risk given the fact we are travelling to US on Monday, presenting on Tuesday, and the flight takes 24 hours! Yes, 24 hours.
That’s when I, with the team decided the following
- Ahmed Najeeb, our presenter will stop touching the code. It is all presentation from now.
- We didn't finish the social integration, we could only authenticate and share level progress which didn't work all the time. We decided to publish with that.
- We had some glitches in some of the levels, sometimes the cat fell on the floor and stopped jumping. We will publish with that.
- Switching the camera from left to right to right to left resulted in some glitches especially when the player lose the level (a purple square appeared). We will publish with that.
- We didn't add in app purchase to allow the player to buy powerups and health, which means if Spout health reached zero the player won’t be able to continue playing the game. The decision for this was to never drop the number of coins the player had below 100, which is the price of the smallest health unit which increases Spout health by 25%. And no in app purchase for now.
- We had to print our printouts (Business cards, Flyer, & Rollup) which should have our download link that we don’t know yet! That’s when I came up with the idea to add the link download.puppyinbubble.com and redirect that to the game download link after it is published. Less risky.
- A bug appeared: Some of the buttons were replaced with a white placeholder in their place not knowing the reason to this.
Modifying the game to meet all the new requirements and publish it very quickly. We failed to finish all the changes by Friday, so we had to keep fixing the bugs while working on the presentation.
The Presentation Slides
We wanted to make sure that our presentation
- Covers all the judging criteria points.
- Has our identity and game theme.
- FUN. We are gamers.
We kept iterating through different versions of the presentation, writing different scripts for every slide till we reached our final version.
Off to US.
On Monday, 28th of June, the day of traveling, I submitted the game to the Windows Phone Store praying it gets published by the time we arrive to US.
Landing in Seattle
On Tuesday, 29th we arrived to Seattle and checked in at the student dorms of University of Washington. The first thing I did was checking the game and I found it is not published. It was neither accepted nor rejected.
We went to attend the general briefing session, and the game competition briefing session. We knew that our presentation was the next day at 11AM which is good as we have plenty of time in the morning.
During the general briefing session, a program manager from the Windows App Studio team spoke and announced some gifts for all the attendees. Right after the presentation I went to him and asked him to help us know why the game is not published till now and we have our presentation tomorrow. He told me to send him an email with the publisher ID and recommended removing Russia, South Korea, and Brazil from the game countries as they delay publishing because of some legal requirerments that has to be met before publishing a game on these stores.
10 minutes later, refreshing the Windows Phone Store, I found the game passed and the update is now LIVE on the store! That’s one great happy news.
Practice Makes Perfect
Finishing our presentation slides, Najeeb started rehearsals, but we had a big time problem, and it was mainly because of the demo.
The total presentation plus demo time was 10 minutes, we could finish everything we want to say in 5–6 minutes, but the demo took much longer than the remaining time.
The reason to this is we wanted to have a convincing demo scenario that shows
- Different elements and features of the game.
- The game balance.
We also wanted to end on a high note so we decided to split the demo in two parts during different times of the presentation. We also decided to demo using the demo camera in the presentation hall to show the hand grip on the device and get the judges more engaged instead of doing a screencast to what’s showing on the phone screen.
The demo scenario was in two parts
Demo 1 will show
- The main menu.
- The levels menu.
- Level one & the hints.
- The transition menu with the score and bonus.
- Recording celebration.
- Level 2 till we hear the recorded celebration play after winning it.
It took 2 minutes.
This was the real challenge, demo 2 would show
- A more advanced level (17).
- The right left hand feature.
- The soap gun.
- Another advanced level to show all the active enemies (32).
- Powerups (Destroy).
- A level from group 4 to show the kitchen elements and the rotating fan.
While the demo looks straightforward, it was very challenging to win level 17 on time. Doing over 30 trials on this level, Walid & Abdelhay who were practicing for the demo couldn't win it in the time frame we had. We suggested if Walid couldn't win it after X times (say 4) he will switch to the next part in the demo joking with Najeeb blaming him for sketching such a hard level ☺. Some of the team members disagreed, but it was our only option.
Now everything is in place, and we are ready!
The Big Day
On the presentation day, we woke up and had our breakfast leaving Najeeb in the room to practice alone before coming to us. Up to this moment we didn't practice answering questions and how we are going to coordinate this in front of the judges. I wanted to do so but it was very hard because of time limits…
We went to setup our equipment and we found a huge problem, the demo camera we will use to demo the game was not showing the colors properly!
We asked for a technician and it took around 4 minutes from our 10 minutes setup time. We also discovered that there is one projector that displays both screens, the laptop, and the demo camera. I asked the technician how to switch between them and he said you have to press this button for the computer, and this button for the camera! We also had two sound outputs one from the computer for the presentation sound effects and one from the mobile to play the game sound effects.
The colors were fixed, but we had no time left and we must start the presentation now + I will be the technician switching the cameras for the team!
Najeeb started, and after starting he discovered the mouse he uses for moving the slides is not working in presenter mode! I took the mouse from him and started changing the slides using the laptop keyboard.
It was very challenging given we have certain moments in the presentation where I had to make sure I sync the fun parts with him very carefully or it won’t be funny and it will be silly. Plus my task of switching the cameras between demos and presentation & the fear of pressing a wrong button in this huge dashboard.
Demo two didn't go on time, and it took Walid longer time to pass level 17 and he insisted on doing so, Najeeb then was moving forward with the presentation till at some moment, I looked at the timer and discovered we only have one minute left. That’s when I rushed Najeeb by flipping the slides very quickly (He understood and started speaking quickly) till we finally finished ONE second before the beep.
The nice thing is we finished with the last fun part where Spout barks refusing to leave the hall ☺. And it didn’t appear we were in rush. Everything looked perfect.
All the questions were as expected, some of them were answered by directly showing game elements, others we said we will show in the hands on judging the next day, overall it went great! We also had one of the judges downloaded the game during our presentation and was playing it! When asked if he has any questions? He answered he is busy playing the game ☺.
We finished, I went outside the hall jumping of happiness. Everything went as expected and we managed to do everything right with such technical and time difficulties.
Hands on Judging
This night, we got the judges feedback to consider it during the hands on judging the next day. You can see how the first judge liked the demo although it was very challenging, also the fourth judge noticed how well we recovered from the equipment failure and managed to do a great presentation.
We extracted from this
- More game balancing: Show them tomorrow the level balance graph.
- Larger Screens: Ready! We were originally testing on a 10 inch Samsung tablet.
- Business Model: We prepared some answers but this part is always debatable (There is no business model till you succeed in the market).
- Harder Levels: We prepared a list of hard levels to give them to this judge the next day.
Overall the hands on judging went very smooth, and because we already have our game on the store, most of the judges already had it on their phones ;)
Puppy in Bubble Video
Back to Egypt
- Puppy In Bubble on Android & iOS.
- A startup? Maybe.
One more thing…
I just want to thank some people who without them none of this would’ve happened
- My mom, dad, and sisters. I can’t describe how supportive they are!
- My driver, Magdy. He is been through a lot in last few days before our travel. He also kept listening to me ranting about the problems we have. Thank you Magdy.
- Mohamed Gafar. I traveled with Gafar in 2011, but I rediscovered him in this trip. You don’t feel his presence and you highly feel his impact. He makes everything easier and makes sure that everything is facilitated to the team to focus on our mission. Thank you G.
I hope you enjoyed this very long read, and if you have any feedback or questions don’t hesitate to mention @thinknship or @mostafanageeb