Thursday, December 23, 2010

Three months of Portaballing

It's been three months since Portaball got released. I figured it's a good time to make a summary of this period. To begin with, I've got mixed feelings regarding Portaball's success. When I jumped into the iPhone development and started working on Portaball, I was hoping to sell 1000 copies. Considering that I didn't have any experience in serious programming not to mention fact that I've never finished any programming project it was quite an optimistic projection.

Soon after release it turned out I underestimated my own piece of work. Portaball is actually quite good game. AppStore reviewers seem to like it a lot, currently averaging at 4.5 stars. Review sites also seem to enjoy Portaball. Grades aren't that great, however it's mostly due to the fact that they're based on 1.0 and 1.1 versions of Portaball. Obviously it's my problem, I should have made Portaball better at the very beginning. However, if it wasn't for customers' feedback I would have had absolutely no idea how to improve. It's a lesson learned: make your beta tests group larger than 1 friend ;)

As of today, 2970 people bought Portaball (including promo codes). It's quite disappointing. I think the problem was lack of advertising. At the very beginning I've decided I didn't want to spend any money, plus, any ad campaign would require a lot of funding to even be noticeable. Making threads on forums and throwing promo codes at people does little as well. However, my largest sorrow was getting ignored by TouchArcade. I'm aware of fact that TA rarely reviews puzzle games and Portaball ain't that awesome, but I believe that getting noticed by this site could have a great influence.

As you can see on the graph, the sales were inconsistent. Every time the sales rose, it was due to being featured by Apple. Moreover, getting featured is the only way to actually sell any significant amounts. Those flat weeks mean selling a dozen copies a day at most.

The highest Portaball ever got was 8th in Top Paid in Poland. Portaball was reviewed by the biggest Polish Apple-oriented website - Here's the historic moment:

Unfortunately Polish market is relatively small, not to mention that Portaball was in top 25 only for two days. Still, I'm happy for this achievement. I'll keep this picture as a happy reminder.

Summing up, AppStore is hard. I think it's fair to say that indies days are gone. Sure, it still happens that an excellent game developer appears and makes some serious impact, Matt Rix is great example. The thing is, iPhone gaming has gotten much more serious with titles like Real Racing, Infinity Blade and all the EA's stuff. It's almost impossible to compete with their resources. There is one thing that indie devs can do: make your game as great, as polished, as fascinating, as fun to play as possible. That's what it's always been about anyway!

Tuesday, November 30, 2010

Portaball 1.2.1 goes live!

It's not a well-known fact, but Apple allows developers to apply for an expedited review, should there be a valid reason. Since it wasn't me who changed iOS API, I didn't hesitate to do so. It worked! I've received nice e-mail from review team that they've made 'one-time exception' and Portaball was rushed into review. 

As a result, Portaball 1.2.1 version is now available and hopefully fixes Game Center problems.

Thursday, November 25, 2010

Game Center problems - Update 1.2.1 submitted to review...

As it turned out, Apple has changed the way Game Center authenticates user in iOS 4.2. Due to this fact it is now only possible to submit score and achievements on fresh run of Portaball. It means that game must be closed from multitask menu and opened again in order for Game Center to work.

This is a really troubling problem. I'm really sorry I haven't checked release notes on Dev Beta of iOS 4.2, I should have done that. I've just submitted Portaball 1.2.1 which fixes this issue. Hopefully situation like this will never happen again.

Portaball 1.2 goes live!

Tonight Portaball 1.2 finally got approved! As a result it is now available for download:

Portaball on iTunes

As well as upgrading full version, I've made Portaball Lite to version 1.1 adding tutorials and 5 more levels from original version. You can get it in AppStore as well:

Portaball Lite on iTunes

Wednesday, November 17, 2010

Portaball 1.2 submitted to review!

I expected it to take me two weeks and here we are, right on time. Just to highlight it one more time, here is 'What's new' list for Portaball 1.2:

  • 30 new levels! 
  • new tutorial system 
  • ball movement indicator 
  • new leaderboard 
  • 9 new achievements

