My 10 weeks with ARKit in Beta

Or how I spent the end of my 30's

ARKit is a big deal

And it’s a bigger deal than you probably realize. If you’re reading this as an iOS user, believe me, you’ll see why eventually.  It will find it’s way into your usual apps sooner than later, and you’ll dig it. There’s a great line in Halt and Catch Fire, “Computers aren’t the thing. They’re the thing that gets us to the thing”.  ARKit feels like that to me (cough, iGlasses, ahem)

If you’re an iOS developer and ignored ARKit up till now, well, hopefully this is your wake up call. Yeah, you’ve missed Opening Day, but that’s okay. You can start working with AR tomorrow and still be ahead of someone else (insert shameless plug for our ARKit course here). And ignore what you might have seen at the iPhone X unveiling.  They showed off something none of us lowly indie devs could have hacked together in a couple short months. You can lower the bar for yourself (a lot lower) and still make something really impressive.

And I think that’s what I did. So let’s take a look at my latest app in this year’s edition of App Autopsy: A Special Before the Corpse is Cold Edition…

ARKit-example-at-Apple-Event-2

Don’t try to build this at home.

App Autopsy!

Let’s start with a confession. In the last 10 weeks, I spent WAY too much time building an AR game. I have a bit of a one-track mind (queue someone yelling back “and it’s on the wrong track”), and I know I have trouble detaching myself from projects I’m really into. Someone put me on this planet with enough art and programming skills to make apps, and when I do, I act like I’m saving the damn world doing so. When in reality, I’m making something for 10-year-olds to play and eventually delete.  At times I can hear Lester Freeman from the Wire saying “the job will not save you McNulty”. But McNulty was always his personal best when he was deep into the job. Without the job, he was crashing into overpass supports. Some of us need the job.

It also doesn’t help that app development is a form a gambling. It really is. Your app could be a success. It could be a failure. Depends on how you measure that. I have students tell me all the time they are thinking of quitting app development because they don’t know how to monetize their app or they just had wildly different expectations. I understand those frustrations, but  when I see the apps those students have made, its usually obvious which was their first, which was their second, and so on. The quality never goes down on subsequent submissions.  So while yes, it sucks to do anything that underperforms, if you’re consistently improving as a developer, you can’t say it wasn’t worth the effort.

Whether this app gets 5 downloads a day or 5000, it has served it’s purpose. The adventure is in the journey and I’ll detail some of that here. And if anything, this at least proves your humble instructor does at times get high on his own supply. I coach you app-developing gladiators but occasionally I do enter the arena.

 

June – I should have been working with ARKit this month

Let me rewind to June when we all first saw ARKit. As usual I was sarcastically tweeting away from my office during WWDC. I like to play the part of both Kool-Aid-drinking Apple Fanboy and Grumpy Old Muppet during those events because, why not. I’m still miffed us dev’s can’t make custom Watch Faces (I mean, really, throw us a bone).  But what we saw at WWDC was without a doubt cool. And the fact that they included Sprite Kit in on the Augmented Reality party was fantastic. They easily could have thought “well, Scene Kit is for 3D, ARKit is more of a 3D thing, so…. sorry Sprite Kit, it’s not personal”. But they didn’t! And thank the Maker, because seeing 2D in the AR world is just as exciting. But as usual, I didn’t just drop everything work-wise after WWDC (even though I probably should have).  So note to self for next year, “start in June dummy”

This I actually did try. Didn’t go that well.

July – A trip to DisneyWorld and a phone with Touch Disease goes to iOS11 Beta

The first week of July I went to Disney World. At this point I still hadn’t installed the Xcode 9 Beta, much less committed any devices to iOS11 Beta. But going to Disney World is always a kick-in-balls as a creative person. You’re surrounded by creativity, and it can hurt as much as it can inspire. You feel like “what have I done lately?”. Or ever.  And at the time I was two months away from turning 40, so that feeling was a bit magnified.  Every day there made me itch to get back home and get to work (June regret set in). I had seen what Apple was cooking up, and I knew I could combine AR with some Disney-esque flair. I can still draw and animate, all this coding hasn’t completely broken me.

So I had a long drive back from Orlando to stew over the possibilites. Interrupted by kids and billboards. On one hand, I’m thinking “man I wish these kids in the backseat had some AR crap to distract them now.”  And on the other hand, I’m looking at these billboards like, why aren’t these just augmented now. Someone could geo-plot billboards as often as these real-world billboards are cruising past me and make a fortune.  Real billboards require real ownership. You gotta talk to some guy on a farm, erect a billboard, then change the freakin’ thing every so often. That seems like a lot of unnecessary work in this post-AR world we’re now living in. During this day-dreaming, some part of me must have also fast-forwarded to whenever we’re all wearing Apple Glasses.

A scene from my drive to DisneyWorld when those iGlasses are released

Here in 2017, a virtual billboard app has one tiny problem. Who the hell would ever download that AND actually use it. Once the uniqueness of augmented reality has run it’s course, no one is going to drive down the highway and “ohh” and “aww” at what’s essentially an endless banner ad app.  But yes, in theory, the world is your advertising oyster if you could just sucker people into using some other app to facilitate that (ahem – cough – Maps)

So anyway, I drove home thinking there had to be a fun way to fuse location data and AR. My first published app, Zombie Air Strike (for the iPhone 3) was Map based. It was also probably the only Zombie-titled app to never show a zombie. One layer of the game showed a real-time satellite image from the MapKit API, and a layer above that was some infrared-style graphics identifying zombies on the map that you could bomb. Stupid right? Not so fast, you could actually leave crater holes in the map. So if you blew up your house, a big crater would stay there while you kept navigating the map.  I love the idea of owning certain spots on a map, but only if it means the rightful owner of that spot is annoyed you’ve put something there. How fun would it be add Godzilla crushing someone’s home?

Back on topic, the Disney trip is done and from here on out I didn’t waste any time. I powered up my old iPhone 6 Plus, which had a serious case of Touch Disease (Google it), installed iOS11 Beta, and downloaded the Beta of Xcode 9. When I ran the ARKit / SpriteKit demo, I was floored. Apple nailed it. I tinkered a bit, had a few “Ah-ha” moments, and got a good feel for how to use it.

So then what did I do?

I messed around with Amazon Dynamo DB for the next few weeks. Pretty much completely ignoring ARKit, and instead working with a database. Did I know anything about databases at the time? Of course not. So why this epic multi-week detour?

I wanted to see if I could save location data in a database to bring back what I’d left in the AR world.

August – “Oh, I don’t even know what I’m doing here”

^obligatory Star Wars quote

So here comes August. The database experiment was a success, but at this point, that’s really all it was. Just saving and querying longitude and latitude data does not make much of an app. I needed to make something fun and basically get over what was possible, and get on with what was practical.

I drew and animated some birds flying and a ring of fire. Then I took a ball and tossed it through the rings to hit the bird. Compared to the time I spent messing around with location data, this was a walk in the park. I saved some of the video from that day, which you can see to the right.

It looked good and I felt like I had an angle on something. So I thought, “Ok I’ll start by making a kid’s game where you toss balls through rings”. Conceptually it didn’t get too much further than that, but really, do you need much more than that? Balls. Holes. That’s most games.

Mid August – Animating a lot, still programming daily

This was a tough month. I needed a ton of animated cartoons, which stylistically I couldn’t find anywhere (other than on TV, when my kids were watching the new Mickey Mouse). As I couldn’t rely on stock art sites, which I’ll admit I’m not at all opposed to at times, I had to draw and animate everything myself. Karmic punishment for pillaging stock art sites the Summer before (that’s another story). No sooner would I get an animation sequence finished, would I realize more code needed writing. One thing would spur another.

Somewhere around this time, I started to realize that all the little components I was making for the game – rings, obstacles, animated characters, extra balls, all that was going to waste if I’m the ONLY person building levels for the game. I could easily let users walk around their own homes and add those elements into their Augmented Reality spaces.

So you can see in the video to the right a little example of how that works. Which to me is actually the killer aspect of this app.

End of August – I’m part vampire now and the end is not as near as I thought

About this time I gave up sleeping next to my wife. Working at night to me is what pilots do when they make up time in the air. I’m twice as productive between midnight and 6am than any other 6 hour block of time. I could wake up at 8am with 12 hours of sleep and I still couldn’t put the pedal to the medal as hard as when I’m burning the midnight oil. The house is quiet, the world is quiet. It’s me and the TV.

At this point, the levels were coming together, I was putting together a rewards system for the game, and that 3-Thing hook you find in pretty much every decent kids game these days: levels are easily passed, but it takes some work to collect three stars in a level. And the extra work meant getting up off your butt to move around some.  In my app, if you get all three stars you can unlock Level Builder items, and the more stuff you hit in the game, the more coins you earn.

As tired as I was, I was still working at a great pace.  And with September around the corner, I was going to finish this thing up around my 40th birthday, right when Apple was going to say “pencils down, turn in your assignments”.

September – Are we still working on this?

I can’t tell you how many times I told my wife “this is probably my last night staying up late”.  I’m not sure why, but I was convinced Apple would send out the Xcode 9 GM (Golden Master) right after Labor Day. It just felt like having two full weeks in September to work would be too good to be true. Well, true it was. Great for the app, terrible for my body clock.

That extra week came in quite handy. The app always had the option to save a cartoon left at a certain longitude and latitude. Which meant, anyone, not just you, could go to that same general spot and find it. What this feature lacked was some personality. In that final week I added in an emoji option where users could customize the Toons they left places. So for example, if you want to place a bird outside the White House, expressing how you feel, you could do that by making the bird have a little thought-bubble above it with an emoji. And you could spend coins you earned in the game to leave it there for up to a year. Plus if someone shoots down your cartoon while playing, you earn the same number of coins they did. Remember that database programming I thought I wasted a lot of July on. It got used after all.

September 19 – That’s today….

…Well today for me, the guy writing this right now.

So I worked up untill Sept 15th, a few days after Apple allowed us to submit iOS11 apps.  Dotted my i’s, crossed my t’s. Then turned in my app. Which as many of you know, is first-come, first served to get reviewed. After two days, it was still “Waiting for Review” which is normal. I opened the app on the third day and found a major bug. Well major to me. Anything less than perfect for the launch was major. So I self-rejected it and uploaded a new version right away. Which of course put me in the back of the line. Is there an app for holding one’s place in the review queue? 

Well, thanks to Apple’s speedy review team, yesterday (the 18th) it got approved. Which brings us to today. It’s currently marked as Pending an Apple Release.  But by the time you read this, it should be live. And it’s free, so if you read all this, why not check it out.

Download Tooniverse – For Free!