The Portable Podcast #2

I recorded another episode of The Portable Podcast. We talk about Jiggle Balls HD, the Sept. 1st Apple event, and adopting new technologies.  Thanks again to Carter for having me on.  Here’s the link:

http://theportablegamer.com/2010/08/portable-podcast-episode-48/

Seinfeld… really???

An interesting review from my friends at AppVader.  Thanks guys… I think! :)

http://appvader.com/2010/08/jiggle-balls-hd

Also, we’re still in the #1 position on the New & Noteworthy… woohoo!  I also recorded a podcast with The Portable Gamer guys last nite.  It will be out on Tuesday.  I’ll post the link here.

New & Noteworthy

Jiggle Balls HD ended up in the iPad Entertainment “New & Noteworthy” section yesterday.

This is the first time any of our apps have been featured by Apple. I’m not sure what to expect, but I’ve heard that getting featured in these sections aren’t that helpful, since they are only visible in the iTunes App Store and not the device App Store. And I’m not sure how I got here. Is it automated or did some Apple employee put me there? I wish I knew. But… happy to get the exposure. I’ll keep you posted.

Indie Poll Position: The Results Show

Last week I conducted a survey of the independent developers that read the idevblogaday feed.  47 of you responded.  The results were interesting and pretty much inline with what I was thinking they would be.  That is… you can’t quite make a living off of being an independent developer just yet.

Here’s the results:

How long have you been an app store independent developer?

Over 60% of us have been doing this for at least 6 months. 2/3rds of those for 1 to 2 years. So in App Store time frame, the majority of us are old timers. :)

Which best describes your independent developer status?

Almost half are doing this as a part-time job.  The other half is closely split between full-time and hobbyist.

What is your age?

More than half are between the ages of 20-30.  I’m definitely on the extreme old side of the scale. :(

How many hours a week do you individually spend working on your apps?

This was pretty split across the board with the 1-5, 5-10, 10-20, and 20-40 hour ranges.  6 people actually work over 40 hours a week and 1 person less than 1 hour.

How many people are on your team?

About 70% of us are doing this on our own.  No one had over 5 people on their team.  So truly an independent response.

How many apps do you have in the app store?

A little over a third of us have 2-5 apps in the store.  But surprisingly, almost another third have no apps in the store yet.  No one had over 20 apps (so no sweat shops reporting in).

How much have you made on your most successful PAY app?

Except for those who don’t have any pay apps in the store, the next highest group was those that have made under $1,000.  Here’s where the disparity (and luck of the draw in the app store) comes in.  Because we then have several groups with the same percentage who made $1,000-$5,000, $20,000-$50,000, $50,000-$100,000, and >$100,000.

How many downloads does your most successful FREE app have?

40% of us don’t have free apps (surprising, since it seems to be one of the best marketing tools IMHO).  What’s interesting is that 10% have 200,000-500,000 downloads and another 10% have over >$500,000 downloads.  Imagine what you could do if you can turn 10% of those into real sales?  I attribute some of these high numbers to the free app a day sites (at least that’s been my experience).

What is your average income for all your apps per day?

Now this is downright depressing.  Almost half of us make less than $10 a day doing this.  Again, the disparity kicks in because we then have developers making $100-$500 at the next highest level.  There are 2 lucky ones making over $500 a day.

What is the highest app store overall ranking of your most successful PAY app?

Beside those that don’t have a pay app or didn’t know what their ranking was, a lot of us have moved up to the top 50 at some point. 1 of you reached #1 (congrats!).

What is the highest app store overall ranking of your most successful FREE app?

Again, of those that don’t have a free app or don’t know what their ranking is, the results are about the same.  However 3 of you did make it to #1.

How many submissions (updates included) have you made to the app store?

This was pretty evenly split with the same amount having 0, 1-5, 5-10, 10-20, and 20-30 app submissions.

How many of those submissions have been rejected?

It seems that over half of us have receive at least 1 rejection.  But that means half of us have never been rejected (myself included — well… there was that one time when they were picking teams for dodge ball…)

How much do you spend on marketing per year?

Indies are cheap!  Over 80% of us spend under $200 a year for marketing.  Of course there is 7% spending over $2,500.  Maybe they’re the ones making over $100,000 a year on their apps?

Do you use the Apple Forums?

65% of us use the Apple Forums.  I usually try to make a daily visit (mostly to the Distribution/App Store section) to see the status of the App Store and any issues that might be affecting sales.

Have you been featured by Apple?

3/4ths of us have never been featured by Apple.  But hey… that means Apple has featured 1/4th of the indies, not bad.

Do you get more than 5 support questions a week?

3/4ths of us don’t get asked a lot of support questions.  I’m personally adding a feedback button in my latest app to see if that helps.

What are your most successful marketing tools (pick all that apply)?

Word of mouth seems to be the biggest marketing tool.  This might be one good reason to give the free app a day sites a try.

Do you develop for other platforms beside iOS?

Over half of us don’t develop for other platforms.  If Adobe had been allowed to get their iPhone targeting platform out there, I would guess this would be higher (at least that was the path I was gonna take to get to Android — or should I say from Android back to the iPhone).

Do you really own a legitimate copy of Photoshop?

Half of us don’t have Photoshop (or at least a legitimate copy… I guess I worded it wrong).  So what is everyone using?  I use GIMP myself.  Except that OpenFeint, Apple, and probably most marketing firms request PSD files, so it might be worth the investment.

So… pretty interesting results.  I think it shows that there is a huge disparity in the App Store.  Some people are making money.  Most are not.  I’m still taking my chances that someday I’ll get recognized.  But until then… I gotta get off to my “real” job.

Next week I’ll get back to writing something technical.  I’ve been really busy getting all the marketing stuff together for Jiggle Balls HD for the iPad.  Hopefully by this time next week it’ll be in the App Store.  Until then…

Jiggle Balls HD Video

BUY IT

Indie Poll Position

This week my iDevBlogADay entry is going to be written by you, via answering some polls.  The success of this article will be dependent on the number of responses we get. The more independent developers that answer the polls, the more interesting and helpful this will be. Next week I’ll publish the results and write a real blog entry and not weasel out of it by creating some silly poll disguised as a blog post. :)

