Jiggle Balls HD Video
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.
How long have you been an app store independent developer?
- 1 - 2 years (40%, 19 Votes)
- 6 - 12 months (21%, 10 Votes)
- 2 - 6 months (15%, 7 Votes)
- > 2 years (15%, 7 Votes)
- 0 months (6%, 3 Votes)
- 1 month (3%, 1 Votes)
Total Voters: 47
Which best describes your independent developer status?
- Part-Time Job (47%, 23 Votes)
- Hobbyist (29%, 14 Votes)
- Full-Time Job (24%, 12 Votes)
- None Of The Above (0%, 1 Votes)
Total Voters: 49
What is your age?
- 20 - 25 (28%, 13 Votes)
- 25 - 30 (26%, 12 Votes)
- 30 - 35 (15%, 7 Votes)
- 35 - 40 (15%, 7 Votes)
- 40 - 45 (9%, 4 Votes)
- 45 - 50 (6%, 3 Votes)
- < 20 (2%, 1 Votes)
- > 50 (-1%, 0 Votes)
Total Voters: 47
How many hours a week to you individually spend working on your apps?
- 20 - 40 (23%, 11 Votes)
- 1 - 5 (21%, 10 Votes)
- 5 - 10 (21%, 10 Votes)
- 10 - 20 (21%, 10 Votes)
- > 40 (13%, 6 Votes)
- 0 - 1 (1%, 1 Votes)
Total Voters: 48
How many people are on your team?
- 1 (68%, 32 Votes)
- 2 (21%, 10 Votes)
- 3 - 5 (11%, 5 Votes)
- 5 - 10 (0%, 0 Votes)
- > 10 (0%, 0 Votes)
Total Voters: 47
How many apps do you have in the app store?
- 2 - 5 (36%, 17 Votes)
- 0 (28%, 13 Votes)
- 1 (17%, 8 Votes)
- 5 - 10 (13%, 6 Votes)
- 10 - 20 (6%, 3 Votes)
- > 20 (0%, 0 Votes)
Total Voters: 47
How much have you made on your most successful pay app?
- I don't have any pay apps (28%, 13 Votes)
- < $1,000 (22%, 10 Votes)
- $1,000 - $5,000 (13%, 6 Votes)
- > $100,000 (11%, 5 Votes)
- $20,000 - $50,000 (9%, 4 Votes)
- $50,000 - $100,000 (9%, 4 Votes)
- $5,000 - $10,000 (4%, 2 Votes)
- $10,000 - $20,000 (4%, 2 Votes)
Total Voters: 46
How many downloads does your most successful FREE app have?
- I don't have any free apps (41%, 19 Votes)
- 1,000 - 10,000 (17%, 8 Votes)
- 200,000 - 500,000 (11%, 5 Votes)
- > 500,000 (11%, 5 Votes)
- < 1,000 (7%, 3 Votes)
- 10,000 - 25,000 (4%, 2 Votes)
- 50,000 - 100,000 (4%, 2 Votes)
- 100,000 - 200,000 (4%, 2 Votes)
- 25,000 - 50,000 (1%, 0 Votes)
Total Voters: 46
What is your average income for all your apps per day?
- < $10 (48%, 21 Votes)
- $100 - $500 (16%, 7 Votes)
- $10 - $20 (14%, 6 Votes)
- $20 - $50 (11%, 5 Votes)
- $50 - $100 (7%, 3 Votes)
- $500 - $1000 (2%, 1 Votes)
- > $1000 (2%, 1 Votes)
Total Voters: 44
What is the highest app store overall ranking of your most successful pay app?
- I don't have a pay app (22%, 9 Votes)
- I don't know (22%, 9 Votes)
- 10 - 50 (20%, 8 Votes)
- 100 - 500 (12%, 5 Votes)
- 50 - 100 (7%, 3 Votes)
- > 1000 (7%, 3 Votes)
- 1 - 5 (5%, 2 Votes)
- 1 (2%, 1 Votes)
- 500 - 1000 (2%, 1 Votes)
- 5 - 10 (1%, 0 Votes)
Total Voters: 41
What is the highest app store overall ranking of your most successful free app?
- I don't have a free app (41%, 16 Votes)
- I don't know (13%, 5 Votes)
- 50 - 100 (10%, 4 Votes)
- 10 - 50 (8%, 3 Votes)
- 1 (8%, 3 Votes)
- 1 - 5 (5%, 2 Votes)
- 100 - 500 (5%, 2 Votes)
- > 1000 (5%, 2 Votes)
- 5 - 10 (3%, 1 Votes)
- 500 - 1000 (2%, 1 Votes)
Total Voters: 39
How many submissions (updates included) have you made to the app store?
- 5 - 10 (23%, 9 Votes)
- 0 (18%, 7 Votes)
- 1 - 5 (18%, 7 Votes)
- 10 - 20 (18%, 7 Votes)
- 20 - 30 (15%, 6 Votes)
- 30 - 50 (8%, 3 Votes)
- > 50 (0%, 1 Votes)
Total Voters: 40
How many of those submissions have been rejected?
- 1 - 5 (53%, 21 Votes)
- 0 (45%, 18 Votes)
- 5 - 10 (3%, 1 Votes)
- 10 - 20 (0%, 0 Votes)
- 20 - 30 (0%, 0 Votes)
- 30 - 50 (0%, 0 Votes)
- > 50 (-1%, 0 Votes)
Total Voters: 40
How much do you spend on marketing per year?
- < $100 (68%, 28 Votes)
- $100 - $200 (15%, 6 Votes)
- > $2,500 (7%, 3 Votes)
- $1,000 - $2,500 (5%, 2 Votes)
- $200 - $500 (2%, 1 Votes)
- $500 - $1,000 (3%, 1 Votes)
Total Voters: 41
Do you use the Apple Forums?
- Yes (65%, 26 Votes)
- No (28%, 11 Votes)
- What Forums? (7%, 3 Votes)
Total Voters: 40
Have you ever been feature by Apple?
- No (77%, 30 Votes)
- Yes (23%, 9 Votes)
Total Voters: 39
Do you get more than 5 support questions a week?
- No (78%, 31 Votes)
- Yes (22%, 9 Votes)
Total Voters: 40
What are your most successful marketing tools (pick all that apply)?
- Word of mouth (73%, 24 Votes)
- Twitter (52%, 17 Votes)
- My Homepage (39%, 13 Votes)
- Search words in app store (33%, 11 Votes)
- App Review Sites (27%, 9 Votes)
- Facebook (24%, 8 Votes)
- Other (9%, 3 Votes)
- PR Firms (3%, 1 Votes)
- Podcasts (0%, 0 Votes)
Total Voters: 33
Do you develop for other platforms beside iOS?
- No (59%, 24 Votes)
- Yes (41%, 17 Votes)
Total Voters: 41
Do you really own a legitimate copy of Photoshop?
- No (47%, 20 Votes)
- Yes (35%, 15 Votes)
- Ummm... ya, sure (18%, 8 Votes)
Total Voters: 43
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:

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:
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)

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.

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.
Asking For Artwork Is No Guarantee You’ll Get Featured
A few weeks… well… no it’s almost a couple of months… ago I got the email every “indie” developer waits for. The one asking for additional artwork. Wahoo! I started seeing $$$. I quickly, but quite professionally IMHO got together the requested artwork and sent it the very next day. Crickets chirping… more crickets chirping… hmmm… let’s send an email and see what’s up. Nothing… ok, maybe it just got buried in their spam, I’ll try just once more… oh good… a response. So turns out a request for artwork isn’t a guarantee of getting featured. I asked why waste everyone’s time? Especially if you are an indie and paid someone good money to get artwork together for you (I know… I know… Apple says to already have it ready, but who does this?)
Needless to say, disappointed. So… if you ever get this email, do not get your hopes up. I’ll still muddle through this quagmire of apps, trying to get exposure. I was really excited that Apple was going to help me out. Instead a couple more fart apps and zombie apps got featured. Is my stuff the best out there? Hell no… but I think it shows creativity, effort, and originality. For a 1-man shop I’m pretty proud of what I’ve done.
They asked me what I had coming down the pipe (the nice way of telling me… ummm ya… we aren’t gonna feature any of your current stuff). I told them I was working on Jiggle Balls Studio for the iPad. They asked when it would be ready for iOS4 and I said, well… when you guys are ready for iOS4 on the iPad. Perhaps a bit smug and sarcastic… maybe I need to hire a PR person.
Their response… well… good luck with that. Ouch!




