The Sad Saga of Gold Strike For the Mac App Store
The story begins in December, 2010. The Mac App store is about to launch, and I have some time on my hands. I decide to see if it is possible to create a valid Mac app using Flash. You can read about that here.
So the game gets in the Mac App store, and I price it at: free. A good way to test out the waters of the Mac App store. And it pays off with top-ten rankings and lots of downloads. Maybe even a few people got it for Mac and then decided to also buy Gold Strike for iOS. But it turns out not, at least according to my stats.
But there is a bug hidden deep in the game. On January 1, 2012 it shows itself: an old piece of security code that prevents the game from working after 2011.
I spring into action on that day, cutting a family vacation short and heading home to work on it. A simple fix and the game is re-submitted that day.
But it takes two weeks for Apple to get to reviewing it. All the time I get tons of complains and bad reviews, many insisting that I am up to no good for some reason. A side-effect of the bug is that it takes you to the Gold Strike web-based game, which is also free. But people see fit to think that I am trying to do something evil and that it is all part of some sort of villainous plan. I’ve got information up in the description of the game on the Mac App store, explaining the problem and that a fix is on the way, but people just ignore it.
Then I get a message from Apple that the update has been rejected because of a technicality. The title of the game window isn’t to their liking. It is the same title as the original game, but they reject it this time. And there is no way for me to alter it because of the weird way in which I am using Flash to create the app.
So they leave the old game up there — the one that no longer works at all — and do not approve the one that works but displays a window title they don’t like. The same window title in the old version of the game, at least before 2012 when it worked.
What they actually said to me is that the name of the game must match the name of the title in the app store. One was “Gold Strike” and the other “GoldStrike.app.” So I fixed that, making the app name “Gold Strike.app.” Cue ominous foreshadowing music.
I appealed the decision. The appeal was accepted and Gold Strike was back in the Mac App store, and everyone could update. A fix was in place. All is well in the kingdom.
But no. Turns out that when you try to update Gold Strike you get an error. Some sort of “hash mismatch” error. What?
Well, after some investigation, it turns out that when you update an app in the Mac App store, if the name of the application file changes, this error is what happens. To every single person trying to update. Turns out a lot of developers get caught by this. Search for “mac app store update hash mismatch.”
So my change from GoldStrike.app to Gold Strike.app is probably responsible. But I did this only to appease the Mac App store reviewer. And the reviewer, so concerned about my window title, didn’t say a word about this change.
If changing the name of your application file will cause this error, then you shouldn’t be allowed to change the name of your application file. Or, better yet, it shouldn’t cause this error!
So now I’m faced with people complaining about this “hash mismatch” issue. I’ve updated the description text on the app page in the store, I’ve put it right at the top of the page you get to if you click “support” on that page too. I’ve even added my own comment to the reviews to explain it.
But still, I get 1-star reviews because of this problem. And there’s nothing I can do about it. No way to respond to individual reviews in the Mac App (or iOS) store. So people leave the review, frustrated, and there is no way for me to help them.
One guy even had the nerve to change his review from 1 to 3 stars, claiming that it only gets 3 stars because I should have tested this first. But there is no way to test this, nor to know this would happen, unless I had happened to know about this hash mismatch bug from some random reading previously.
Oh, and of course I am stuck with the name Gold Strike.app now. If I were to change it back to GoldStrike.app, the whole thing would happen all over again.
So, the game is free. It is supposed to be a fun thing I’m doing to give away one of my best games to Mac users. But the recent result is a lot of bad negative energy. This has become a distraction for me. So I’m seriously thinking about taking the game off of the Mac App store permanently. Probably will, by the time you read this.
Refreshing the Apps, In Progress
It was touch and go there for a while. Couldn’t get those Native Extensions to work at first. Turns out that in Flash Pro CS5.5 you can’t use them. Well, you can, but you have to compile in the Terminal with a command line. So it took a while to figure that out and get it right.
But I’ve now got apps running with iAds in them. In fact, the first one, Zig Zag, is already in the store.
In addition to getting those ads in there, it also works on the iPad. Flash made that easy. I updated the graphics a bit too. And a few other things.
I changed my mind about calling it “HD.” Instead I went with the name “Zig Zag by CleverMedia.” So the apps will all change from “CleverMedia’s X” to “X by CleverMedia.” It is probably better to have the game name first. And the “by CleverMedia” means I don’t need to worry about the fact that some of the game names are already taken.
So I submitted the second game, Add It Up, to the app store just now. I have two more almost ready to go. I’ll probably start doing them in pairs.
Time To Refresh the Apps
This fall I’m going to try to refresh all of my iOS apps. Well, almost all of them.
The games that I built with Flash, all except one, haven’t really panned out. There are just too many in the app store and I haven’t done much to market them. So it is time to make them all free.
That means ads. I would have probably made them all free with ads before if I could have. But originally you couldn’t use iAd in a Flash-made game. Now that you can use native extensions in AIR, I should be able to pull it off. I’d like to have a little ad revenue, plus the ability to serve my own ads. I have enough games that the reach of advertising could be enough to promote my own projects — new content at MacMost.com, new games, sites etc.
The problem is that I can’t simply update the games. The problem lies in the fact that the original Packager for iOS in Flash compiled for ARMv6 processors. That’s the iPhone 1 and 3G. Those apps work fine on the 3Gs and 4. And the iPad too.
But the new Packager for iOS compiles to ARMv7. Those won’t work on the iPhone 1 and 3G. So Apple simply doesn’t allow you to update your app from one architecture to the other. Doing so would mean that people who have your app on those old phones suddenly couldn’t use it anymore.
Normally this is no big deal. If you were using Xcode and had an old app you would just continue to compile it for ARMv6. But I don’t have an option with Flash. Things simply are ARMv7 whether I like it or not. Probably some of the new AIR stuff only works on ARMv7.
So I have come out with new apps and abandon the old ones. That only will work because I’m going from a paid to free model. Actually, it would work the other way too. It would suck if I had to do a paid to paid model, but then I could simply come out with “version 2.0.” And charge for it and no one would care that much.
But the idea here is I’m going from paid to free without really adding new features. So I can’t call them 2.0. Or, at least I don’t think that would be right.
But I’m going to do something almost not-as-right. I’m going to call them “HD.” The reason for that is most of the game are also going to get native screen resolution on the iPad. That’s something that Flash does for me without too much extra effort. So they are HD versions. And also now free. And also now with ads.
Oh, and in case you were wondering, no I can’t simply call them with the same name as the old ones as that is also not allowed. At least not easily. Names must be unique in the iOS app store.
I’ll launch these and then quickly drop the old versions. Not a perfect solution, but the best I can think of.
Besieging Cocoa
Usually when I want to learn a computer language or development environment, I attack it head-on. I just start making something so complex and difficult that I have no business making it using an environment I don’t know. The results is frustration at first, but then conquest. By the end of the project I usually know the language better than most. Then shortly after I become an expert.
But not so with Cocoa. I don’t even know if that is what to call it. Objective C? Xcode? Mac programming? Whatever.
Many times over the last few years I have sent expeditionary forces into Cocoa for small projects. I get the projects done, but with no real understanding of how the Xcode environment and Objective C really work. To make things worse, Xcode seems to change quite a bit just about every year.
Those changes sure are frustrating. And they are made worse because each one renders a ton of examples obsolete. Someone comes up with the definitive example of how to do X in Cocoa, and then a year later that example is almost unusable because Xcode has changed so much that the example no longer works.
So I’ve slowly been surrounding Xcode and Cocoa with small projects. First it was a simple iOS app or two, and now a Mac app. I’m just chipping away at it, learning more and more.
Web-Based Games For the iPad
What’s missing when you surf the web on an iPad? If you said “Flash” then you are close. Flash is missing, true enough. But instead of thinking technology, think content.
Flash content is… video, right? That seems to be what most tech journalists and bloggers think. That’s what both Apple and Adobe often suggest too. But it is not true.
And it isn’t what is missing. Sites like YouTube can easily show video using methods other than Flash. And they are doing just that for iPad users.
More importantly, if a developer like myself wanted to show video on a web site, I don’t have to rely on Flash. I can present video in a way that would work on computers and the iPad.
The content I am talking about is games. Gaming is the other thing that Flash does well. That’s why most of the games on the web use Flash. Some use Shockwave or Java, but those technologies aren’t available on the iPad either.
So when you surf the web with an iPad, you don’t get the games. Just big holes in web pages and whole sites filled with pages of games that don’t show up.
So how to fix this? Apple isn’t going to allow Flash on the iPad anytime soon. And even if they did then much of it wouldn’t work, requiring a keyboard and cursor.
My solution is to bypass Flash completely and use JavaScript.
JavaScript for games? Ugh! How can that slow browser scripting language be used for games?
Originally, it couldn’t. I tried and failed myself about 10 years ago.
But since then a revolution called Web 2.0 happened, increasing the amount of interaction on an average web page and forcing the browser wars to fight battles for faster JavaScript implementation.
So now we have very fast and capable JavaScript. And pretty cross-browser compatible as well.
In 2010 I converted Just Solitaire to JavaScript. It was Shockwave from 2003. I always meant to convert it to Flash. Glad I didn’t now. Instead I leaped over to JavaScript last year.
After that success, I decided to create my next game project in JavaScript. Earlier this year I released Games Without Limits, a site of casual games made in JavaScript. I’m thrilled with the results.
So now I have a site of web-based games. They work on computers. They work on the iPad. They even work on the iPhone.
Do I have the only one like it? Perhaps.
Now I just need to get some traffic to it and continue to add more games. The traffic part may be tough as iPad users are used to not looking for free online games. So they don’t expect to find any.
I’ve got a new JavaScript engine that allows me to build games from a basic framework. I hope to use that to add more games later this year. And then more the next. Perhaps I can recapture some of CleverMedia’s early years when it was one of the top web-based game companies in the world.