I wanted to do this because I think many of us indies compare ourselves to the stories we hear about of an independent making it big and making millions of dollars (and granted some of you on the iDevBlogADay list may be some of those people).  But overall, I’m curious as to how everyone is doing.  Sometimes I get discouraged (even though I keep telling myself this is just a hobby) when an app I spend months on doesn’t do as well as I had hoped.  Hopefully these questions will enlighten all of us.  I’m hoping it doesn’t discourage me further, but instead confirms what I already believe to be true.

I’ll post my answers at the end of this article.  Yours will be completely anonymous and lumped in with everyone elses.  No information outside what is visible in this blog entry will be shared with anyone. I would hope we would all be willing to share with the community, but it’s understandable if you don’t want to.


[poll id="3"]


[poll id="4"]


[poll id="21"]


[poll id="5"]


[poll id="6"]


[poll id="7"]


[poll id="8"]


[poll id="9"]


[poll id="10"]


[poll id="11"]


[poll id="12"]


[poll id="13"]


[poll id="14"]


[poll id="15"]


[poll id="16"]


[poll id="17"]


[poll id="18"]


[poll id="19"]


[poll id="20"]


[poll id="22"]


My answers:

How long have you been an app store independent developer? 1 -2 years
Which best describes your independent developer status? Hobbyist
What is your age? 45 – 50
How many hours a week to you individually spend working on your apps? 5 – 10
How many people are on your team? 1
How many apps do you have in the app store? 5 – 10
How much have you made on your most successful pay app? $10,000 – $20,000
How many downloads does your most successful FREE app have? 200,000 – 500,000
What is your average income for all your apps per day? $10 – $20
What is the highest app store overall ranking of your most successful pay app? I don’t know
What is the highest app store overall ranking of your most successful free app? 10 – 50
How many submissions (updates included) have you made to the app store? 20 – 30
How many of those submissions have been rejected? 0
How much do you spend on marketing per year? $100 – $200
Do you use the Apple Forums? Yes
Have you ever been feature by Apple? No
Do you get more than 5 support questions a week? No
What are your most successful marketing tools (pick all that apply)? App Review Sites, Word of mouth, Search words in app store
Do you develop for other platforms beside iOS? No
Do you really own a legitimate copy of Photoshop? Ummm… ya, sure

After writing this entry I came across this post.

http://techcrunch.com/2010/05/16/iphone-app-sales-exposed

