Punch a Hole – Post Mortem

It’s been over a year since Punch a Hole got released to the AppStore. It’s time for a Post Mortem!

What went right

User reception. Despite marginal sales, those who did buy the game seem to be pleased with purchase. Here’s a little screenshot I took a month after release.

Although current ratings hang around 4.5 stars, this still makes me very proud. Additionally, it appears that I’ve got myself a tiny fan base that will eagerly await my future releases ;) .

Idea. Since Portaball was heavily Portal inspired I was excited to come up with something truly original. Board-based puzzle games seem to have a lot of potential since every new puzzle piece makes it easier to create more levels. If I decided to release a level editor, I’m more than sure that brighter minds than mine would find brilliant puzzle mechanisms that would put the original levels to shame.

What’s more the board idea made Punch a Hole easy to control – it’s a great match for touch input. Swiping feels great on both iPhone and iPad, and the game can be controller with one hand on a busy commute. I personally find it crucial – the vast majority of my gaming time is spend on the iPad and I only use iPhone on the bus. On those occasions I can’t afford using two hands to control my device, so I only launch the portrait oriented games (like Polymer!)

What went okay

Graphics. I like the way Punch a Hole looks, I really do. Plenty of users seem to agree, but there is no doubt that the style is very technical, almost app like. I could outsource graphic design, but I love working in Photoshop. Crafting those UIs, pushing every single pixel to the limits and self-debating whether buttons’ corner radii should be 3 or 4 pixels – those things make me very pleased.

My problem is, I can’t see the big picture. I can’t layout things perfectly and I suck at matching colors, that’s why I always fall back to gray (not to mention that I love gray).

Even if one doesn’t like the way Punch a Hole looks, it’s a major improvement in comparison to Portaball. Arguably, I get better at my craft and hopefully my future projects will look better and better.

What went wrong

Difficulty. This is game’s biggest flaw. The difficulty is extremely uneven, some of the hardest levels are positioned somewhere in the middle of gameplay. How on earth did that happen? Well, as I’ve been testing the game for the n-th time before release I’ve managed to punch less holes in some of the levels. I’ve adjusted the stars requirements accordingly, but I didn’t bother to push those previously “easy” levels to later stages of the game. Yup.

Coming up with ideas for over 80 levels is hard enough as it is, but ordering them correctly is very laborious and requires a lot of iterations. It was something I didn’t do and that’s a lesson learned.

Sales. Here are sales number to this day:

  • Total copies sold – 928
  • Highest one day sales – 106 on launch day
  • Total revenue – $669.78

Here’s the daily spread:

Punch a Hole daily sales


Let’s face the elephant in the room, sales are disaster. Creating iOS games has to remain a hobby for me.

Final thoughts

Over last two year the AppStore has taken a huge leap forward and I believe that games like Punch a Hole will find it harder and harder to get to the top. Things got real very fast and one should notice that it’s been a while since genuinely indie game has made it to the top of the charts. There have been some smaller breakthroughs that got some popularity (e.g. 10000000), but it would require a masterpiece to make it the first place and I’m aware that’s it’s highly unlikely that I will ever make one.

I’m not bitter though! I’m going to keep making games, as for the most part the process of creating a game is the ultimate reward.

Posted in Punch a Hole | Leave a comment

The MINI experiment

Although Punch a Hole hasn’t succeed I still haven’t given up and I’m going to make one , most likely last, effort to push it a little further.

Quick sales update

Before we delve into my plan, let’s have a look on Punch a Hole latest sales numbers:

Total number of sales so far: 356

As you can see, the curve has flattened lately, right now I’m only selling 2-3 copies a day. To be honest I didn’t expect that massive reduction this quickly. It’s been less than a month and sales are just a bit bigger than those of Portaball.

The Lite version

Even though the lite model has been less significant lately, it’s been only a year since Trainyard’s tremendous success caused by a free version. Considering it’s the same genre and probably the same audience, I’ve decided it’s worth trying. Unlike Portaball Lite which shipped with the very same levels as full version, I opted for a brand new set of puzzles, thus still following the path set by Trainyard Express. The 1.1 version of Punch a Hole will feature the total of 100 levels. How many had I put into the lite version? Almost half the number – 48 to be exact. It’s a lot, but it’s important to note that levels are cheap. Seriously! The majority of game development went into design and programming, I’ve created levels in a spare time. When I’m focused, it takes about 5 to 10 minutes to come up with an idea for a unique puzzle. Additionally I was forced to include some very primitive levels, in order to explain the game’s mechanics, making it not that difficult to create the remaining ones.