I've also improved few other things as well. Both restart and exit button will now require confirmation, you will no longer accidentally ruin your almost finished level. Few new sound effects are introduced, this should make Portaball a little bit more alive. Finally, I've fixed little bug that under very rare circumstances would cause crash.

I'm happy for this new update. I personally think it's great improvement for Portaball, it will surely make it much better!

Wednesday, November 3, 2010

Portaball 1.2 - new features incoming!

Portaball 1.2 update is now in development! Here's the list of so far planned features:

  1. 30 new levels - this one is great, all fresh new levels for free, making it total 80 levels available! With new puzzles come new types of elements.
  2. Interactive tutorial - this will make jumping into Portaball much easier. A follow trough, step by step guide will show the basics of Portaball. 
  3. Ball movement indicator - When paused, a motion blur 'tail' will appear behind ball. This help as a reminder of ball's movement. You will no longer wonder where the ball was moving.
  4. New leaderboard - compete with players worldwide on getting least portals in new set of levels
  5. New achievements - for every achievement junkie out there

I'm spending all my free time working on this update. However, there is still a lot to do. I estimate I should be done in two weeks, don't forget it will take some time for apple to review.

All in all, it's great to work on Portaball again!

Tuesday, November 2, 2010

Level designing

It's been two weeks since I've started designing new levels for next version of Portaball. Till today I've managed to invent 22 puzzles, my goal is 30. It's surprising how hard it is to come up with something really difficult. So far there has been only few levels that made me astonished with my creativity ;). I'm still planning to make some really hard levels, I've gotten few requests for those. Yet again, I can't just sit down and draw something extraordinary, it doesn't work this way. The great idea comes up unexpectedly, it strikes with its ingeniousness. Sadly it doesn't happen as often as I want it to.

Every single level is hand drawn on a piece of paper. It allows me to alter it a little bit if needed. Here's a picture of one of the new levels:

As you can see it's just a simple layout, not a masterpiece. However, it is deadly useful. I often draw numbers on walls, they correspond to each portal I have to place in game, in order to finish level. Sometimes it's really helpful, especially when I'm trying to complete level I've designed few days back and I have completely no idea how to solve it. At least I know it's a good level!

Here's how the same level looks in game (rescaled Retina version - not so crispy):

Saturday, October 30, 2010

Friday, October 29, 2010

First month of Portaball

It's one month already! I'm satisfied with results so far. My realistic goal of Portaball sales was crossing 1000 copies in couple of months. It turned out Portaball was downloaded 1352 times in those 30 days. I think it's a success. Obviously, I dreamed of achieving mighty 1,000,000 but I still got time for that. Some day, for sure!

I'm more than pleased to notice that those who play Portaball, seem to enjoy it. Portaball was reviewed by three quite big sites and received satisfying grades. Plenty of AppStore reviews are also praising. As of today, current version of Portaball is marked as 5 stars in UK AppStore and I'm not using any 'If you like it, please award 5 stars' pop-up, although I'm probably going to.

As of recently increased Game Center activity, those numbers have also improved. So far, 21 players got less than 1000 portals in 'Least Portals' challenge, apparently it's getting some momentum. However, I'm going to add a less demanding achievement for this one. The easiest one is currently 600 portals, only 13 players achieved it so far. Adding a 1200 one would pull some attraction towards this leaderboard.

Looking forward, I've started working on new update. It will feature new levels, I plan to create 30 of them. The thing is, it's really hard to come up with something difficult and challenging. I've got 11 so far, I'll keep going.

Saturday, October 23, 2010

Portaball Lite coming soon

Portaball Lite has been waiting for review for 4 days now. I expect it to get approved during upcoming week. This version contains first 15 levels of game, thus allowing everyone to give Portaball a try. Obviously, Lite version is going to be free and will not contain any ads.