Kind of confirms what I believed to be true. There is a 10% group of developers doing really well and able to make a living doing this. The rest of us need to keep our day jobs!

Freeze Frame: Shoop, shoop, doodle, oodle, oop

While working on Jiggle Balls HD for the iPad I’ve come across several things I didn’t experience while writing iPhone/iPod Touch games.  Specifically having to do with UIPopoverControllers and orientation handling.  Today I’m gonna discuss an issue I had with popovers, scrollviews, and how they can FREEZE up your main animation loop (I’ll leave the orientation stuff for a later post).  I’m gonna include a link to a sample app I sent to Apple to demonstrate the problem.

Disclaimer: I have not upgraded my iPad to 3.2.1, so this problem could entirely be fixed on that version (let me know).  I’m waiting to upgrade until I finish development and do my first round of beta-testing.

Starting with iOS3.1 the preferred method for creating an animation loop is CADisplayLink (over using an NSTimer).  This became apparent to me when I started testing Tramp Stamp on an iPhone 3GS and the framerate seemed jittery to me (my iPod Touch did not exhibit the same behavior).  CADisplayLink allows you to synch your animation loop to the refresh rate of the display.  You set it up as follows:

displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(drawView:)];
[displayLink setFrameInterval:1];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

Your animation loop (drawView) will now be called every screen refresh (60 times a second).  This solved my jittery problems and things became incredibly smooth on a 3GS device.

Then I started working on Jiggle Balls HD for the iPad.  It has a main view that allows you to drop different types of balls into the arena.  On top of that is a floating toolbar with icons that bring up the specific menus.  These menus are UIPopoverControllers (introduced on the iPad).  These are dialogs that display in front of your content and usually have an indicator pointing to the button or region that caused them to pop-up.  Tapping outside the content area of the popover causes it to dismiss.  The popover can contain any UI widget you want.  In my case I wanted a UIPickerView to select sound-effect for the bouncing balls.  Here’s what it looks like:

jbhd1

Everything worked great!  Except that I noticed 2 issues.

1) My drawView loop wasn’t getting called whenever I scrolled the picker.  As soon as I released the picker, my animation would start again.

2) The picker would occasionally get stuck between values and the didSelectRow delegate method would never get called.

Argh!  I downloaded several other iPad apps and noticed the same behavior, so I considered releasing like this.  But it really bothered me.  Then I stumbled across this:

[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

If you ALSO add your display link to the NSRunLoopCommonModes run loop, in addition to NSDefaultRunLoopMode, your drawView loop will continue to get called during the picker scrolling.  However… this now made the picker REALLY erratic.  The scrolling would barely work (no bounciness) and it was easy to get stuck in between items.  Yuck!

What turned out to be the problem?  The CADisplayLink frame interval.  If I switched it to 2 while the popover was displayed, everything worked great.  So now when I display my popover I decrease the framerate (which also means advancing all the world objects to compensate) and when the popover is dismissed I reset it back.  Not 100% happy with it but that’s why I filed a bug report with Apple.

This wouldn’t be a big deal if it was just the UIPickerView that was having issues.  However, I also bring up a UIWebView and MFMailComposeViewController that are not full screen (UIModalPresentationFormSheet).  Scrolling any of these had the same behavior.  Probably wasn’t noticeable on the iPhone where these views were basically modal and took over the screen.  Although I do know I’ve used some iPhone apps who had erratic scrollview issues, so perhaps the view behind was conflicting just as I’ve explained.

Hopefully this helps some of you.  If anyone has more information or ideas on this, please post a comment.  Here’s the project if you want to play around with it:

UIPickerProblem

If anything, this gives you a framework to start your iPad development with if you haven’t already done so.

Enjoy!


(P.S.  Sorry about the down-time last week during my first iDevBlogADay blog entry.  We had a huge thunderstorm here in Columbus, OH and the power was out for about 2 hours.  I’m working on moving my blog off-site, instead of running on an old HP desktop running Ubuntu that is sitting in the corner of my office)

(P.P.S  I’m looking for Jiggle Balls HD beta-testers.  If you are interested, please sign-up here).

(P.P.P.S  The first person to comment correctly with the name of the group this blog entry is titled after wins a FREE Jiggle Balls: Spikes! promocode and jiggleballs.com sticker)

sticker

Using Visio To Write iPhone Apps. Seriously?

I was contacted by @mysterycoconut about taking his Wednesday slot on the idevblogaday site.  I learned about this site a month or so ago and thought it would be good to become a little more involved in the indie community and get the word out there about Funky Visions and our products.  So thanks for having me.  I’m excited to share my knowledge and experience.

I’ll do a quick intro and then get into the topic this week.  I’m 45 years old.  I’ve been programming since I was 12 years old on a PDP-11 my Dad built and then later an Apple ][ that we wire-wrapped (if you don't know what wire-wrapping is -- congrats on being so young!).  I worked for WordPerfect for 8 years, 2 of which I spent working on the NeXT version and the tools that would later become OS X and iOS.  I then spent 12 years with Compuserve/AOL mostly working in C++ and Java.  Finally in January 2009 I decided to buy my first Mac (refurbished Macbook Air) and an iPod Touch and see what I could come up with.  In March 2009 I released Jiggle Balls to the App Store.  Since then I've released "Jiggle Balls: Spikes!" and "Tramp Stamp" and I'm currently at work on my first iPad application "Jiggle Balls HD".  I've found modest success, paying off all my equipment and receiving a nice supplemental check to my day job each month.  I'm really doing this for the fun of it.  Once it stops being fun, I will probably quit.  Is the potential for having a big hit still in the back of my mind?  You bet... but it's not the driving force.

Ok... so that's me... if you're still with me... here we go...

I wrote an article a little while ago about my experiences while writing "Jiggle Balls: Spikes!".  Specifically about designing the levels.  I searched high and low for an editor that would fulfill my needs.  Having used Visio for many years in my job, I knew that was the type of editor I needed.  Objects with settable properties.  I've also been unfortunate enough to have done quite a bit of xslt programming with my day job.  Once I discovered Visio could save as an xsl file it all clicked that I could really use that as my editor.  Save to xsl, run an xslt tranformation to get it into plist format (similar to json), and then read it in using NSDictionary.

Here's level 6 from Spikes.

visio

It made it incredibly easy to layout the levels.  It even helped with the creativity.  Sometimes I'd just start with the ball and a box on the screen and the ideas would just start flowing.  Notice the little box in the upper-left hand corner.  That's the world properties, like gravity, time to complete level, etc.  I use this to setup the world but the object is never rendered.  Each of the "Jiggle Balls" (the smaller circles) has a property that tells how many to spawn (check out the game, you'll see how they explode in a circular pattern).  This saved me lots of time, since I didn't have to create each individual ball.  There are lots of other properties too, like bounciness, color, density, etc.

You can look at the original Visio file here.  I then transformed that file using Microsoft's XML Notepad 2007.  Yes... I know... too many Microsoft tools being used here, but I haven't totally migrated off of  Windows yet.  Here's the xsl file I used for the transformation.  And the resulting plist output file.

I can then read an entire level as follows (assuming I've already read the file into mainDictionary).

NSDictionary *levelDictionary = [mainDictionary objectForKey:@"level1"];

and then traverse through all it’s settings, walls, balls, spikes, blockers, faders, and sliders (using additional NSDictionarys).  For example, level 0, which is the title screen, looks like this:

level0 = {
	settings = {
		type = "settings";
		title = "title";
		background = "0";
	};
	wall = {
	};
	ball = {
	};
	spike = {
		spike1 = {
			radius = 2;
			x = 0;
			y = 12.5;
			type = "spike";
			restitution = "1.2";
		};
	};
	blocker = {
	};
	fader = {
	};
	slider = {
	};
};

Just the Spike exists on the title screen along with some settings about what background to load, etc.  Take a look at level 1 (too lengthy to put inline here) for a good example of what a level would look like.

Lessons learned?

  • An indie developer should use whatever tools he/she has at their disposal and they are comfortable with.  Using Visio might seem archaic to some, but for me it fit the bill quite nicely and proved to be flexible and powerful enough to handle all the levels I designed.
  • I really hate level design (that’s why Tramp Stamp went with the “Stay Alive As Long As You Can” ala Canabalt approach).  It was fun in the beginning, but the last few were really hard to eek out.  I did recently go back and create 5 additional ones with a renewed interest and freshness, so perhaps that is the approach.

I’m really enjoying iPhone development.  I love being an indie.  I love seeing what other indies are coming up with.  It reminds me of my days back writing Apple ][ shareware.  I’m excited to participate in idevblogaday.