The catch? It’s not Punch a Hole Light, it’s Punch a Hole MINI.

The MINI version

I didn’t want to blatantly use the exact same gameplay. I figured it’s a good occasion to introduce some kind of limitations, but make them creative enough, to seem like a feature. So I’ve made the board smaller:

MINI board

Simple reduction from 6×7 to 5×6 not only made the play-field smaller, but also it flipped the orientation of “central row/column” of tiles. Since many puzzles are designed with symmetry in mind, it changed the most common direction of striking and thus solving puzzles. At least I hope it did since I mostly made this up right here on the spot ;)

What’s equally important is branding. There is plethora of “lite” apps in the App Store and while it’s easy to figure out that a given app is free, it also makes it, at least for me, a second class citizen. This is not the case for games like Quell and already mentioned Trainyard Express. Their names don’t feel like “just a demo version of our main app, you’d better go get the paid one already”. I wanted my game to belong to this elite club and thus I’ve set on the MINI suffix. It fits perfectly with the shrunk board theme and, despite not making a correct phrase, it’s still somehow connected with the title (one can punch a mini hole for sure).

Minor differences

I’ve gotten rid of one feature to encourage people to get the full version – the achievements. Achievements in Punch a Hole are mostly connected to the game progress (though it’s going to get better 1.1). It didn’t make much sense to implement a couple of them, just for the sake of it. After all it’s free version, one can’t have everything :) . However, both the MINI and full version are going to have Game Center Leaderboards. They will rank both Collected Stars and Completed Levels. It’s going to get much more competitive and will allow me to easily track how people are doing in general.

What’s next

I’m going to release both MINI and 1.1 version on the same day. I’m going to leave it mostly on its own, apart from one more round of spam addressed to review sites. If the game succeeds I suppose I’ll make another update or two. If it does not however, I’ll abandon it and move onto some next projects.

Posted in Punch a Hole | Leave a comment

The first week

Punch a Hole has been available for week now, it’s high time I wrote a little summary of how the game has been doing and what I think about it.


As I submitted Punch a Hole to the App Store I set release date late in future. Unlike Portaball, which released as soon as it got approved, I wanted to make a little more buzz ahead of release. It turned out that Punch a Hole has been approved on August 29, merely 5 days after submission. This meant that Apple has greatly improved their reviewing efficiency, but also I just had two days to prepare for the release on Thursday. Why so quickly? I figured it wouldn’t make any difference if I took 2 or 9 days to show the game around, especially with no marketing budget and limited appeal of screenshots and trailer. Additionally, I wanted the game out. It’s quite a struggle to wait patiently when the game could be winning all the awards already ;)

Since I had promo codes available before release, it was a great opportunity to send e-mails to all the major review sites. I’ve sent two dozens of promo codes and I’ve started a contest on Touch Arcade forums.

The launch day

As usual, Punch a Hole launched in New Zealand at first. The game quickly got its thread on TA forums, with little interest however. It was cool that both Pocket Gamer and Touch Arcade found Punch a Hole worth mentioning in their launching tonight sections. I’ve also gotten huge support from Trainyard creator Matt Rix. It was heartwarming to see him enjoying the game, not to mention the buzz he generated.

The following days

At the very beginning, it was really good. The first site to review Punch a Hole was App-Score. The score of 10/10 was the first one in site’s history. It felt great! I’ve gathered some user reviews with AppReviewsFinder and it resulted in 6 five stars reviews. The MajicRank showed raising trend in ranks. At this point it occurred to me that Punch a Hole may succeed. Oh how naive I was.

Touch Arcade is the biggest site out there and it’s sort of indie dev’s dream. Naturally, I was really hoping to get noticed. Bam! On September 2nd, Touch Arcade reviewed Punch a hole. It got over 30 retweets and… the results were unnoticeable. Sure, the review wasn’t praising. It pointed out few drawbacks that I agree with. Should the game got 5 star review, it would probably helped much more. But for me, it dispelled the myth of TA review being that important. It is considered true that Apple uses TA as a reference when they choose which app to feature. However, the review in itself won’t make a game successful overnight, at least in my case.

The numbers

Unless I make millions, my intention is to be completely clear as to how Punch a Hole sales. Here are the numbers:

  • total downloads: 269
  • sales: 249
  • promo codes sent: 37
  • promo codes redeemed: 20

As you can see, it sucks. After the initial hype I was genuinely disappointed. The good thing is, I mostly got over it.

