Apple blesses the use of Flash / Unity on iOS

Today Apple announced a change to the App Store developer terms of service (TOS) to officially approve the use of third party development environments when publishing to the App Store. This notably sensitive subject began stirring up serious worry back in June.

As noted by John of Daring Fireball on June 8th, Apple modified their terms of service to include a very worrying section. It stated:

“Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).”

After a massive uproar from the iPhone development community and game development community, Steve Jobs publicly responded to an email by stating:

“We’ve been there before, and intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform.”

At that time, knowing Apple’s stance on the subject, thousands of small (and large) businesses were in major jeopardy, having put trust in Apple’s development platform before the proverbial rug was pulled out from under them. Users of Unity3D, a cross-platform game development engine, expressed outrage, compiling a list of top App Store games and apps that violate section 3.3.1 of Apple’s TOS, attempting to show what a huge mistake it would be to ban such a lauded tool. The futures of developers using tools such as Unity3D (MONO), MonoTouch (MONO), Corona SDK (LUA), Flash (ActionScript), MIT’s Scratch (Scratch), and GameSalad (?) were ‘uncertain’ at best.

On September 9th (today) Apple backpedaled and released a press release basically amounting to ‘Whoops! We’re sorry!’ and dropping the whole argument regarding compatibility layers. Apple might not realize the impact of this decision, thinking this is a minor concession to make some users happy, but it is my feeling that this choice has extended the viability of the iOS platform by a massive amount.  Users aren’t quite leaving Apple in droves to move to Android as some have been predicting. I bet Adobe is glad they didn’t cut their iOS packager from CS5!


iPhone game to iPad – User interface considerations

I recently began porting my iPhone game SpringFling to iPad. The most time consuming part so far has been working with the art assets to make them work on the new screen size. I had stupidly designed most of the UI for the game at native resolution (480 x 320 px) which forces me to now re-do much of the art at 1024×768. Instead of just re-creating the exact menus at a higher resolution, I’m taking this chance to re-design certain areas of the menus.

I’ve noticed an issue with some iPad games that have been ported from the iPhone version. It seems the developer, in an attempt to reuse the same art assets, keeps HUD and UI elements the same size but ends up with huge areas of empty space and useless padding. Contexts with very little info end up taking the whole screen, making the overall composition feel lonely and awkward, like sparsely placed townspeople in a model train set.

By forcing myself to re-design certain areas, it will (hopefully) help ensure a smooth and appropriate user experience on the iPad.

Here is my progress so far:

And no, I haven’t gotten around to fixing the in-game HUD imagery yet. I’ll get to it soon, nagging Nancy.


Unity experimentation – gravity, perspective, and teh Youtubez

Last night I began logging my development adventures by resurrecting my dusty unused Youtube channel. I uploaded around 7 videos, some of which were previously un-seen prototypes I’ve been messing around with recently.

Here are the new videos:

Please feel free to subscribe to my Youtube channel.

Comments Off on Unity experimentation – gravity, perspective, and teh Youtubez Comments

SpringFling in Apple Stores around the country!

Today I finally learned the meaning of the secretive phone call I received from Apple a few months back. Apple has put my SpringFling demo on the in-store iPod Touches that grace Apple Stores around the country. What an honor!

I’ve been meaning to update SpringFling and with Unity iPhone 1.6’s release followed by this unexpected good fortune, it may give me the boost to get some updates pushed out.

Take a look at the pics:

Thanks again to Apple for featuring a small time indie.


February Boston Post Mortem

I’m just now finding time to write up some thoughts on Tuesday’s Post Mortem. What a great send-off to Yilmaz, who is returning to Turkey on February 14th. Scott Macmillan gave a great little speech about Yilmaz being sorely missed in the community. It’s definitely true, and good to see how quickly both he and I were welcomed into the Boston community after moving to the area not long ago.

Seeing the 3 site’s Global Game Jam games was really a great subject for a talk. Lots of interesting ideas and some great execution. Special thumbs up to the Quest for Stick group and Morgan Quirk’s excellent Flixel game. Some serious talent there and at every site. I’m REALLY impressed by this years GGJ turnout.

