Insight VR

A Big iPod Touch? Evolution and Revolution.

by john on Feb.05, 2010, under Uncategorized

I consistently see the iPad dismissed as a nothing more than a “big iPod Touch.” I think this comes from the fact that people have difficulty distinguishing between and incremental change and a revolution.

I myself fall into this trap all the time. To illustrate, I’ll recount a particularly painful personal example. In college on of my good friends tried to convince me to take a database class from Jeffrey D. Ullman. The idea behind the class was that they had a database with a third of the text of the entire internet on it and all the links between those sites. “Think of all the cool things you could do with that!” my friend exclaimed.

I countered that with two arguments. The primary one was that I couldn’t stand Ullman. I had very high opinions of nearly all of my professors, but Ullman was a clear exception. I could go on and on about this, but the primary reason was due to interpersonal interactions in office hours. He seemed to have little tolerance for undergrads, or perhaps it was just me that he couldn’t seem to stand. In any case I readily admit that my experiences with the man informed my opinion of the course.

The second argument was actually relevant to the greater point of this post. I stated that you could use such a database to make yet another search engine, maybe one that was incrementally better than Alta Vista (my favorite at the time) but that is about it. Who wants to spend a quarter learning about that?

Of course it turned out that Ullman was merely sponsoring the course and that Sergey Brin and Larry Page were really doing the teaching. This wasn’t just a CS course about building a search engine, it was a chance to get in on the ground floor at Google and be at the forefront of a revolution. I not only missed it, I dismissed it as simply an incremental improvement. My lack of ability to extrapolate combined with my willingness to manually sift through several pages of search results to get what I wanted blinded me to the potential of what was right in front of me.

I only realized the enormity of my mistake a little over a year later as Google launched and provided what was clearly more than an incrementally better search experience. The enormity of the mistake has grown since then as Google has grown and become more useful.

So now I try to be a bit more humble, a bit less dismissive, and try to imagine how seemingly incremental changes can lead to a revolutionary result.

The iPad is a device that has revolutionary potential. This potential is masked by the fact that iPhones and iPod Touches are now commonplace. People are very familiar with their advantages and limitations. The “big iPod Touch” argument serves to highlight the limitations of current devices, point out where the advantages of those devices will be missing in the iPad, and fails to see the advantages an iPad might have over things we are used to.

For instance, iPhones don’t do multi-tasking of third party apps. Currently the iPad doesn’t either. But what does multi-tasking really buy you in a GUI that only allows one application to be front and center at a time? The commonly cited example is Pandora playing in the background. I admit that would be nice to have. But is that use case alone worth the overhead that allowing all third party apps to multi-task would cause? Maybe it will be in the future but for now Apple’s answer is clearly no. This reflects the philosophy of the device which is clearly simplify, simplify, simplify.

On the subject of things that the iPhone can do that the iPad won’t do it is easy to come up with items. The iPad won’t make phone calls. The iPad won’t fit in your pocket unless you have magically large pockets like Stephen Colbert. The iPad is (gasp) missing a camera. Well, at least as far as we know.

Of course the reasoning behind all of those design decisions is that this isn’t a device that is meant to be carried around all day in your pocket. Because of that there are uses that it is ill-suited for and Apple hasn’t focused on things that it would do badly.

Finally, there is the problem of not seeing what it is capable of that an iPhone is not. Oddly enough the “just a big iPod Touch” argument seems to deny the advantages that its bigness gives it over an iPod Touch. The first is that you tend to interact with an iPod Touch with either one finger or two thumbs and use presses or short swipes, because that is all there is room for. The iPad opens up a whole new world of possibilities for two handed gestures, using multiple digits at once, and gestures that go beyond swipes and pinches. So it isn’t simply a big iPod Touch, it is the first consumer device that allows for a real multi-touch experience. The screen real estate doesn’t just provide more room for input of various types, it provides a lot more room to display things. So there is room for richer interfaces than on an iPod Touch. There is room to put up a lot of information. Frankly I think there is going to be a market for scientific visualization and data visualization apps in general on the iPad and people are going to do amazing things in those spaces because of the screen size and ability to manipulate visual reresentations directly.