What’s next

What am I’m going to do now? To be honest, I’m hoping for tomorrow to be featured for New&Noteworthy by Apple. I honestly think that Punch a Hole is good enough to appear over there.

Regardless of the verdict, I’ve started working on the Lite version. I’m going to do this the Trainyard Express way, i.e. I’m going to create 40 or 60 completely different levels, letting everyone get some magic for free. I’ll also create a new level set for the original version, probably with a new game element.

I’m not sure what to do with a little problematic difficulty curve. I’ve heard that the game is too easy for too long, but this is something I can’t change easily now. Even though the user base is small, it wouldn’t feel right to throw away some levels and put in new ones instead. That’s something I have to think about.

tl;dr: I was hyped then sad, sales sucked, moving on.

Posted in Uncategorized | 3 Comments


In this post I’m going to show steps that I went through when I was designing the Select Level screen. It discusses the value of iteration, how it affects design and how it helps to improve game experience.

List vs grid

As I’ve started working on level selection screens I had to decide which layout should I use. Initially, I wanted to make scrollable list, just like in Portaball or Trainyard. The problem with lists is, it doesn’t provide full disclosure at quick glance. Recognizing which levels are completed and which are not requires an action i.e. moving finger across the screen. A rule of thumb for data presentation is to make it accessible and clear instantly, thus I started opting for a grid layout. I quickly launched most popular games out there and all the big guys (Angry Birds, Cut the Rope) are using grid layout. Finally, Punch a Hole uses board as main game element. Utilizing similar concept for other screens felt natural.

First Iteration

Originally Punch a Hole didn’t include stars. Once you’ve finished level you were done so there were supposed to be 3 kinds of level state – completed, unlocked and locked. I color-coded those states with typical notation: bright color means good, dark color means bad, and color in the middle means undecided. To make it even more obvious I included a legend. Then I had this great idea – let the Set Selection present information about progress as well! Each Set rectangle would be a shrunk version of its respective levels colors. As you can see in the picture, the shape of “white”, “gray” and “black” elements matches both in small and large version.

First iteration (ignore repeating level numbers)

Second Iteration

As usual, I wasn’t entirely happy with the design. It didn’t look that great on the screen of iPhone. Additionally, the legend was bugging me. If an interface element requires description – it’s wrong. I ditched it and replaced squares with little circles – I wanted to make design cleaner and hoped it would somehow be more understandable. I’ve highlighted unlocked levels and removed “soon” set. Although many games contain “more levels soon” and I still intend to add more level sets in future, this additional element was useless.

Second iteration

Back to squares, now with some color

Five minutes after I’ve carefully positioned all the circles I knew I didn’t like it. I returned to squares. It looked good, but I still wasn’t sure if color-coding was obvious. It is considered good practice to put emphasis on elements that are more likely to be used. Unlocked levels were such elements and they were presented in dull gray. I decided it’s high time I made a breakthrough and I added yellow! I’ve also started experimenting with ticks to mark completed levels

Third and fourth iterations

Making it more tappable

The problem with previous concepts was they didn’t feel interactive. I wanted to change it and make levels in a tile-like shape. They were also separated to provide clear distinction – I didn’t want users to focus on their tap accuracy. Previous designs required players to pay at least some attention to notice faint lines of grid.

A couple of captions appeared – set numbers and “# puzzles solved – # puzzles to go”. The last one was actually mostly intended as space filler (there goes my no clutter rule), but it was performing some function so I accepted it mentally. Finally, I added a lock to symbolize locked levels.

Fifth iteration

Finalizing design

After I’ve implemented the fifth iteration into the game I gave it time to cool off. As days passed I was more and more sure that it sucked. Moreover, it was this time when I came up with idea of stars I was relieved to be able to dump that design and make some major rebuild. Here’s the final, in-game version:

Final iteration

As you can see I’ve taken “tapability” to the next level. I made each level and set a distinct button. I’ve made stars prominent part of the button and I’m replacing them with lock on locked level, additionally making button stuck pressed.

The most visible change is adding more colors. I love gray. Gray is easy, gray is safe. If I were better designer I would use different colors more often, but unfortunately I’m not a better designer. However, for Punch a Hole I’ve already decided to use colorful balls, wooden frame and green felt. It made me a bit more confident and thus the final design actually makes use of this theme. The wooden bar works as a separation between sets and levels.

Were all these stages worth wasting time?

Short answer: yes.