It goes without saying that I owe a great thanks to Scott Macmillan and Darius Kazemi as well as Les and the other BPM organizers for allowing Yilmaz and I to speak at the Post Mortem and to bore the crowd with images of ramen, cats, and energy drinks. A fun time all around.

The Skellig was packed once again, and Elliott Mitchell was kind enough to send me some pictures he snapped during the event. I’d guess the turnout was in the 150 range, which is surprising for a non-sponsored talk.

I’m posting the slides here in case anyone is interested.

Cheers, and I look forward to the next one.

Comments Off on February Boston Post Mortem Comments

24 hour iPhone game – The Extreme Ramen Challenge


Super Ramen BROTHers is on the App Store!

Get it at:

As a fun new years gift to the community, my friend Yilmaz Kiymaz and I decided to create an iPhone game. We thought it would be fun to ask the community what *they* wanted to see in a game. We also thought it would be interesting to see if we could pull off a game from start to finish in 24 hours. So we, being the crazy people that we are, thought “Sure, why not?”. This is how it all began.

3:30pm [1/1/2010] – We posted the initial call for designs from the community. We set some ground rules for the ‘contest’, made ramen versions of ourselves (and my cat), and posted away.

[Posted by GTJuggler]
24 hour iPhone game - Extreme Ramen Challenge

We're making an iPhone game, starting at 6:30pm EST today.
The design will be based around one word: 'Absurdity'

You're the designer. Go.

Official Rules:

  1. Post directly in this thread using the example template seen in the following post.
  2. Game concept must follow the general theme of 'absurdity'. For examples of absurd game pitches see Offroad Velociraptor Safari or Enviro-Bear 2010.
  3. This means the idea should not be a direct photocopy of a preexisting game.
  4. Due to the 24 hour nature, game scope (or the complexity of the game) must be limited. Please do not pitch your awesome RPG / futuristic hybrid racing MMO today.
  5. We will be choosing an idea that has a proper mix of the following adjectives: Crazy, fun, silly, compact, horrible, ingenious, and weird.
  6. Anyone is eligible to post their ideas
  7. Game concept does not need to stick to a PG or G rating. Feel free to express yourself.
  8. Attach any concept art to the post (purely optional but will increase chances... (of being made fun of for using MS Paint))

Brought to you by Alex Schwartz (GTJuggler) and Yilmaz Kiymaz (VoxelBoy), developers of iPhone games SpringFling and Rocket Monkey.

This contest is fueled by Ramen, Bawls energy drinks, and the Unity engine.

Here's a picture of the developers:

3:30pm [1/1/2010] – After the initial post, we received some cool ideas, some completely insane. Here are a few:

[quote from Spidey146]
You are a plumber trying to fix pipes, which mysteriously keep breaking, to direct some dumps which people are taking in different apartements so that they land in the ummmmm compacter, along the way there are bugs, like giant dung beetles and cockroaches, and animals like skunks and cats which try to eat the scat, so you have to make sure not to send the crap at them.

[quote by Sailor Jensen]
Game name: Super Ramen BROTHers
Short game concept: Your ramen brethren are being sold at the supermarket, like slaves. Stop the ramen packages from getting past the cashier's conveyor belt by swiping away any and all ramen that comes by. The fate of your kind is at stake.

I love this idea and name! What about if instead you are the Ramen BROTHers and you have to keep from bing scanned by jumping over food and house items being rung up, and each item rung up gets you points. If you hit an item it gets knocked off and you get knocked back a little. If you get knocked back to far you get rung up and bagged. They are seperate so you click either one to make them jump. The only way to make up for being knocked back is by collecting soy sauce packets that randomly appear coming down the conveyer. Every now and then the cats head pops up and lets you know a paw will try and swipe you soon (which you have to jump as well) The soy sauce can only be consumed by one brother so you may have to avoid it with the first so the second can get it. This would be a run and jump side view game.

[quote by sunenun]
Game name: Go Go Ramen Bowl!

Short game concept: You are an ingenius chef for a new crazy Ramen restaurant. But the restaurant is in such a cramped, compact space you must find ingredients in the weird field next door! Grab fun food ingredients before the timer runs out! Put them in your ramen but make sure each ingredient has something in common with the one you just put in. Your patrons will love your silly recipes. Shoes? Tennis balls? Whales? Sure! But careful! The wrong sequence makes your meal taste horrible.