As for icon, I didn't want to put a 'LITE' caption on it, this would ruin consistency of already not outstanding icon. I realized I should try something similar, maintaing the original spirt, but displaying lack of a key element. I stripped down the blueish glow. It conveys a message that only full version of Portaball shines with intriguing light that makes you wanna play it ;)

Portaball featured as Game Center game in 4 countries!

Yesterday, October 22, on the weekly AppStore lists refreshment Portaball got featured as Game Center game in following countries:

  • Australia
  • France
  • New Zealand
  • United Kingdom
It's a pleasure to get noticed. The funny thing is it happened day after posting thoughts on Game Center stats. I hope it's going to grab more attention to Portaball and will allow to populate leaderboard with really good scores.

Thursday, October 21, 2010

On Game Center and difficulty

It's been almost a month since initial release of Portaball. It didn't conquer AppStore, but it's got good reviews and couple of fans as well. What I find really intriguing is its Game Center activity. There are currently 745 scores in Least Portals leaderboard. Portaball is sending total number of portals on each game launch. That's my way of guaranteeing that score gets uploaded, one can never rely on network connection.

The problem is out of those 745 only 47 are under 2500 portals (the initial value) which makes it roughly 6% of total user base (game center enabled user base to be exact). This begs the question: what causes such a low number? What comes to mind first is: few people bother completing those levels again - game is just boring to replay all over again. I see point in that.

There is just one thing that bugs me: there are currently two players that got better result in 'Least Portals' than me. That is correct. My best test run was 379 portals. They made it 370 and 373 respectively. Get Portaball and check for yourself ;). They've beaten game dev in his own game. This is quite fascinating! It makes me wonder how can I improve myself, where can I find those best paths to get better, even though I've completed each level tens of times. This means, that there is fun and thrill in playing Portaball again, though it's quite hard to discove. I guess it requires some kind of perfectionist nature, willingness to improve oneself in every possible way.