It is also “bigger” in terms of computing horsepower. So you can do more and have more responsiveness than on an iPod Touch. People will downplay this, but there is a real advantage to the illusion of directly manipulating objects with your fingers. Any lag harms this illusion. Give a system enough lag and you give up the illusion entirely and to the user it seems as though you are entering a command and hoping that the device complies rather than directly manipulating things.

Those that don’t attack on the “big iPod Touch” front attack on the “it isn’t a real computer” front. These people are blind to the disadvantages of the computers they sit in front of everyday, to the point that they trumpet even netbooks as superior to the iPad.

On current computers that utilize a desktop metaphor GUI there are a multitude of things that a user could potentially do at any time, most of which are useless, wrong, or even harmful. There are keystrokes the could press, or key combinations. There are menu items and other GUI objects such as windows, menus, buttons, and scroll bars. To many of us this all seems very natural since we’ve been using systems like this for 25 years and we don’t realize the mental overhead involved in using such systems productively. There are an enormous number of options available at any given time and experienced users simply filter the great majority of them out and then go hunting for them when they are needed. The iPad does away with huge amounts of this overhead. By only presenting one application at a time it minimizes how much windowing infrastructure there needs to be and how much users need to understand. By removing direct access to the filesystem it does away with an enormous amount of complexity and potential to do hard. Most of what users do with current filesystems is loose files. By reinventing the software installation process it does away with questions about where you want your application to live on your system and eliminates an enormous source of friction in installing new software.

These are all things that are second nature and therefore currently invisible to expert users of Windows, Mac OS X, and Linux. Note that the people currently geeky enough to opine on the iPad tend to fall into the category of expert users of current systems. Because of this they are blind to the shortcomings of those systems and also highly aware of what they see as the limitations of the iPad.

But 90% of people are not expert users. Okay, that number can vary up or down depending on your definition of “expert users” but the great majority of people have little use for the features that the iPad seems to lack that can be found in other computers.

So what is it that most people want to do with computers today and in the future? First of all they want something that just works. The past 30 years in which personal computers have been widely available have taught people that computers that just work are fairy tales. Before you can make a computer work you have the overhead of software installation, virus concerns, network setup, etc. Not to mention concerns over disk space, RAM, and other requirements. We’ve become so accustomed to this way of doing things that we have a hard time imagining it being any other way, but given the choice we’d prefer to have things just work.

Secondly people want to use computers (or perhaps devices) to consume media. The people writing about the iPad are by definition media creators. They write their articles and blog posts and make YouTube videos. They appear to be in some sort of majority because we don’t see any output from those that only consume rather than create. But the secret of Web 2.0 is that 1% or less of users are creating content, or even commenting on blog posts. The great majority of that participation is useless and contributes nothing. So millions are reading, watching, and listening without creating anything. A device that allows them to do that with as little friction as possible is a dream come true.

If people are creating content it is in the form of tweets and Facebook posts. Something the iPad handles as well as if not better than a traditional computer. Besides, if you really want to create content a netbook isn’t for you either.

The iPad might have gotten a more thoughtful response by critics if the iPhone and iPod Touch didn’t exist. Without something concrete to compare it to critics would have had to consider it more carefully and imagine its possible uses. Instead they fall into the mental model of how they use current devices. This is a huge mistake. The set of evolutionary advantages that the iPad presents will result in a revolution. Take it from someone that missed one. In one, five, and ten years will look back and see this as the start of a new form of mainstream computing which will have reached into areas that we can’t foresee now.

1 Comment :, , , more...

Indie Relief

by john on Jan.19, 2010, under Uncategorized

A bunch of indie Mac and iPhone developers have gotten together and are going to donate all proceeds from the sale of their software tomorrow to various charities in Haiti.  The site is at http://www.indierelief.com/.  I tried to get in on the official effort but I guess I heard about it too late as they’ve closed off submissions.

But I won’t let that stop me from participating. In fact, I’ll go them a few better and donate all Battle for Vesta proceeds from today, tomorrow, and the next day to Healing Hands for Haiti. That’s the 19th, 20th, and 21st of January. I’ll post totals when they’re in. I’m guessing that they’ll be modest, but if you want to have some fun blasting asteroids and help out people in need, here’s your chance.