Design notes: Top view, touch based input. Two phase game. First phase you appear in a field with icons and obstacles viewable on the landscape. Swipe in any direction to run along picking up ingredients. In the second phase you have all collected ingredients available. There is a starter ingredient listed. Pick the ingredients so that the next ingredient matches color, number, or type of the previous ingredient. For example, a "Fish Ramen!" might start with Fish, add in a Blue Whale (both swim in the ocean), then a Blue Sweater, then a pair of Mittens, then a Kitten (rhymes).

6:30pm [1/1/2010] – We decided to go with Sailor Jensen’s game about Ramen Brothers (an extension of our example game idea), due to many factors. The idea fit the ‘absurd’ theme, scope was low enough that we believed we could pull it off in under 24 hours, and the art asset list that the game demanded was somewhat reasonable compared to the other ideas. Also it had no IP restrictions or other features which would prevent it from being App Store material. We chose the idea and posted a second major update.

[Posted by GTJuggler]
Thanks for the entries! We have chosen an idea (an amalgamation of Sailor Jensen's ideas and the conveyor belt part from the sample idea).

Here is our game design:
You and your brother (Super Ramen BROTHers) are running on the treadmill-like surface of the cashier's conveyor belt, trying to avoid getting scanned. Camera view is 3rd person. You have to either jump or avoid oncoming food items. If you are hit, you get knocked back a notch, closer to the scanner and your eventual doom. If you happen to gather a soy sauce packet, you get moved forward a notch. There are 3 lanes and the characters can move from lane to lane with a simple lateral swipe. Jumps are executed with a vertical swipe.

Suggestions, changes, additions, comments, and angry remarks are all welcome. Well, it's time to get coding!

9:05pm [1/1/2010] – When our first of many development updates was ready, we promptly posted. Note that this first development update mentions a special guest artist, Fluxist8070. This is Matt Board, local Boston indie, gamer, 3d art teacher, and all around great guy. I contacted him at 8pm, fully aware that asking him if he wanted to do a marathon art session was both absurd and showed a frightening lack of preparation. Amazingly, he accepted and was ecstatic about the idea. To quote Matt, after making the call to action via email, “Heck Yeah! Let me know what you need and you can consider it made!”. How about that! Here’s the first development update:

[Posted by GTJuggler]
Development Update 1
* Our special guest artist (Fluxist8070) is hard at work on a character model (ramen package)
* Yilmaz is building the code base. We have objects spawning randomly and moving on a conveyor belt (aka a grey box moving on a grey plane). Whee
* Alex is working on a main menu. Screenshot below:

As always, suggestions are more than welcome. They are required.... at gun point.

12:01am [1/2/2010] – January 2nd has reared its ugly head and we’re deep into development. A forum member has a 1-line suggestion:

[Quote by TouchChatterbox]
Mortal Kombat with Toasty.

We decide this is a great idea so we begin thinking about a way to include a MK-style “Toasty” effect in our game.

1:48am [1/2/2010] – Things are coming along and we post the second 2nd development update, this time with a video.

[Posted by GTJuggler]
Development Update 2

  • We have a HUD design (see below)
  • Character design is complete (see below)
  • Animations partially done
  • Gameplay 40% complete code-wise

Gameplay WIP Video 1

1:57am [1/2/2010] – Responses from the community have so far been positive, but once we started the development updates, people were really getting excited. Posts like this one by Negamaki really kept us going through the night:

[quote by Negamaki]
Wow, you weren't clowning around! It's great to see the idea coming together so nicely already! YOU CAN DO IT!!!

2:33am [1/2/2010] – We decide to ignore some other community comments, such as this one:

[quote by TouchChatterbox]
What about some near-tentacle porn only to reveal the breasts belong to a Japanese businessman drunkeningly singing karaoke in the supermarket with ramen noodles on his head? That would be a good pre menu animation! :-p

4:20am [1/2/2010] – Matt Board comes back with a sweet ramen character model with animations (around 3am) and we implement the animations. Our third development update is as follows:

[Posted by GTJuggler]
Development Update 3

We have the character in and animating!


10:26am [1/2/2010] – Our next update occurs as the morning light shines in our bloodshot eyes. Beth Beinke returns from work (night shift) and makes two props for our conveyor belt. Thanks to Beth for her help with the art! Development update 4 covers the new working menu system, with a two-second shot of the game screen. Things are starting to get interesting and reality hits hard with only 8 hours to go.

[Posted by GTJuggler]
Development Update 4

We're getting quite sleepy. With 8 hours left, we feel about as tired as Link, the cat.

The energy drinks are starting to lose effect and morale is drowning in thoughts of warm blankets and naps. But we have a third video, now showing the final menu. Yes, we'll have online high score boards using AGON. Check it out.

Prototype video 3 - Menus

Edit: Let me know if anyone else has problems with these quicktime files.

12:26pm [1/2/2010] – Suggestions on new game ideas and new game modes continue to stream in long after it is plausible for implementation. We don’t crush their souls by shooting them down. Instead we let them stream in and stick to our plan, drafted only 18 hours before. Development update 5 brings a screenshot of the near-final game scene and updates on music/other items.

[Posted by GTJuggler]
Development Update 5

  • An old band member of Matt's has volunteered to do music. Six hours left!
  • Dual player movement is working sans touchscreen input
  • Splash screen + icon are being rendered/painted
  • We have 9 grocery store items for the conveyer belt. This will probably be the final amount for the 24 hour game, as the art asset creation is becoming too time consuming

Also, a quick screenshot showing the hud in place:

The aisle eleven symbol in the hud also doubles as a pause symbol.

4:06pm [1/2/2010] – Music by a friend of Matt’s is completed (once again, with no forewarning another friend of a friend happens to produce amazing stuff for us in no time flat. Awesome.)

[Posted by GTJuggler]
Development Update 6

Music by Steve Trenkamp is complete. Amazing work by Steve. Can't thank him enough.

4:28pm [1/2/2010] – Two frikkin hours left. Matt comes back with more quality outsourced art. He has made the splash screen.

[Posted by GTJuggler]
Developer Update 7

  • Splash screen
  • MK 'Toastie' cat added
  • First on-device test!
  • Touch input WIP

Splash screen looking hawt:

4:53pm [1/2/2010] – More awesome comments are posted, and our morale is boosted for the final hurrah.

[Posted by various]

All hail the new best TA ramen game in the App Store!
Man.. If only I could produce high quality apps in a day. :/
As long as it has "toasty", this will be the best game ever.
Now if apple will approve it with in 24 hours. heh
Wow, only about an hour left! Can't wait to see the results! Please make a YouTube video showing us the finished game!

6:30pm [1/2/2010] – We are there, 24 hours and 1 minute since the post declaring our chosen design. We post our results:

[Posted by GTJuggler]
We haven't added titles/credits or anything fancy to the video. It's just straight video capture of the game.

Also, here are 3 pictures of the game on the device:

And the video! Woot.

We want to thank everyone involved and say that this was truly a fun experience (albeit tiring and sleepless :P). Maybe we can try it again some time.

-Alex and Yilmaz

I want to reiterate the credits page to point out the awesome help Yilmaz and I had.

Well, that’s the end of our story. Submission to the App Store is slated for Jan 4th (not officially part of the development process, so we can get away with putting that off for a little so we can rest). I ended up sleeping for 21 hour straight after this, but as for the question ‘Was it worth it?’

Hell yes.


SpringFling 1.1 update released

Today Apple approved the SpringFling v1.1 point release which fixes numerous bugs, adds 9 new clothing items for Mr. Spring, and adds a new powerup: Ass-saving fans. They’ll seriously save your ass. That is all.

Comments Off on SpringFling 1.1 update released Comments

Ways to get rejected by Apple – App Store Tips

So you’ve got ‘the next best thing’, that killer game that will no doubt rock the socks off the App Store and make you an instant millionaire. Mhmm. Before you submit to the App Store, take a look at some common ways to set off Apple’s sirens and get you slapped on the hand and sent to the back of the line to wallow with the other dejected folk. This list focuses on game development specifics, as opposed to app development. Listed in no particular order:

1.) Matching high resolution icon
Having a matching 57×57 and 512×512 icon is key. The small icon is used on the device while the larger version is used in iTunes. The important part is that the large and small icons required for submission must be visually equivalent. Just because the bigger version is, well, bigger, doesn’t mean you can or should cram a bunch of extra visual elements into your design. Additionally, the new December ’09 iTunes redesign puts your high resolution icon front and center in iTunes so developers out there who were simply scaling up their 57×57 bitmap icon to 512×512 to satisfy the requirement are no longer going to get away with this. I recommend building your app icon in a vector-based drawing app (Illustrator) to allow for easy size changes later on. Think ahead to advertisements, banners, website backgrounds… You don’t want to be limited by your small icon size.