Long answer: experienced artist would make it much faster and much better, but taking my time allowed me to see what’s working and what is not. It helped me to establish interface theme for the whole game. It made me a bit more experienced.

And it was fun!

Posted in Punch a Hole | Leave a comment

Portaball – Post Mortem

It’s been almost 11 months since original release of Portaball. Since I do not plan to put into it any additional development effort, it’s about time I summed things up. This isn’t typical post mortem as you can enjoy on Gamasutra. It’s much shorter and probably not as good read, but hopefully still worth at least skimming.

What went right

Idea. Even tough Portaball is heavily inspired by Portal and I’ve essentially ripped off the main gameplay mechanics, I still think that Portaball is unique puzzle game in iOS environment. Having done my first pair of portals in one of the very first builds of the game and watching how the little ball gets teleported made yell “This is so awesome!”. There is still huge potential in this idea and, to be honest, I still consider doing Portaball 2 someday.

Learning. I jumped into developing Portaball after merely one month of learning Objective-C/Cocoa. iPhone and MacBook made me excited for programming all over again and this rush of joy transformed into Portaball. I learned how to stick to a project from the beginning to the end, I became confident in my programming and I’ve also discovered Stack Overflow. Is Portaball’s source code worth sharing? No. It’s a terrible mess. Was it a good learning experience? Definitely. I actually consider taking up a real life project as one of the best way to become familiar with specific language, or programming in general.

What went okay

Getting Noticed. Portaball was lucky enough to get featured in New&Noteworthy sections in Germany and Austria as well as Game Center Game feature in couple of European countries. Actually, the majority of sales occurred in these periods. Portaball got a couple of nice reviews on the internet, the most praising one at AppSafari. The gaping hole was TouchArcade review, but I’m okay with that. Portaball just wasn’t good enough.

Four days of free. A couple of months ago I’ve decided to conduct a small experiment – I lowered Portaball’s price to Free. Initially, I’ve contacted Free App a Day since I saw way too many top free apps that skyrocketed due to FAAD. It turned out that it costs a few thousand dollars to apply and I simply didn’t want to pay more than I’ve earned. I went guerrilla and did nothing but making a post on TouchArcade forums. I don’t know how much it helped but Portaball’s download numbers jumped:

Portaball Lite download numbers

These aren’t big, but for a brief moment Portaball was in top 50 Free Apps in China. As soon as the free period ended sales increased marginally (by 7-10 copies a week) comparing to the pre-promotion days.

Graphics. Even though some claim that Portaball is beautiful, I disagree, it’s less than average. The “artistic” intention was to keep things simple and lab-clean, just like the original Portal. Fact is, Portaball is way too gray, a few drops of color here and there could make significant difference and make certain objects more distinguishable. Moreover, I was just getting started with Photoshop and the outcome was less than optimal. I’m sure that these days I could make Portaball much prettier, but still it would be subpar to work of any decent designer.

What went wrong

Difficulty. Portaball is very difficult. I’ve only beta-tested it on my cousin and, being quite smart, he got through the game pretty quickly. It turned out though that this isn’t the case for the majority of population. The difficulty level of puzzles went up to fast, many puzzled were cluttered on purpose, in order to distract the player and make level artificially more difficult. After creating few initial levels my design process was focused on finding some neat tricks that could be performed with available elements. I constantly kept trying to find more and more mysterious way things could work. It wasn’t until I’ve played Trainyard that I hopefully learned how things should be done. Another big mistake was very rough and static tutorial:

Static tutorial picture

This was changed in 1.2 version – it featured much better, dynamic tutorial that explained every single new gameplay element. Obviously, it couldn’t bring back players that were initially thrown away by insufficient teaching experience.


  • Portaball was bought little over 4.000 times
  • Throughout free period Portaball was downloaded over 56.000 times
  • Highest one day sales – 160 copies on launch day
Posted in Portaball | 2 Comments

Hi there!

Now that I’ve finally got my own place on the internet, it’s about time I started blogging. There are plenty of coding blogs out there so this isn’t going to be another one. I’d rather keep things nontechnical, more of a behind a curtain approach of iOS developing.

I’ve started iOS developing a little over a year ago and after one month of toying with Objective-C and doing very basic iPhone apps I’ve decided that it’s time to create something bigger. As a result Portaball was born. For the following months I was working on many different projects, including Neuroshima Hex Puzzle, and a couple of in-house enterprise apps.

I’m currently 22, I study Mechanical Engineering in Warsaw. I’m an avid runner, and quite a fanboy for Apple.

Posted in Uncategorized | Leave a comment