Leave a Comment more...

Battle for Vesta on Sale for $0.99

by john on Jan.13, 2010, under Uncategorized

I’m doing a pricing experiment today. I’m dropping the price of Battle for Vesta to $0.99 to see if that increases revenue at all. Given that $0.99 is pocket change it should increase the total number of sales, but it will have to more than double them to increase revenues. Of course there seems to be a massive race to the bottom in the App Store, so maybe I have to price at $0.99 to be competitive.

Leave a Comment more...

Battle for Vesta, OpenGL, and 12 Years of Portability

by john on Jan.12, 2010, under iPhone

About 12 years ago I had a CS assignment to write an asteroids game called Blaster over the course of a week using OpenGL.  Technically we were using Brian Paul’s Mesa3D library on Macs that didn’t have any hardware graphics acceleration.  The assignment only had a few requirements, such as 3D asteroids that broke into smaller asteroids when you shot them and other simple asteroids gameplay features that you would expect.  Most implementations were pretty vanilla, as time constraints and performance problems limited what could be done.  Each time the class was taught somebody would go overboard and make a fancy version of the game that performed well, had some particle effects, and perhaps an enemy ship and then give it a name such as Super Blaster.

I started working on my 3D asteroid code first.  While we could simply use a GLUT primitive for the asteroids and get full credit I thought it would be fun to try to write a 3D fractal routine for the asteroids.  That went quicker than I had thought it would and soon I had some very dangerous looking asteroids floating around the screen.  It seemed a pity to shoot them in a 2D plane.

I had recently picked up a freebie Rubik’s cube at a job fair.  Some company whose logo has long ago faded from my cube was claiming that they were only going to hire geniuses and were using a 3×3x3 cube to symbolize that.  I was wondering how to make a compelling 3D asteroids game and staring at the cube when I had a realization:  a 3D implementation would be fundamentally different from a 2D one in how you handle the edges of the world.  In traditional asteroids you can fly to the edge of the screen and you’d pop out on the opposite site.  In 3D with a first person view you still needed to have some sort of world boundary or you’d need a limitless number of asteroids to fill the area.  In order to get the same wrapping effect in 3D I imagined that the world was the Rubik’s cube and my ship was always in the center of it.  If I moved forward in reality all of the asteroids would be moved backwards.  If an asteroid left the bounds of the cube it would “wrap” to the other side.

I coded this up pretty quick and began to play with it.  Then I had another realization:  It takes a lot of asteroids to fill a 3D space.

In a 2D asteroids game if you’ve got ten asteroids on the screen, that is a lot to have going on.  In 3D asteroids if you have 10 asteroids in the world you’re luck if you ever see one, and hitting one doesn’t happen by accident much.  So I increased the number of asteroids a great deal (around 100) and then things began to look like something.  But then I faced another problem.  Shooting 100 asteroids isn’t fun, it is work.  Finishing a level would take forever and would definitely not be fun.  Clearly I needed an objective other than clearing the world of asteroids.  So I put in some enemy ships and gave them some simple AI.  The objective became to shoot the enemy ships while dodging the now plentiful asteroids, which you could shoot if you wanted to.

I wrote this on a 16MHz Mac Performa using software rendering.  Moving all the objects around didn’t create a performance problem, but making the screen very large did.  But it ran fast enough to be playable in a 320×200 window on my Performa and luckily it was graded on a 300 MHz machine that could run it fullscreen at 640×480.

I got a good grade and one of the TA’s even got me into the SGI lab and we did a quick port to an SGI machine.  By quick port I mean about 30 minutes to get the input stuff moved over.  Other than that it just ran, and ran quickly at high resolution.

A few years later I had a ThinkPad for work which had a mediocre graphics chip in it, but that was better than nothing, right?  I ported the game to Windows and suddenly it flew.  I had to implement some timing routines to slow it down to 60 fps.

Here’s a screenshot of it running on Windows:

As you can see I’ve changed the original ship design for reasons that should be fairly obvious.  For those that can tolerate the ugliness of an old Angelfire page you can find a working download of the Windows port and complete source code here.  About that same time I did a quick port to Linux as well.

Now here we are 12 years later and I have more computer in my pocket than I had on my desktop in college.  The iPhone has more powerful processor, more RAM, more storage, and a decent graphics chip.  Once I got a dev kit I began porting the game.  It took about a day to get a stripped down version of it working on the iPhone.  So my college project began its journey from Blaster to being Battle for Vesta.  The main change was the move from display lists to vertex arrays for OpenGL ES.  That didn’t mean that I had something I could put on the App Store, but it meant that rather than starting from scratch I had a core engine around which I could build a game worth putting into the App Store.  One thing worth noting is that the bulk of the code is still C++.  I have yet to learn Objective C and really didn’t have any need to do so for this project.

Several weeks ago I ported the iPhone version over to Python.  This involved a lot of searching and replacing to remove the C++ syntatic sugar but didn’t require an substantial changes to the OpenGL code.  That effort took about 8 hours and allowed me to quickly experiment with different collision detection optimizations in Python, which was much easier than doing the same experiments in C++.  I’ll admit to having become a Python bigot and that my C++ skills are not what they once were.  Having a Python port also allows me to use my strange pySight and wiiMote stuff that runs in Python to control the game.  That version runs on Mac, Linux and (I assume) Windows.

Now imagine if instead of OpenGL (ok, Mesa3D) we had used some early version of Direct3D for my graphics class.  Not only would everything I wrote have been deprecated five times over by now and what platforms would it run on?

There really is something to be said for open standards and libraries built on those standards.  While there isn’t enormous value in an ultraportable 3D asteroids game the same principles apply elsewhere.  If you are writing something that is going to have a useful life beyond a couple of years you should consider carefully the core technologies that you use to build it.  Don’t be distracted by buzzwords and whatever the most recent flash in the pan is.  Even if what you are working on seems like a throwaway code, writing it for portability can allow for opportunities that wouldn’t otherwise be available.

For the curious here’s what it looked like on the iPhone at version 1.0. Now it has some textures to liven things up. [EDIT:] I’ve lowered the price today to $0.99 in case anybody wants to try it out on a whim.

8 Comments more...

The App Store IS Getting More Efficient

by john on Jan.08, 2010, under Uncategorized

Several weeks ago John Gruber linked to a web comic about app rejections and made a joke of his own about the efficiency of the App Store. My experience is that after the iTunesConnect site went down for maintenance and a holiday break on December 23, 2009 and came back up on December 28 things have been considerably more efficient. My game was submitted just before the site shut down on the 23rd. I have no idea if they were working over Christmas and the weekend while the site was off, but the game was approved shortly after it came back up on the 28th. The first update was approved in four days. The second update was submitted at about 4 pm today. Email notifying me that it was approved arrived at 8:19 pm.

I have no idea if this is unusual or not or if it is a result of changes implemented recently. I for one am happy with the results. In any case, after the amazing amount of criticism that has been directed at the approval process over the last 18 months, it seems only reasonable to point out when they’re doing something right.

Leave a Comment :, , , more...

Piracy and iPhone Game Marketing

by john on Jan.05, 2010, under iPhone

So Battle for Vesta has been live in the App Store since December 28, 2009. In that time I’ve posted about it in forums, promoted it on this blog and Facebook and Twitter, given away a lot of promo codes, and posted on a lot of forums. I created www.battleforvesta.com and posted a trailer and videos of gameplay on YouTube and Vimeo. I’ve also emailed dozens of iPhone app review sites. So far one of them has been kind enough to send an automated acknowledgment of submission email, in which the site admits that it might never even look at my game and even if the game gets looked at it probably won’t get reviewed. There has been no response at all from the others.

In short, while I haven’t done a perfect job of marketing my game, I’ve done as well as I knew how to at the time and have learned some lessons. I’ve also set up Google alerts so that if the game gets mentioned anywhere I know about it and can respond appropriately.

Marketing an iPhone game is incredibly difficult right now. The market is crowded (much of it is crap) and it is very hard for casual users to discover new apps that might interest them. With this in mind I’ve priced the game at $1.99, so that it can be an impulse buy. While I think the game is worth more than that, I didn’t want the price to be a barrier to people that were merely curious about it.