2.) Vibrate function on iPod Touch
Are you calling the vibrate function without first checking the model of the device that is running your game? The iPod Touch does not have the hardware to vibrate and according to Apple, an uncaught call to the vibration function on an iPod Touch is not allowed and is grounds for rejection. Other users have noted that Apple’s official SDK documentation states that vibration can ONLY be used for alerts but this one seems to be intentionally ignored for games.

3.) Camera access on iPod Touch
Same as #2. Calling a function that is available only on a subsection of the iDevices is grounds for removal. GPS applies here as well (1g iPhone and iPod Touch devices do not have GPS capability). It has been said that it is not enough to just inform the user by alerting “You can not use this function on an iPod” when the user taps the camera button, for example. The button should never be displayed. Note that this is not the same as graying out the button. (See #12)

4.) Network lobbies and WWW calls
If your game has any type of networking in it, be careful of specific panes, modes, pages, and areas that are designated to be for online networked use only. If you have a game lobby where online game matching occurs, the user should not be able to reach this area if there is no internet connection. A popup dialog should inform the user that they are not connected to a valid network connection. Checking for an internet connection can be tricky due to the fact that the Apple provided ‘Reachability’ sample project is said to be suboptimal for connectivity checks. Refer to this url for more information on this. If you’re using Unity iPhone, you’re in luck! “iPhoneSettings.internetReachability” returns a bool that properly describes your current internet reachability.