The other possibility of weak Game Center attendance is level of difficulty of Portaball. Is Portaball an easy game? I have absolutely no idea. Obviously, for me it's easy, I designed every single level. Test results on my friends introduced various feedback. Some found it relatively easy, they've burned over 40 levels in one hour. The other group struggled with some of the first levels. What might cause that is lack of step-by-step tutorial. On the other hand I've designed every introductory level with a self explaining puzzle. Right after starting the ball it shows how different elements behave. Player's only task is to get the idea. Some levels are more demanding. Level 4 is good example ('speedy thing goes in, speedy thing goes out'). However, once player understands that it's all about acceleration, it becomes trivial. Getting that acceleration thingy might be hard, however, I believe it's one of the crucial and most rewarding moment ('OH! So that's what it's about! I'm genius!')

To sum up: if you struggle with Portaball, keep playing. The satisfaction is well worth it. If you find Portaball to easy, give 'Least Portals' a try. Getting on top and competing with others, that's a real challenge.

Monday, October 18, 2010

Portaball downloaded over 1000 times!

As of today, Portaball has been downloaded over 1000 times. It's not exactly a huge success, nonetheless it's something worth noting. To push those number a little further, I'm planning to release Lite version, with 15 levels for free for everyone.

Tuesday, October 12, 2010

Portaball 1.1 - now in the AppStore!

Portaball 1.1 has just been approved and is now available in the AppStore, make sure to check it out!

Apparently posting about slow review time does work.

Portaball reviews

Since Apple Review Team is taking their time to test Portaball 1.1 thoroughly (it's even taking more time than original release), I've decided to show off with some reviews Portaball received lately:

appolicious - 'Beautiful Portaball iPhone game could leave you puzzled'

148apps - 'Puzzle games are usually hit or miss. Portaball is a fun, albeit graphically sparce, hit.'

gamesuncovered - 'Smartly presented, but Portaball needs a couple of tweaks to its gameplay to get it where it should be.'

Sunday, October 3, 2010

New and Noteworthy in Germany and Austria!

I've recently noticed greatly increased activity in downloads in these countries. As it turned out, Portaball has been featured in 'New and Noteworthy' category. I'm grateful for recognition, it's huge success (I'm making a note here)!

Update 1.1 submitted to review

After one week's worth of work Portaball v 1.1 is finally done. It's great update to Portaball, adding many interesting features. Here's the outline of what you will see in 'What's New in this Version':

'Game Center integration!

- compete globally for best score in 'least portals' challenge

Least portals challenge
- finish Portaball with as little portals as possible

- prove your friends that you've mastered Portaball

Sound effects
- enjoy audio indication of your actions

Super tip: you can (and you should) spawn portals when paused'

As you can see, a lot of improvements have been implemented. I'm personally most thrilled with social features of this version. It's simply cool to fight for a better place in leaderboard, avoiding every single unnecessary portal in 'least portals' challenge. And for those that are not that ambitious, a variety of achievements from trivial ones ('complete level 1 in normal gameplay') through really hard ones. A few not standard achievements found their way into the list as well. I'm not going to spoil the fun, you'll have to check yourself!

Monday, September 27, 2010

Upcoming improvements

Portaball has been out for a couple of days now. It's not extremely popular, it's hard to say it's even popular ;) Tomorrow it will most likely reach 300 copies sold. Not too much, considering I spent last three days pushing my marketing skills to the limit. I don't give up though. I received a lot of positive feedback, I'm grateful!

One of the biggest requested feature was sound effects. I've spent many hours digging trough free sfx libraries with little success. Nothing seems to fit my needs, but I keep going. I added few test samples to project and it made some difference.

What's more? Least portals challenge! This one is gonna take some thinking especially on later levels. I haven't tried to do my best yet, this will be fun! During development I wasn't creating levels with 'golden paths' in mind, I was just randomly checking if level is completable.

With this challenge comes another big hit: Game Center integration! Those having Game Center account will be able to compete globally on Least Portals leaderboard. You will finally be able to show all your friends who's genuine mastermind. Additionally Portaball will receive achievements enabling yet another way to distinguish yourself.

I'm really looking forward to releasing this update!

Thursday, September 23, 2010

Portaball. Now in the AppStore!

After quick review process (little over 9 days) Portaball is now on the AppStore! It's great news that my first project got approved so relatively fast and without any rejections. Needless to say, I'm really looking forward to getting opinions, suggestions or even bug reports, though I hope there won't be much in latter category!

iTunes link:
iTunesPreview link (you can watch in browser):

Wednesday, September 22, 2010

Portaball is in review!

Nine days waiting for review, but finally the process has begun. Fingers crossed for quick acceptance!

Friday, September 17, 2010

On Portaball name

There is no denial that Portaball is inspired by Valve's Portal. As a matter of fact the development codename for Portaball was... Portals. Just a placeholder, nonetheless I would have been more than pleased to release final product under this name.

The problem is, Portal is trademarked. It's not much of rocket science to understand that branding product in similar branch would definitely be copyright infringement. Sure, should I ever create an actual teleportation device, Portal name would be more than appropriate. However, since original application contains phrases like 'Electronic game software' or 'Video game software' it doesn't require a law degree to acknowledge that Portals name is bad idea.

Having faced the problem I made a list of hypothetical titles. I'm not going to publish the whole set, just be aware that there were some names I wasn't exactly proud of (Portalino). Some were going too far away from the heritage of Valve's game or were just lame (Teleporters). Then Portaball popped into my mind.

At first I wasn't exactly pleased. I spent some time analyzing it and I became aware of how comprehensive it is. Here's the list of my conclusions:

  • it resembles the idea of teleportation and portals in acceptable manner
  • it contains word ball, which obviously is one of game's main elements
  • it can be separated into 'port a ball' which implies that one can teleport a ball 
  • it's similar to word portable, thus magnifying the intention of ball's mobility

All in all, I realized Portaball is not that bad after all. My only concern is if it's catchy enough. Still, its uniqueness and diversity make it worth.

Monday, September 13, 2010

Binary uploaded.

Title says it all, hopefully this week Portaball will get approved!

Fixing bugs, brutal way

It's a good thing to wait few hours before releasing.

Portaball is based on Chimpunk, open source, free, fast and amazing physics engine. In the game it's mostly used for collisions detection and as a source for physics objects (walls, ball etc.).
Today however, I noticed that, under certain conditions, it's impossible to complete levels that contain, as I refer to it, "cut-walls". These come in 5 flavors:

They weren't originally intended to be included in game. Having ran out of ideas for new levels I decided to give it a try. Calculating the correct position for wall on a grid is trivial, school math basically. Here's the line of the code:

cutShape = cpSegmentShapeNew(body, cpv(-kGridSize/2,-kGridSize/2+kBallRadius*M_SQRT2),
cpv(+kGridSize/2-kBallRadius*M_SQRT2,+kGridSize/2), 0.0f);

(kGridSize is constant containing dimension of grid and is equal to 40, kBallRadius is self-explanatory)

As a result we obtain a wall of width 0 and position in game's space in this way:

So far everything seemed perfect. Having it tested many times in game it appeared it's not that simple. After bouncing off ball was slightly misaligned, not a big deal after one bounce, sad truth is this minor offset was cumulative. Therefore after springing back enough times the misalignment was not only visible, but also it prevented ball from triggering mini-buttons.

There were two  main reasons for this. First one is limited precision. Real life sqrt(2) is far more precise than M_SQRT2, however, this difference should be insignificant. The other and hopefully main reason was they way in which collisions are being calculated. In Portaball, physics engine is stimulated every 1/60th of a second. As a result: if on a given step ball is just before "cut-wall" on next step it might overlap with wall. The collision is calculated and Chipmunk is, if I've understood documentation correctly, trying to push ball of way to prevent this overlapping. I figured this was my trouble. 

Sure, for a typical physics based game it's not a problem. Objects are flying around and their position has fractional part, but in Portaball everything is designed to follow strict guidelines. Ball always moves in straight lines and crosses center of a given grid. I had a few ideas how to force ball to move by MY rules. The first and obviously naive way was to round ball's position every step. This method not only would interfere too much with Chipmunk, but also it would cause even more troubles.

The solution I went along with was rounding ball's position and velocity just on collision with "cut-wall". Simple rounding wasn't enough. The problematic offset would often be larger than 1. Here's the final implementation:

float x,y,vx,vy;
x=ball->body->p.x; y =vx=round(vx); vy=round(vy);
idSize); y=kGridSize*0.5*round(y*2/kG
x=kGridSize*0.5*round(x*2/kG rridSize); ball->body->v.x=vx; ball->body->v.y=vy;

Ball must be positioned in the middle of a grid. To achieve this several steps must be made. Current misaligned position of ball (for instance 222.34) is divided by kGridSize=40. The result (5.5585) is doubled (11.117). If it wasn't for doubling, ball couldn't be properly positioned in the middle of a grid. Rounded result (11) is again multiplied by kGridSize. As a result we obtain proper (220) positioning of ball (middle of 6th grid in given row/column). Velocities are also rounded, otherwise after bounce they often would have very slightly changed values: 80.00007 instead of 80.0. Better safe than sorry.

This code provides satisfactory results and moreover, it simply works.

Sunday, September 12, 2010

Portaball is finished.

Every goal on TODO list is completed. Game is done.

Development begun on July 25, ended September 12. It sums up to 49 days of work. Including time spent on learning Objective-C and Cocoa my iPhone development adventure took 72 days. Still, it's pretty fast.
It can't be denied, iPhone is an amazing platform to work on.

Tomorrow brings in another milestone, AppStore submission. I've already passed iTunes validation on Xcode and I hope review team won't struggle to approve Portaball. It's really cool game after all!

Thursday, September 9, 2010

Portaball development is nearing it's conclusion!

Work is still in progress, here is TODO list as of today:
  • 6 more levels
  • settings panel
  • levels' descriptions
  • rearrangement of levels by difficulty
I think I am mostly done with icon. Here it is respectively in 512 px, 114 px and 57 px: