Our Ramblings. Our Thoughts.
I keep reading the sky is falling style posts & tweets about over saturation of apps on the iOS platform. Complaints about how everyone is jumping on the bandwagon and trying to strike it rich. Being a newly minted registered dev myself, and that our game Fling Shot is still being made, many could say Area 161 is sitting firmly on that johnny come lately boat. Though I am not worried, I don’t take it as criticism, and neither should you. If you’re here in this developer hotbed, and you’re here working on your app passionately, you’re doing it right. As the old saying goes, the cream will rise to the top. A team could always use another great player, just as a league could. This I believe applies to the world of games and by extension apps. For example, what gamer doesn’t want another great game to play? Sure, the tricky part is making a game great. However, those developers with the drive, talent, creativity, and passion will make great games and great apps. They will innovate, they will leverage the tools, and they will fuel the growth of this platform. So when it comes to developers, the more the merrier. Because the greater the talent pool, the greater this thing we call iOS will be.
These examples serve to point out the obvious. Trying to use the iPhone or iPad as a joystick places unnecessary barriers and limitations upon it. Analog sticks and buttons all put gameplay interaction into a defined corner. The outcome of a gaming scenario can be derived from its context and input. As such, using 2, 3, 8, or macros buttons speak to what the game can do. Whereas a tool can shape its environment. A tool can interact in real space and thereby open new avenues of interaction and gameplay. That is the place that we as designers and innovators must embrace and exploit. The tools are changing, and how we shape gameplay is bound only by how we think we can shape it. Joysticks are now a subset of how to play a game. More direct and interactive response through tools has arrived.
As the other half of Area-161, it was inevitable that I would be contributing to this blog at some point. Like my partner Tom, I’ve yet to publish a game though. That being said, we’re making this happen. Of course we talk, and we share ideas. Collaborating with a friend is exponentially beneficial. Though my part of what we do is being the game guy. I’m charged with thinking up games, game mechanics, and trying to strike that fun chord that used to make me drop another quarter.
What I’ve recently learned about creative thought is that you aren’t necessarily hit with a stroke of brilliance. Though you won’t get hit with anything unless you want to be. Tom used to tell me that I should just think of games, and someday it would hit me. What I didn’t get about that though, is that the trick is you need to actually do it. I would think “oh yeah, I need to come up with something”, but do nothing. Then I started thinking about games, and what we’re looking to do with device interface as I was falling asleep.
That happened over a few months of casual sleepy thought. Recently though, I started having an idea that was cool, but I was falling asleep, and it seemed cool until I woke up the next day. I was telling Tom that I almost had a cool idea, but I think it was just the lucid state I was in. I started to tell him what it was, and that I didn’t know what to do with it, and that it wasn’t exciting. Though I also started talking about how the game interaction could happen. It was then that, as I spoke, the rough idea fleshed itself out and a mechanic of gameplay was born. It’s as if my subconscious was working on it, and didn’t tell me until I described it to someone verbally. I went to bed thinking upon that, and the whole game came to life in my head. I can see it, I can play it, and it’s because I wanted it to happen.
The ideas were strung together over time, and my brain was tying stuff together that I didn’t even see. My starting point, the lucid dream one, which got me excited, is nothing like the final game. It was thought process, and willful intent that got me to the end point of a game. Opening my mind and being receptive to where it wanted to play, and going back to that playground if you will, over and over. It’s interesting how the process works, because it’s more about wanting it to work, and working it from that angle.
We are all capable of so much more, we just need to find a way to tap into that super consciousness. My particular lucid dream path may not be yours. Though this much is certain, you have to want it, you have to seek it out willfully, and you have to persevere. The great power in that, is that it can be applied to many types of goals. When the time is right… you’ll really feel that creative/productive groove.
Today, we’ll talk shop. Despite the fact that we have big dreams of becoming this Tour de Force in the industry, we still need to make games. While we’ve had tons of ideas, the one we decided to move forward with was the project codenamed “Darts”. It’s not really much of a codename, since that’s pretty much what the game is, but hey, we’re still new at this so cut us some slack.
Now, the demo may not look much further than what I did back in Austin and that’s probably a bit true. However, we have swapped out Cocos-2D for the PixelWave framework instead. Oz and the team have done a great job making the syntax of their framework very familiar for those of us coming from the Flash platform. Now, don’t get confused. It’s not Flash on the iOS platform. It’s a native iOS framework whose APIs strongly resemble the Flash APIs. Therefore, you don’t have to change your thinking all that much.
Here’s the demo video. I’ll talk a bit more about it you view it.
The next thing for us to do is pretty much the “magic” in our app. I’m knee deep into CoreMotion at the moment. Here’s a direct quote from the documentation of CoreMotion that I’m trying to decipher:
This class defines three mathematical representations of attitude:
- a quaternion
- a rotation matrix
- the three Euler angles (roll, pitch, and yaw)
Yeah, suffice to say, our cute little game has some pretty big math going on behind the scene. I’m probably digging in a lot deeper than I need to, but it’s something we’re gonna need to know later on anyways. Therefore, I’m trying to learn as much about it as I can.
Making Games is Fun
I’ve been digging more into the game code this week than I have for the past few months. I’ve done a lot of research by reading a lot of the guides that come with the Xcode documentation system. It’s helped a lot. I’m way more comfy with Cocoa and Objective-C now then I’ve ever been.
The biggest surprise for me though was how fun game programming is. I remember the game jam at 360iDev as being awesome, but I thought it had more to do with the people. I’m sure it had some to do with the people, but there’s no feeling like making your own game work on a device. To be able to have your kids play and to see the excitement in their eyes. To have them say, “Dad, when is it going to do this or that” is priceless.
If you get stuck or need some inspiration, give your game to a kid. It’ll work every time.
Sometimes, You Gotta Take the Long View
While I was planning on doing a technical post on iOS dev or a progress update on our first game, things went a different way. Like I mentioned last time, our original plan has always been to build a lasting company. Initially, we thought we’d make some cutesy games for a few years, save up some cash and then try the waters of going full time on the biz. However, Smiley’s mind for game ideas and my yearning to push device integration to the limits has revealed our folly in that plan. Our next game is going to need more than just me developing it. It won’t need an army, but it will need someone (if not a couple of people) to help code the game we’re envisioning.
One thing I started to noodle on though was that this team would likely be remote, much like Smiley and I are. Some may live by Smiley since Bellevue Washington is a hotbed for game devs, but I doubt any will live in the sticks of Arizona near me. We would likely have to collaborate on the code. What would be nicer is if the remote team and I could do code jams, much like the game jams at 360iDev. The flights to do it would be expensive, but I could see no other way because the output of those jams are too good to pass up.
Build the Tool to Fund the Company
Normally, you get funding for your company, which helps you build the tools you need to run your company. However, Smiley and I don’t want to take funding on for Area 161. We have some pretty crazy ideas, NONE of which have been tested and proved in the marketplace. Therefore, investors would be meddling and we’d be getting frustrated, etc. We still do need funding though, to hire folks. What to do?
I told Smiley about a month ago, “I need to find us capital.” He said, “How you gonna do that?” I wasn’t sure and I was honest, “I don’t know. Something will come up though. I know it.” Two weeks ago, I started to get the feeling that there was an idea in me, but I had no clue what it was. I was reading an article and while reading it, an idea quickly flashed in my mind. It was a quick flash and I didn’t even realize it until after I read another paragraph or two. “Wait? Did I just have an idea?” I did a mental rewind and sure enough, I did.
Sometimes Ideas Appear Whole and Wrapped in a Package
I whipped out my notebook and starting sketching the idea. After a couple of minutes, it was complete. Version 1 of a tool that I’ll need in order to make Area 161 a viable company: Remote Jams. The actual sketches from the notebook are here. I looked at this tool and said, “Aside from Area 161, I’d use this tool in my dayjob if it was available right now.” During the weeks after I hatched the idea, I kept track of every time I wish I had the tool. It was pretty often. That cemented the idea in my mind and validated the need.
The tool basically simulates the “Hey can you look at this real quick?” moments that we have with onsite teams or live in-room game jams. It’ll be an open source project, with a premium edition to generate income. The goal of the income will be to provide funding for Area 161. The nice thing is that we can’t hire anyone until the tool is complete, but we wouldn’t be as productive until we had the tool anyways.
So is Area 161 dying?
No, far from it. We’ll keep trucking along on our darts game, which won’t require any outside help. We know it’ll be a great game, but we’re under no delusion that it’ll be a runaway success. It’s mainly aimed at kids (and those who are kids at heart) and requires AT LEAST two devices to play, even more to enjoy it to its fullest. However, once we launch it, we gotta start on our next game. It’s a business and a business must be continuous to be long lasting vs a flash in the pan.
Will this crazy notion work? We don’t know. Will I get so distracted with Remote Jams, that Area 161 will suffer? I certainly hope not. Plus, Smiley will be there to keep my butt in check. Is the risk worth it? To be able to build what we want, how we want with whomever we want, what do you think?
As I creep my way further and further into iOS development, I’ve discovered 2 things which help immensely:
A lot of people will claim that WWDC is THE conference to go to, but for me, it’s 360iDev. One of WWDC’s selling point is hearing from the masters and engineers at Apple talk about their work (code, classes, languages, frameworks). However, for a beginner, a lot of things like the labs and face time with the engineers just go unused.
For me, part of learning is not just watching someone talk about a particular language (Objective-C) or framework (UIKit), but hearing HOW developers use those items and then actually programming along side some of those same developers. 360iDev excels in those 2 departments. You get to hear from developers, big and small, about HOW they make the magic happen. They’ll openly talk about all their tricks in their session, then whip out a laptop in the after hours to show you even more.
The game jam alone is worth the price of admission to 360iDev. Basically, you have 12 hours to build a game (8 pm to 8 am). Imagine a ton of great iOS programmers, all sitting in a room, coding away the night. The best thing is that you can tap into the minds of a lot of these people since they are there and the community is so great. Now, this is not a free ticket to hog up all their time because they are trying to make a game too. However, a few well thought out questions to get you unstuck is pure gold. It will help build your confidence in your tech skills faster than many months of book learning and practicing. Trust me, I know. I learned more in the two game jams I was at, then all the books and sample code I read up until then.
2. Use the latest SDK and don’t look back
I now realize one of my biggest mistakes when starting iOS development. I was reading a book on iOS 2, when 3 was out. Then I was reading an iOS 3 book, when 4 was out. I thought, “Well, if I want to maximize profits, I need to support as many devices as I can and therefore, I need to support the oldest iOS version out there.”
There’s a few flaws to that logic. One, if they haven’t upgraded their OS, the likelihood of them buying and running your app is next to slim. Even if they did buy your app, are you going to want to spend your time supporting the handful of users on the old OS? Or would you rather spend that time working on new features? You have to remember that every version (or platform even) that you choose to support, means just that: support! If you don’t support them, they’ll cry afoul.
The other reason that is flawed is because of improvements to the SDK. Case in point: UIGestureRecognizer. Of you’re still messing with IBOutlets and onTouchUp and crap, don’t! Skip all that and learn all about UIGestureRecognizer instead. Apple’s brilliant engineers are constantly trying to make your life better. If you wait until 2 or 3 releases down the line before you use a new feature, you’re sort of missing the point. Help them help you!
That’s it for me. Next time, I’m hoping to have an update on our game codenamed “Darts”. See you then!
A Lot has Gone On
Quite a bit of stuff has gone on since we’ve last met via #iDevBlogADay. I’ve stopped traveling every week to Area 161 HQ and am back home with my fam in Arizona. No, that doesn’t mean the company/biz has been dissolved. It just means that the work I was doing *outside* of Area 161 changed. While I’m bummed I don’t get to see Smiley on a weekly basis, we knew this was eventually coming. Our company is now 100% remote.
In addition to that, I’ve come to the realization that our lil business is not really going to be very little. We have plans, big huge plans that are gonna take some cash. While “Darts” is a cutesy fun lil game, the ones we have in the dev pipeline after it are huge in scope and premise. What’s the point of doing something if you don’t go big, right?
Going Big Means Money
Now, we originally had a 3 year game plan. Meaning we were completely okay with it taking us 3 years to get to the point where we were both full time on the biz. That’s when we figured we’d be making cutesy games like Darts over those 3 years. We now see that if we want to build the games we want to build, that’s simply not feasible. If it still takes as long, so be it, but we’d like to get there sooner.
I’m working on some ideas to generate some startup capital. No, I’m not talking VC or Angel funding. That type of startup capital just doesn’t appeal to us. We’re both big thinkers and we don’t really need someone to babysit us. I mean, we might, but we’ll wait until we discover that pain point ourselves. Instead, we’re gonna go the self-funding route. However, neither of us have funds, so that’s a little bit of a speed bump in the plans.
I have a few ideas on how to get some funding. They will likely take time away from this business in the short term, but the hope is that one of the ideas pays off enough to provide the much needed startup capital. I’ve known that I was going to create a huge gaming company since I was in the sixth grade. Therefore, while the speed bump may seem odd to some, it makes sense to me. I’ve been planning for this business for 23 years, so another year or so isn’t that much to me.
Smiley and I have been friends for a long time. He sees the need for capital as well. Therefore, he’s on board with the plan as well. It’s nice to have a friendship of 20 years as your partner in times like this. He also wants to go big, since most of the game complexity is coming from his ideas! LOL I’m just a programmer, he’s our great game designer.
What Does This Mean for Darts?
Not too much, other than dev has been slow these past few months. In addition to moving back home, my wife and I are expecting a new baby in July and we just bought a house this week. I already mentioned the new job that I started near the beginning of the year. A lot of things demanded my attention and so the game programming lagged.
My dad, our primary game artist, has been here that past couple of weeks. His artistic spark has been rekindled. He sorta hit a speed bump in creativity after doing the initial artwork for the game. I’ll have him do a blog post to explain it for our next post.
I’ve been using Xcode 4 for a lot of prototypes we’ve been building for Darts. Therefore, the introduction of the new IDE has not really affected us much. The biggest problem has been now that we’re using PixelWave for the Darts game, we need some templates for Xcode 4. The PixelWave team are hot on it though, so I expect them to arrive soon.
Expect to see some more in-depth posts about our game dev process, remote development (programmer in AZ, artist in CA and game designer in WA), the PixelWave framework and probably some updates on our funding efforts.
We’d like to thank Miguel Friginal, aka @MysteryCoconut, for figuring out how to speed up the #iDevBlogADay wait list. Now that we’re back on, we’re even more motivated to get stuff done to share with you guys.
Talk again soon and good to be back on track!
So, PoV’s Challenge is over. Sadly, we here at Area 161 did not make the magical deadline. It was a crazy deadline for us going in and we knew that. One of our dependencies is an iOS version that’s not even released yet, so we knew hitting the October deadline was not going to be possible. However, we did get a much needed jolt from the challenge.
One thing is certain for novice game makers like ourselves. To quote an email from my dad (the main artist):
Are we still on schedule? Is there a schedule?
That’s the thing. If you’ve never made a game, you’re not really sure what the schedule should be. I figured taking on PoV’s Challenge would at least get us moving towards a goal and 1 month seemed as good a timeline as any.
The lack of progress probably rests upon me more than other team members. I need to be the driving force behind this effort. My dad can draw to his heart’s content and Smiley can throw idea after idea, but until I can code faster and more regularly, I’ll be the bottleneck. I’m getting comfortable with iOS dev, but the speed definitely isn’t there yet. If only there was somewhere I could get a turbo-boost in the iOS dev category. Oh wait, there is.
360|iDev is next week
Exactly one week from today, I’ll be in Austin participating in 360|iDev, the best iOS conference for an indie dev. I announced Area 161 back at the last 360|iDev. We then sorta validated some of our ideas at WWDC. PoV’s Challenge sorta put steam into our engines. I’m looking to this version of 360|iDev to finally get us to full steam. The game jam is my favorite part of the conference. Despite what the rules are, I’ll be coding “darts” while I am there. Taking full advantage of all the genius game making minds there to help me make this game.
If you’ve never been to a 360|iDev and you want to jumpstart you iOS game making career, drop everything and attend it. Yes, I’m biased cuz I helped create it back in the day, but others sing its praises. There’s even a great 101 intro to iOS dev on Sunday by the great Ray Wenderlich and it’s included in your base registration.
If you go, see you there. It’ll definitely be a game changer for us (pun intended). If not, you’ll be sorry. Really, you will.
This week I am at Adobe MAX, which is Adobe’s huge developer conference. While it was devoted primarily at the Flash Platform, there was some pretty interesting stats that would apply to iOS developers.
Mobile is weak in everything EXCEPT bandwidth
One of the most exciting stats that I saw had to do with mobile as a platform. While we know that processors, memory, resolution are lacking compared to desktops, it’s interesting that by 2013 it’s predicted that mobile internet will blow by cable/DSL speeds. This is interesting in that while the devices are weaker than their big brother desktops, they’ll be a lot fatter in data.
What does this mean for games? I’m not sure what, but something in that news struck a chord in my developer heart. With social aspects playing a greater and greater role in games, this can only be good news on that front. We’ll be able to constantly bombard the games with social network data and toss what we don’t need after the fact vs. wasting cycles creating filters before hand.
Write-once, run-anywhere == not good
Another interesting quote was from Max, a developer at PopCap Games who ported Plants Vs. Zombie to Flash. I don’t remember what the question was, but the answer was one that rang true to me. He said something to the effect of, “At PopCap, we don’t think creating watered-down, write-once-run-anywhere games are the way to go. We like to create games optimized to each individual platform.”
I’ve said it before and I’ll say it again. While the write once, run anywhere makes sense from a business standpoint, I don’t see how it makes sense from a customer fulfillment standpoint. If it’s not native, you’re getting a sub-par experience. Now, what’s interesting is that the Blackberry Playbook is using Adobe’s platform as the “native” app framework.
Don’t lost your offline personality in your game
Another interesting tidbit was not directly game related, but I think it does speak to game makers. It had to deal with how magazines like National Geographic and Wired have distinct personalities in print, but then look pretty much like identical twins online. This is due to the current limitations of HTML and HTML rendering engines. Adobe is helping change that, blah, blah. How does this apply to games?
I think a lot of game makers have their own personalities in the real world. They have wonderful personalities and passions that are clear during face-to-face interactions. However, once they go to develop games, they lose that personality. A lot of games look cookie cutter and I don’t mean art. I mean by game mechanics and even genres. Like the “Review Cheat Sheet” that was posted a bit ago, “Please no more Fart apps.” I feel the same way about certain game types and genres: No more zombie games. No more God games. No more Flight Control clones. No more Doodle games. Hopefully, Apple continues to push us to create better games built upon newer concepts vs rehashing the same concepts.
Competition in platforms == massive win for developers/game makers
One of the most exciting things about going to two competing technology conferences is seeing the advancements that competition accelerates. Competition is what makes technology so great. This back and forth and one-up manship make our lives as developers and game makers that much better.
While you may not care about the Adobe platform, it’s still good for you as iOS developers. Anything that any mobile platform does that is sweet is good for us, because Apple will then find a way to one up that. This is a great time to be a mobile app/game developer, for sure!
There’s not much news on the game dev front, but there is some news on my developer skill front that I wanted to share.
I’m a script-kiddy at heart
By that, I mean, most of my professional career as a developer has not been using languages like C, Java, etc. Instead, I started with Visual Basic for Applications in Microsoft Access 2.0. From there, I moved onto old skool Microsoft ASP development (before the whole .NET stuff). After that it was Allaire->Macromedia->Adobe ColdFusion. Next was application development (not animation) in Flash Professional, which led to my learning of Adobe Flex and ActionScript 3. ActionScript 3 is Adobe’s OOP flavored version of ECMAScript. Those basic OOP ideas in AS3 helped me make the leap to Objective-C.
Scripting languages are dynamic languages. Type casting is not required. ActionScript 3 was the first language in awhile for me that utilized typed variables. I’ll admit it was tough to grasp OOP concepts in the early days of AS3 dev because of the history listed above.
Cocoa makes you try harder
I love the team behind Flex and ActionScript 3. Their hard work on the framework and language make my day job easier. However, we know Adobe is not a huge dev company. They’re more known for their tools and design products.
Apple , on the other hand, writes A LOT of code. Cocoa and Cocoa Touch, not to mention all the flavors of OSes they keep putting out. Plus, Apple is all about design and even the various Cocoa and Cocoa Touch APIs reflect that.
The way categories and protocols play a huge rule influence how you think. The example of using a single class to accomplish many things because of these two aspects of Objective-C alone is good stuff. It makes me look at my Flex/AS3 code and say to myself, “Why are you making it so hard?”
Flex/ActionScript 3 could learn from Objective-C (and vice versa)
Yes, it is true. The two frameworks are vastly different. The two languages are vastly different. To make one try to be like the other is a disservice to the language you’re working with currently.
The thing that I take from iOS dev to Flex/AS is how to better organize and think out my code: “Do I really need all these classes?” “Do I really need to write another method?” I’m went from prototyping with lots of classes and not much thought to architecture, to finally cutting out code and allowing myself the proper time to think things out before I code.
Flex/AS3 dev helps bring a more playful side to my iOS development. With Flex/AS3, prototyping an idea is quick, easy and fun. Many people talk about how hard it is for them to quickly prototype a game mechanic. Thanks to Flex/AS3, it’s pretty much second nature for me.
Bottom Line: Following your passion helps you grow in all aspects
We wanted to make games, that’s our passion. We realized that Apple’s platform was the best offering out there. What we didn’t realize was how much iOS’s style and clarity was gonna spill over to my daily code job. We didn’t realize that it was going to get my retired dad (he’s an artist) involved. We didn’t realize it would get our families cheering us on. We didn’t realize it would strengthen the bond of two great friends even more.
Your passions are there to guide you to happiness, not make you rich. Being rich is just a by-product of life doing what you love. Remember that and you’ll always be happy.