5.) Pictures of an iPhone on your iPhone
Imagery depicting an iPhone or iPod Touch will get you a swift rejection from Apple. Apple cites these cases as copyright concerns and while sometimes valid, this can be very frustrating for designers wanting to explain a process to the end user. Take for example a racing game in which the tutorial shows the user how to control the vehicle. “Place both hands on either side of the iPhone, home button facing you and pointing toward the right, and rotate clockwise or counterclockwise to simulate a steering wheel turning action”. The simpler method would be to show an image but Apple doesn’t take kindly to this. Note that some lucky developers have gotten away with this but with every app update comes another review process and another chance for rejection.

6.) Defamatory imagery of famous people
Apple rejects images that defame famous people. I’d love to see a tabloid try to get through the review process. Good luck. Extra warning for those creating a political app. Some have noted rejection due to political caricatures.

7.) Simulating failures
If your million dollar app involves a broken/cracked screen joke, bluescreen, kernel panic, or other simulated hardware or software failure, think again. If it will make a little girl cry because she thinks her iPhone is broken, it probably won’t get through the approval process.

8.) Use of Private APIs
I’ll admit I’m not the most knowledgeable on the subject of private API use but I can provide some layman’s interpretation of this common issue. Apple provides but does not document some functions that even they themselves use. These functions may change at any time so since they may be unstable, untested, and not guaranteed to stick around, Apple is rejecting games or apps with these calls via an automatic detection process. Recently, Apple has been providing warning emails instead of a full out rejection, which I think is a really wonderful idea. It cuts down on the number of reviews their team has to do and helps make the developers lives a bit better by avoiding a resubmission.

9.) Egregious network activity
Some developers have noted a rejection based on bandwidth usage. A rule of thumb is that a game or app should never exceed 4.5mb of data per 5 minutes of activity. I would imaging AT&T’s GPS app, which downloads all map data in real time, exceeds this limit but developers should nonetheless monitor traffic to see if they’re getting near this critical bandwidth limit.

10.) Localized text in images
This is a tough one. In order to properly support localization, you should keep all images free of localized text. If you only care about sales in one region, go for it, but this seems to be an increasingly bad idea.

11.) Pricing text in description or images
Keep your description free of dollar amounts. Each app store uses different currencies so referencing price in dollar amounts will not help your case. Once again, this is rampant in descriptions (Big Sale! Only 99c!) but if your target audience is not US, you might want to think twice about that.

12.) Limited functionality
This can mean a multitude of things. An app can be tagged as having ‘limited functionality’ if it has no apparent goal, feature, or purpose. Limited functionality also refers to crippling an app and re-releasing it as a lite or demo version. This is a commonly disputed and nebulous idea. What can and can’t be done in a lite version of a game? Well the answer is still not very defined but Apple will tell you that a Lite app cannot appear to be crippled. For example, visually disabled buttons or sections of the app are not allowed. Apple will also state that you cannot prompt the user to upgrade to the full version and you cannot display the price of the full version inside the lite app. Now you may be thinking ‘But I’ve seen many apps that do exactly what you’re telling me not to do!’ and you would be correct. Many, many apps have broken this rule time and time again while others continue to be rejected for it. Since the lite version debacle is still a moving target, my only advice is to make a lite version and hope it is approved. If not, follow their specific instructions on how to fix it up for the next go.

13.) Fatal bugs
This seems like a no-brainer but you need to fully test your app on all devices in all situations. Since this isn’t always feasible, do the best you can to avoid bugs and focus on crashing bugs since a crash on launch on any of the *supported* devices means an instant rejection.

14.) Handling user data
If you collect user information and the data is sent over a network, you need to explain to the user what will happen to their data and give them an option to opt out. For example, leaderboards require certain notification to the user that even their bogus name used on the high score boards will be sent over the internet and seen by others.

15.) Misuse of Apple’s UI elements
Users know how the iPhone’s UI is supposed to work and have been trained by Apple’s built-in apps. If you use a button image or a UI metaphor in an unconventional way, users will become confused and Apple may reject you for it.

Closing thoughts:
A post on MobileCrunch yesterday surmises that the App Store rules are becoming a bit more lax, moving forward. We’ll see how this goes, but for now, it’s best to err on the side of caution and obey the rules to avoid longer wait times and the disappointment of App Store rejection.

Are there more that I’ve missed? Leave a comment.


iPhone game development talk at Apple Store

For those interested in learning about game development on the iPhone, I’ll be giving a talk next week at the Boylston St. Apple Store. This talk will be focused specifically on the use of the Unity engine to create iPhone games. The presentation will cover the prerequisites of iPhone development, the Unity interface, code examples, and a showcasing / postmortem of my completed iPhone game SpringFling. The event details are as follows:

Date: December 2nd
Time: 6-8pm
Location: Boylston St. Apple Store, 3rd Floor

Come with questions. No laptop necessary as this will not be a development workshop.

Edit: Apple posted a blurb on


SpringFling v1 out, v2 in the works

So, for those of you who follow the blog but weren’t aware, SpringFling is now on the App Store! (Game website and iTunes Link)

Publicity has been going well. Check out these positive reviews/previews!

  1. AGON Listing
  2. AppAdvice Review
  3. AppAdvice Preview
  4. JoyStiq Preview
  5. SlideToPlay Preview
  6. TheAppera Review
  7. TheAppsMachine Review
  8. ThePortableGamer Review
  9. TouchArcade Review
  10. TouchArcade Massive forum thread

Cool beans.

On another note, before release, I was aware of a couple of outstanding bugs and thanks to players, have filled in the gaps to find the rest of the noticeable bugs. I’ll be working to resolve these throughout the week and hopefully submit v2 some time in the near future.

One such bug revolves around general inconsistencies with AGON, scoring, achievements, and reliability of getting these awards. Here’s the bug and the fix:

Issues with AGON and things not registering:

Issues occur when the user launches the game for the first time, plays some levels, then finally decides to launch the scoreboards. Then they are prompted to make a username but at this point, actions they had taken previously are discounted, allowing the user to get to a point where the local playerprefs file believes a certain achievement is gotten but is not gotten as far as AGON is concerned. Short term solution is to reset progress from within the game. v2 fix adds a login screen when launching the game, ensuring all players are able to register their scores/achievements properly. This does NOT mean you have to approve online scores, but you do need a username to be able to store your local high scores.

Status: Fixed