So after being live on the App Store for a week I’ve sold about 30 copies and about the same number of people have turned in promo codes. I’m not ecstatic about those numbers, but I’m not surprised either. I will say that I’m a bit disappointed in the unwillingness of people to rate and/or review the game, especially if they’ve been given a promo code and agreed to.

This morning my Google alert told me that the game had started to show up on pirate sites. I had expected this and I was actually a bit surprised that it didn’t happen the day the game came out. In less than an hour one pirate site indicated that the game had been downloaded more than 30 times. No, I’m not going to link to any of them. I will note that I am amazed that they show up on the second page of a Google search for the game. Odd that pirate sites seem to have so much credibility with Google.

I’m trying to figure out exactly what it is that annoys me about this situation. I think there are a few aspects to this.

One is that $1.99 is cheap. That’s less than coffee money. If it entertains you for 30 minutes total you’ve gotten your money’s worth and then some. I’ve played it for countless hours and I fire it up just for fun every day. So I hardly think that price is an excuse.

Secondly, if $1.99 is really going to break the bank, ask me for a promo code. If you claim that you’ll post a descriptive review (I don’t even ask that it be positive) then I’ll give you one. I know full well that the chances of you actually posting that review are about 1 in 10, but that’s the way Web 2.0 works, right? If you pirate the game and love it there is no legitimate channel for you to rate the game, review it, or give feedback. So now not only am I out a sale (which I was willing to give up) but I’m also out any chance of your love of the game helping to make it go viral, or even your criticisms of the game being used to improve it.

Finally, it is immensely frustrating to put all the above mentioned effort into marketing this thing through legitimate channels and get very little response. Yet the game gets downloaded as much in an hour from a single pirate site as it did in a week legitimately. This makes me wonder if somehow the pirates know something that I do not. They’re able to make my game more popular in an hour than I am.

Finally, if this is just kids who somehow saved up $200 for an iPod touch and don’t have any pennies left to fork over for a game, I guess I can understand. Almost. ($1.99!) I’d still rather give it to you for free than have you steal it from me. But somehow I suspect that the majority of this isn’t being done by penniless kids at all but is perpetrated by people that can easily afford the game and just get some perverse joy out of cheating me.

While I’m at it, the first four people to comment on this article will get a promo code emailed to them.

22 Comments :, , , , , more...

Battle for Vesta Promo Codes – Get it for Free

by john on Jan.05, 2010, under Uncategorized

I’ve put a bunch of Battle for Vesta promo codes up on Promo Dispenser. So if you happen to read my blog and are too cheap to shell out $1.99 for the game, then you can get it for free by visiting this link and grabbing a code for yourself. Either way you should review and rate the thing in the app store.

Leave a Comment more...

Battle for Vesta Epic Icon Design Contest

by john on Jan.03, 2010, under Uncategorized

I’ve been getting some good feedback on Battle for Vesta over on the Touch Arcade forums. One user suggested that it needs a more epic icon to match the game. So I’m holding a contest to see who can generate an epic icon for the game. The winner will get a $25 iTunes gift certificate and 5 promo codes to show their work off to their friends. Here’s the link.

Leave a Comment more...

4 day approval for Battle for Vesta 1.0.1

by john on Jan.03, 2010, under Uncategorized

Approval just came through for v1.0.1 of Battle for Vesta. I submitted it late on Dec 30. That is pretty fast, especially considering that it happened over a holiday weekend. I have no idea why I’m not seeing the traditional two week wait times.

Leave a Comment more...

Fastest App Approval Ever?

by john on Dec.30, 2009, under Uncategorized

I submitted Battle for Vesta to the App Store on Dec 23, which is also the day that iTunesConnect went down for the holidays. It came back up on Dec 28 and the game was approved pretty much as the site came back up. That’s 5 calendar days, which is impressive, but it is also basically zero working days, which is unheard of.

I’ve just submitted a 1.0.1 update, we’ll see how long that takes to process.

Leave a Comment :, , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!