Simply Universal
I’m slowly making progress on my next game. I’m hesitant to give out too much details, mainly because I still have a long ways to go… but check the end of the post for the icon I’ve decided to use. There are 3 things I’ve done differently that influenced and guided the development of this game. I wanted to use cocos2d, I wanted to release a universal app, and I had an idea for a new kind of game control.
COCOS2D
The major change I made with this game was I finally decided to use cocos2d. Up until this point I had been using my own homebrew framework sitting on top of Box2D. Switching was definitely the right decision. After a small learning curve I was up and running and I’m finding it saves me a lot of time. Especially CCAction and CCScene. It’s made the transitions and menus so much easier. I’m getting 60 fps across all platforms (even my 2nd gen iPod Touch) and I’m just overall happy with the performance and ease of use.
UNIVERSAL APP
The other decision I made was to make this a universal app, but not in the way most people are doing it. The nature of the game doesn’t really benefit from retina display graphics nor the extra real-estate of the iPad. Thus I’ve decided to just simulate 2x mode on the iPad using glOrtho and running normally on the iPhone and iPhone Retina. I figured if I made an iPhone only app and someone runs it on the iPad, this experience is no worse and it gets me into both App Stores. It might subconsciously be my laziness, but I’m actually pretty happy with how it looks on both platforms, so I’m sticking with it. I changed very little code to get this to work. The major change is adding the glOrtho translation:
-(void)visit
{
glPushMatrix();
glLoadIdentity();
float x = 480.0f / screenSize.width;
float y = 320.0f / screenSize.height;
glOrthof(-x, x, -y, y, -1, 1);
[super visit];
glPopMatrix();
}
I then continue to treat everything as 320×480 pixels. The touch events need to be translated and I did have to do a bit of work to get CCMenu to work properly, but overall much less work than scaling objects, translating coordinates, and providing double the artwork.
CONTROL SCHEME
The catalyst for this game was a whole new game control that I have not seen in any other game (and thus I’m not gonna share exactly what it is). However, as I progressed and this game morphed (as most games do) it became apparent that this was not the game to introduce the new control in, so I’m saving it for something else I have in mind.
CONCLUSION
I’m moving much slower than I want to on this project, but my day job is sucking up a lot of my time and any spare time is spent with Spring cleaning and yardwork. I’m still hoping for a June release, but it’s gonna be pushing it. With that said… here’s my icon for the game.
Oh that’s another thing. My game had a totally different name, but when I posted this to Facebook I got a response from a friend who suggested a much better name. We’ll see how it pans out.
HAPPY MOTHER’S DAY to all our indy developer mothers.
Apple Made Me Jailbreak My iPod Touch
Yes… it’s true… after 2.5 years of being legit, Apple forced me to jailbreak my device. Why? Because I had no other option to test my new game on iOS 3.1.3.
A few months ago I successfully (and legitimately) rolled my iPod Touch back from iOS 4.2.1 to 3.0. But as much as I tried I could not do the same with 3.1.2 or 3.1.3. I even tried to roll back to 3.0 (and even 2.2.1) and then upgrade to 3.1.3 to no avail. So I’ve had my iPod Touch at 3.0 and that’s what I’ve been targeting all my builds with. But then I uncovered an issue with my latest game that uses cocos2d. It was not running smoothly. On 3.0 devices cocos2d does not use CADisplayLink, which gives a much more consistent frame rate. I wanted to test my suspicion that if I used CADisplayLink it would work. Of course I could have just tested on a 4.2.1 device, but then I’d have no idea if it was CADisplayLink or some newer functionality and I really want to target the oldest iOS I can. So I spent the last 24 hours trying various options but couldn’t get my device to 3.1.3 (plus I almost bricked it a couple of times).
So… even though I wouldn’t recommend it, if you find yourself in the same position and really need to test on an older iOS, here’s the steps I took. Again… I would have loved to do this the legit way and it would be nice if Apple had a way for developers to downgrade, especially since we don’t have the luxury of multiple simulator versions anymore. I’m not including any links to these images or utilities. I’ll leave it up to you to do the research.
- Download the appropriate 3.1.3 image for your device. In my case iPod2,1_3.1.3_7E18_Restore.ipsw for a 2nd gen iPod Touch.
- Create a jailbroken image using PwnageTool 3.1.5 which is designed to work with the 3.1.3 image.
- Use iREB-r4 on Windows (I did this in a VM) to put your device into pwned DFU mode. This probably isn’t necessary if you can get the timing right on the button pushes. But I did notice on VirtualBox that the USB indicator showed if it was in DFU or RESTORE mode, which made it easier to tell when I was successful (other than the black screen v.s. iTunes connection screen).
- Use TinyUmbrella to spoof the gs.apple.com servers to allow the image to be validated and upgraded. I couldn’t get the host file change wouldn’t work for me.
- Use iTunes to downgrade the image (option-restore) and selected the jailbroken custom image.
So now I have a 3.1.3 device to test on. I guess I also get to see what’s going on with the jailbreaking community, something I haven’t payed any attention to. It was pretty cool to SSH into my device and poke around the directory structure. I think it’s at least educational to see how your app is deployed to the device. I would have to believe that Apple developers get an environment more like this when they are working on iOS or iOS apps. It’d be kind of cool if we could too.
In my next article I’m hoping to write about cocos2d and my experience with using it over my own framework that I’ve been using over the last 2 years. I’m also hoping to discuss my solution for getting it all to play nicely in a Universal app.
P.S. Jiggle Balls HD is FREE all this weekend (assuming the change I made 6 hours ago ever takes affect — something’s up with the app store)
Man… This Is Really Rank!
Again… this week… I’m super busy with the job that pays the bills, so I don’t have a lot to offer as far as development goes.
But… today I’m gonna fill you in on a little trick I thought of this week. I’m not sure why I didn’t think of it sooner. It has to do with Applyzer. I’m a huge Applyzer fan. I’ve been using it for almost 2 years for my 4 apps. It tracks your rankings in the top 1000 for your category (and overall — but I very rarely see that). The website is workable, but I really like the dashboard widget Michael Dorn (you know I’ve never asked if he is Worf) created several months ago. A quick F4 at work and I can tell if some miracle has happened. And even though MOST of the time I’m not even in the top 1000 with 2 of my apps, I still am anal about checking them and seeing if some miracle might have happened. My other 2 apps are consistently in the 400-600 range, so I do like to see if any of my weak efforts at marketing pay off.
But the website is really difficult to use from my iPhone. So I got to thinking… he must just be making an http/rss request from the widget. So I installed Wireshark and sure enough it’s just simple request to a php page.
http://www.applyzer.com/rss/currentranking.php?md=<key>
Where key is your 32 digit key you can get from the Key Generator section under My Profile.
My first inclination was to write an app to display this. Then my old brain went… wait a sec… shouldn’t safari be able to display this nicely? So I plugged the url into safari on my iPhone and this is what I got.
Blech! Where’s the ranking icons??? reader.mac.com must be messing with the content. I searched to see if there was a way to bypass Apple’s rss reader, but to no avail.
So then I tried Opera Mini.
Aaah… much better.
So now I can check my rankings where ever I go! Hopefully you’ll find this useful (or maybe even obvious) too!
Oh! Oh! Oh! I forgot. Tramp Stamp is FREE today as part of the Daily App Dream promotion. And now I can track my way to the top 50 from the toilet. WooHoo!
P.S. Michael gave me permission to publish all this information. He’s been a really good guy to work with and has been very responsive to my queries. He’s even awarded everyone extra days when something Apple does causes the rankings to freeze or be unavailable. If you are not a member of this site and are as anal as I am, I’d really recommend it. I am not affiliated with his site in anyway. Just a fan boy.
What’s On???
Ok, this week I have absolutely nothing to talk about dev-wise, except for Tramp Stamp and Tramp Stamp Lite Universal App updates both being approved. WooHoo! Plus I’ve started conceptualizing my next game. Pretty excited about that.
I’m always curious what other people have running on their devices. I’m a minimalist, so nothing sticks around for too long, but here’s what’s on my iPhone right now. Comments and suggestions are welcome. What am I missing? What do I have that you didn’t know about?
Ok, here goes…
I like to keep my home screen uncluttered with pretty much just the non-deletable Apple apps. With a few exceptions. In this case Dropbox and Instacast. I use DropBox ALL the time to move files to and from my mac. I just started using Instacast by a recommendation on AppSlappy. So far I like it, but no 2x playback (update: new version has 2x). Oooh… that reminds me. iTunes needs to move to the “Other” folder now.
Of course I always keep copies of all MY apps.
I don’t keep a bunch of games around. Here’s a few I’ve played more than once or twice. blockBUZZter was written by a friend of mine. Check it out!
Only one other folder of “Games”. I can’t get enough of Tiny Wings. It’s definitely been responsible for lots of lost sleep and non-development time!
Surprisingly not too many developer apps. Haven’t used AccSim or iSimulate for quite a while. I mostly check the IAA Network and iTC Mobile.
Pretty sparse here too! Check out iShoe if you’re an Ohio State Buckeye fan. My girlfriend’s son worked on this this past summer. I’m keep meaning to use RunKeeper, really I do. The Best Of FTA will make sense to anyone who owned an Apple IIGS. Some of the first great indy apps. And MakeAZombie is there because I’m seriously thinking of writing a zombie game and needed some ideas of what they look like. Mmmmm… brains…
Can’t say that I really use ANY of these except for Wake, which wakes up my iMac remotely because my Apple TV is too stupid to send the bonjour packet (unless you have an Airport or Time Capsule). I do use Pandora on long car trips, but that’s about it.
Ya, not sure why I even bothered with a folder here. Baby Scratch is a lot of fun though.
Why Apple doesn’t provide cropping and rotating functionality I’ll never know.
Again… a ton of stuff I never use very often. Oh, just noticed Chordmaster should go over to the music folder. Weather Bug runs beautifully on my iPad but consistently crashes on my iPhone (update: just got the new version, so hopefully fixes the problem).
Again… stuff I don’t use very often.
Twitter and Facebook mostly here. Although I use Facely when Facebook decides to not upload photos, which is quite often. Crowdbeacon just doesn’t have enough users in my area yet.
Speed Test gets use the most. Especially when I’m running a Verizon v.s AT&T test against my buddies at work and I can kick their butt with 2x the speed. Seriously! RandInt is used for our Columbus iPhone Users Group (CiDUG) to pick a random number for door prizes.
And a few stragglers that haven’t found a home. HOP will probably be deleted soon. I download ALL ball apps to see how they compare to the Grand Daddy Jiggle Balls.
And Pilot Winds can’t compare to Tiny Wings.
I really appreciate this every 2 week thing. It gives me time to get my thoughts in order and pre-can my entry. I’ve been doing some serious opensocial development at work, so by the time I get home I’m pretty burned out and haven’t felt like developing. I’m still hoping to get a new game out by this summer. Keep indy’ing!
Help Wanted… Jobs
No… I’m not looking for a job… I’m looking for some help…
Ok, I know most of you are busy playing with your new iPad 2s, or trying to figure out XCode 4 (when it’s not crashing), or disgruntled because iOS 4.3 won’t install on your Verizon iPhone, or recovering from your GDC hangover… but I want to discuss something that has been brewing in my mind for over a year now. And that’s “How do I market in this arena?”.
I don’t care what anyone says (including KMT in the Apple Forums <g>), but the new release list is the independent developers best friend. My belief is that if you can make the jump from there to your category top 50 in the first few days and then the subsequent jump to the overall top 50, you’ve got it made. Miss that mark, and well… you can be Tiny Wings and you’ll still get buried pretty quickly. I’m not saying an app can’t be discovered later (like Trainyard was), but it’s nearly impossible unless Apple or one of the big review sites decides to feature you.
Sure, there are exceptions, but I really think being “visible” on the App Store is key. And I’m talking about the App Store on the devices, not iTunes. It’s the people browsing the App Store on the device and making that impulse buy that is key. Few people are clicking over from a Touch Arcade ad or searching the App Store after a favorable review on a podcast. Most developers I’ve talked to just have not seen the payoff from that kind of marketing (and most of that marketing is way too expensive for the independent — with a few notable exceptions I’ll discuss later).
So… what am I proposing? A couple of things Apple could do to make exposure a little easier. And don’t get me wrong, I don’t think it’s Apple’s responsibility to do our marketing, but I think there are things they could do to make it a little easier for the independent developer (cuz let’s face it… some of the best stuff in the App Store is from the little guy).
- Allow us to buy advertising space in the App Store. I’m proposing a 50/50 split in revenue for the privilege. This could even be a randomly rotating list of apps, but at least featured front and center. Call it “Developer Suggestions” or something like that.
- Have an independent section in the App Store. I’m not 100% sold on this, since the average consumer might not know what this means, but I think there is a target of the audience that would look here.
- Instead of featuring the top games in the iPad Game Center, feature random apps. On the iPhone provide a random games section as well.
- Allow our App Store pages to be a little more attractive. How come only certain companies get to have the flashy backgrounds, etc.? Let us embed video and html links and respond to customer feedback inline. Punish me if I abuse that privilege.
- Let me change my icon without an app submittal. I’m still unclear as to which one gets shown by what section of the app store. The 512×512 one submitted in the metadata or the one in the app itself? I need to do more experimentation here.
- Let me change my keywords without an app submittal. Again, punish me if I abuse the system. For example changing my keywords to the most popular app, etc. (although that would probably have the reverse affect of what you’d want if everyone was doing it). Being able to experiment with my keywords is crucial IMHO since once I’m buried it’s really the only way I am being found (besides word of mouth).
So… this blog post was not meant to be whiney or complain that I have a disadvantage because I’m an independent developer. I also understand that to Apple it really makes no difference as to whether what they are selling is from the big guy or little guy (I don’t even think the average consumer knows the difference either). But I will dispute that the App Store would not be the success it is today without the help of the independent developer. So I guess I’m just asking for “a little love”.
The App Store is an indy dream. No where else can I get this kind of exposure. The extra $10,000 I make a year is pretty nice. It would be nicer if I could truly make a living at it.
Now… who is givin’ the love? There are a few independent favored sites and some advertising that’s not too expensive. The kings? The Portable Gamer without a doubt. These guys have reviewed every single one of my products and had me on the podcast twice without asking for anything in return. Carter and Rob are true champions of the indy. Next up… AppVader… another very friendly indy site. Also PlayHaven and IAA have been very helpful in cross promoting. And I have to give a shout out to the iPhoneSlutz who provide very affordable advertising for an upfront 15 seconds spot on their show. Unfortunately it had very little impact on my sales beyond the first day.
Please… please… please… fill up the comments with your suggestions and rebuttals. I would really like to know what the rest of you think.
On a side note. After my last entry I did get motivated and I’ve taken Tramp Stamp and made it a Universal App and gotten it to build under XCode 4. I just submitted it to Apple yesterday. It will be interesting to see how the universal app fairs against my other apps. Hopefully minimal investment for a little gain would be nice. And I also made Jiggle Balls HD FREE for the weekend to celebrate the iPad 2. Pick up a copy if you haven’t already done so (and let me know how it runs on an iPad 2). Enjoy!
Motivation: Ya… it’s lacking!
It’s good to be back on iDevBlogADay. I took a hiatus back in September because I had switched groups at work and was really busy (I’m actually working on an App Store type product for libraries). Plus I was going on vacation and I knew I’d miss a couple of weeks. I’m hoping this new format of every 2 weeks is easier for me to come up with something to write about as well as finding the time.
The last few months have been pretty slow as far as Funky Visions projects go. I’ve only submitted a tiny update to Tramp Stamp (made the trampoline a little more forgiving) and added some obstacles to Jiggle Balls HD. Both were weekend projects. It seems that lately I’ve lost motivation. I continue to make an average of about $25 a day selling my 4 pay apps (I made $9000 in 2010). While discouraging, it’s still a pretty nice check per month and you’d think I’d be motivated to get more stuff out there and try to double that. But I don’t. Why? Cuz I’m discouraged.
Twice I’ve been in talks with Apple about sending artwork and twice nothing ever came of it. I’ve tried numerous marketing campaigns without making back my investment. I’ve sent promocodes to the big boys like Touch Arcade and gotten no response. What I really want is some recognition. What my problem is is that I don’t put the work in required to get that recognition. I think most of my products get to the prototype phase and I lose interest and ship it. While this isn’t a bad approach and I’m happy with the value I give to the customer, I feel like if I spent a few more months I could put the polish on it. Take a look at Tiny Wings. It’s clear that the author spent the extra time to add the polish. Or the time that was spent on developing levels for Trainyard. After 25 levels on Jiggle Balls: Spikes! I was tired and decided to ship it. I’ve only added 5 additional levels since.
So why don’t I want to do the extra work to get noticed? I guess because I’m fearful that I won’t get noticed. And that’s my lousy attitude right now. I’m not willing to put the effort in without the guarantee. I have this perception that the App Store has become so saturated and impossible to get visibility, that I most likely wouldn’t get noticed. Then I read Spielhaus’s iDevBlogADay entry which got me to rethink this. I agree that’s it’s really about writing something simple and engaging along with that extra polish. You read over and over in the Apple Developer Forums about how you shouldn’t rely on the “new release” list for exposure or rely on Apple featuring you. Recognition will come with a great product.
That being said, I still think there are some things Apple could do to help the indy developer. I get tired of seeing Apple promoting apps that are already at the top of the charts. And Game Center (at least on the iPad) has the ability to promote random apps, but instead, again promotes the apps at the top. I understand Apple is in this to make money, but sometimes I get the tiniest inkling that Steve Jobs really does want the independent developer to succeed. It’s those success stories about the App Store that everyone wants to read about. It’s what makes the App Store unique. Where else could I get this exposure and get in app purchase and subscription abilities without having to buy my own server space?
So… I think I’ve rambled… but these are the thoughts that have been running through my head and driven my lack of motivation. I know there are others of you that go through these same periods. I know when I get knee-deep into my next project I’ll find the motivation to release something once again. But maybe I’ll take the time to add that extra polish.
Oh… and for anyone reading this on Sunday… you’re in luck. Jiggle Balls HD for iPad is FREE this weekend ONLY! So click right here and get your copy now. Enjoy!
These Black Holes Really Suck!
Good news! Apple just approved Jiggle Balls HD v1.4 and Jiggle Balls HD Lite v1.3. I’ve added black holes. Add one to the screen and watch how it sucks all the balls around it up. I had fun adding this new feature and it really got me into some fun stuff with Box2D. I’ve got some other great ideas for iPad apps, but I also don’t want to ignore my iPhone customers (especially with Verizon coming on-board). So I’m working on some designs for my next game that I’m hoping to make a universal app. This would be my first app that runs across all the platforms. Once I get my Verizon iPhone I’ll have a 2nd gen iPod Touch, a 1st gen iPad, and a Verizon iPhone to test all possible screen resolutions and processors. Stay tuned!
I’m Back!
Well… after several months of moving stuff around, Funky Visions has finally found it’s new home on GoDaddy. I also recovered this lost blog off of my crashed linux hard-drive. It will be nice to have this hosted somewhere else other than my desktop machine. You may notice some images and links might be broken. I’m not gonna take the time to go back and fix any of them. If you see something broken you need access to, please email me.
As far as Funky Visions’ products go. I just submitted an update to Tramp Stamp. It fixes some of the mechanics/physics of the trampoline and makes game play a little easier. I’m gonna work on the Black Holes for Jiggle Balls HD next. Then I have an idea for a completely new game I want to start working on. So look for some fun stuff from Funky Visions in 2011!
Retiring From iDevBlogADay
Sadly I’m gonna give up my position on idevblogaday. I’m going on vacation and I’ve got a lot going on at work, so it’s best to give someone else the opportunity. It’s been fun sharing what little information I have.
Boxed In? Bust Out!
Sometimes you just need a little help…
Everyone one of my apps so far has used Box2D. In fact, if it hadn’t been for Box2D and the timing, I probably wouldn’t be writing iOS apps. During Christmas break 2008, I was playing around with Flex/Flash after having attended a class on it at work. I really wanted to do something with it. That’s when I came across Box2D (it has an excellent AS3 implementation). Then I noticed there was an iPhone port that had JUST been completed by Simon Oliver of HandCircus.com for his game Rolando. I was interested… but I hadn’t owned an Apple product since I worked on the Apple IIGS version of WordPerfect, but I was hearing all the success stories (iShoot mostly) and I knew I loved writing shareware back on the Apple IIGS. This felt like it might be that same kind of opportunity.
So in early January I was just half-seriously looking at apple.com and noticed the refurbished Macbook Airs were $1000. I ordered one (in fact it’s my VERY first blog entry on this site). I quickly had buyers remorse and questioned whether I should cancel the order. I called Apple and they said I could play around with it for a week and return it if I wanted to (they gave me an RMA#). Well… let’s just say after 1 day of playing with it I was hooked. Very sly of you Apple…
Within a few days I had the Box2D samples up and running in XCode and I was learning the environment. I started tweaking the code and that’s how Jiggle Balls was born. The first version released in Feb 2009 was horrendous (all wire framed objects), but I wanted to get something out there and see how it would do. I also had to purchase an iPod Touch, because I knew testing accelerometer stuff without a real device was going to be difficult. So now I’m $1,200 invested.
Sales were slow initially. I read about how iShoot exploded after he released a Lite version. So I did the same. While it didn’t explode… I did make back my initial investment by the end of March.
I would encourage independent first time app developers to leverage off some framework or library. I would have never released anything if I hadn’t been able to download the Box2D xcode project and start tinkering right away. If I was coming into this now, I’d probably be using the cocos2d for iPhone framework. It wraps Box2D and a bunch of other stuff that will quickly get you started. I’ve stuck with Box2D directly for now, but I’ve considered making the jump. I have used the CocosDenshion audio library in all my apps.
I would also encourage iterative releases if possible. Now days, you don’t want to throw something too half-baked out there and get bad press or bad name recognition, however I would still try to keep the feature set small enough that you can complete the project. Then let your customers know that you have big changes coming soon. For me that’s been a better way to work because otherwise I lose focus and interest. If I get something out there and I see some good feedback, then I’m motivated to complete the next iteration.
So… if there is anyone out there who is stuck and wants to start playing… I’ve created a little project and slide presentation you might have fun starting out with. This is from a presentation I gave at the Columbus iPhone Developers Users Group (CiDUG) a few months back. I’m also submitting it for consideration for CodeMash this year (it’s at Kalahari in Sandusky Ohio – the BIGGEST waterpark in the world). So for first timers, enjoy and I hope it inspires you to start working on apps. For veterans, please rip it apart and comment so I can make changes before I embarrass myself at the conference!
Next week I will be on vacation and flying back from Utah on Wednesday, so I’m hoping some inspiration comes quick so that I can load one up in the queue. This whole idevblogaday thing has been really good for me. I hope something I’ve posted has been beneficial to someone else.




















