Phil Hassey - game dev blog
Phil Hassey as Rambo
".. I've been there,
I know what it's like,
and I'll do it again if I have to."

Archive for the 'iphone' Category

Dynamite Jack: The Settings stats post-mortem

Wednesday, October 10th, 2012

Hey, a few months ago I read a post by Andy Moore about the value of music in games where he did some stats recording on games to discover how often audio was muted, etc. I decided to do something similar for Dynamite Jack.

The following are the results I got from the paid iOS version:

95% of players don’t change ANY settings.
2% of players quieted or silenced the audio.
2% of players change the controls to Virtual Stick only.
0.5% of players change the controls to Line Drawing only.
2% of players change the Touch Button Location / Virtual Joystick options.
1% of players change the HUD options.

1.7% of the users completed the campaign, which means they probably played the game for over 3 hours.

Of the users who completed the campaign:

34% of users changed options.
19% of users quieted or silenced the audio.
17% of users changed the controls to Virtual Stick only.
5% of users changed the controls to Line Drawing only.
10% of users changed the HUD options.
12% of users changed the Touch Button Location / Virtual Joystick options.

The piracy rate could be as high as 74%. Here are factors that make that number questionable:

– Each purchase can represent several devices
– Each purchase can represent several GameCenter accounts
– Each purchase can represent multiple IP addresses

Concluding interesting facts:

– Long term players are over 10x more likely to change options.
– I used royalty free music from and only had 2% of users turn off the audio.
– I spent probably over 20 hours scouring through the tracks on that site to find the exact ones I wanted for my game.


From 0 to iCade in 3 hours 16 minutes

Tuesday, August 30th, 2011


1. The Arrival and Assembly (30 min)

So my iCade arrived at 2:58pm today. It took me 30 minutes to unbox the parts and put the whole thing together with a hex-screwdriver. The completed item looks 110% win!!! There are tons of detailed unboxing guides on the internet, so I’ll just give you a shot of mine:

2. Testing it out with GAMES (30 min)

I had to check it out with a real game, so I went to the definitive touchArcade post on the subject. I realized I already had several of those titles on my iPad, so I dove right in with Velocispider which was totally awesome on the iCade!! I can only hope more devs add support! 30 minutes elapsed “fun time”.

3. Downloading the iCade SDK (1 min)

The “official” SDK is sort of useless, it’s just a manual telling us what we already knew. The great bit is there is an Open Source SDK (MIT) that is ready to go! I downloaded and unzipped that and began adding it into my project. 1 minute.

4. Being stupid (2 hours)

I then proceeded to brilliantly comment out the two lines of code that make the iCade code work. And then spend 2 hours realizing it. /facepalm

5. The iCade Integration (15 min)

Once I fixed my error, the integration took approximately 15 minutes. The bulk of the code was just a switch statement that converted the iCade SDK events to my own internal framework events. I already had keyboard support, so it was no trouble at all.

- (void)setState:(BOOL)state forButton:(iCadeState)button {
    int v = 0; unsigned char c;
    switch(button) {
        case iCadeButtonA: v=KEY_a; c='a'; break;
        case iCadeButtonB: v=KEY_b; c='b'; break;
        case iCadeButtonC: v=KEY_c; c='c'; break;
        case iCadeButtonD: v=KEY_d; c='d'; break;
        case iCadeButtonE: v=KEY_e; c='e'; break;
        case iCadeButtonF: v=KEY_f; c='f'; break;
        case iCadeButtonG: v=KEY_g; c='g'; break;
        case iCadeButtonH: v=KEY_h; c='h'; break;
        case iCadeJoystickUp: v=KEY_UP; c=0; break;
        case iCadeJoystickRight: v=KEY_RIGHT; c=0; break;
        case iCadeJoystickDown: v=KEY_DOWN; c=0; break;
        case iCadeJoystickLeft: v=KEY_LEFT; c=0; break;
    Event e;
    e.v = v;
    e.c = c;
    e.type = state?EVT_KEYDOWN:EVT_KEYUP;

I also had to go ahead and add Universal (iPad) support to the game, this didn’t take too long as my framework has smarts for doing that pretty easily.

6. In conclusion …

I’ve submitted my update to the App Store, so hopefully it’ll be in your hands within a week.

In conclusion, integrating iCade into your iOS game only takes 15 minutes, unless you’re as stupid as I am. I encourage all devs who have appropriate games to do this so that I can play more games on my iCade!!! Go GO GO GO!


The Exterminator – game for charity comes to App Store!

Wednesday, August 17th, 2011

Phil Hassey from Galcon-land here. A game I developed with five teens for charity just went live on the App Store! The game is an effort to help raise the $200,000 needed to get the down payment to buy a building for a local community outreach center in Rye, CO.

The game is called “The Exterminator” and it’s about a motorcyclist defending the earth from mega-sized mutant bugs. It’s an endless runner-type game with a totally rocking original electric guitar soundtrack. The gameplay is super addictive and feels a bit like a 1942 + Canabalt mashup. If you get going over 75 MPH it goes into “guitar-solo” mode where all points double. Combos (sequential shots without misses) gain you increasingly more points. For fun I added in GameCenter leader boards so you can compete with your friends. It’s only $0.99 and all the money we get goes towards the building fund. (Apple’s take is 30%.)

Developing the game with the teens was a really great experience. The project started out with us discussing what charity the teens wanted to raise funds for. The group was unanimous that they wanted to help raise money for the local community center because it would give future teens a great place to hang out. Rye, CO is a small rural town and there aren’t any actual hangouts outside of school activities.

After that we decided on a game theme. Wes really wanted to do a motorcycle oriented game and Shamoa was interested in some kind of game where we’d destroy mutant bugs. By combining those ideas we came up with “The Exterminator.” From there we spent two days developing the artwork, music, sound effects, and the actual game. Matt put together the electric guitar soundtrack using GarageBand. Wes, Shamoa, Shadrack, and Cameron all worked on the artwork. Most everyone did some sound effects. We also spent a lot of time eating food and generally goofing off. We wrapped up the project with some solid play-testing and tweaking and we were all really happy with how it came out. As a game developer I totally enjoyed the experience of working with teens and developing a game idea that I would have never come up with on my own!

Here’s a page that includes an overview of the community center plans and includes a PDF with a more detailed description.

Charity aside, it’s totally fun, so be sure to check it out!

Have fun!

P.S. I’m “philhassey” on GameCenter, just try and beat my score!

Press pack with screenshots, icons, etc

Transitioning to Xcode 4.0.x

Tuesday, April 26th, 2011

I’m working on a new game project that I’m hoping to release sometime in the next month or so! I’m taking a break from Dynamite to do something a bit more wacky 🙂 For these posts I’m going to be referring to my project as “mygame” since I’m not ready to announce the name of this super-amazing project yet.

Anyway, I downloaded Xcode 4.0.2 the other day so I could get going with the latest iOS tools. I’m going to be using more iOS features in this game than ever before, so I want to be sure I’m up to date with how things are supposed to be done. Xcode, however, has quite a few changes, so here’s the documentation of some of the common things I do as an Xcode user that changed.

1. Adding CFLAGS to my project “-DMYGAME_IOS_BUILD, etc”

– Click on “mygame” at the top left of the project tree hierarchy.
– Click on the “Build Settings” tab in the main frame.
– Click on the “All” button to reveal all settings.

From there you can find the “Other C Flags” setting. Apparently Xcode 4 has “Schemes” (the name of your project) as well as “Builds” (Debug / Release) as well as “Destinations” (iPhone / iPad / Simulator).

2. Adding more Frameworks to the project

I always have a handful of frameworks I need to add. In Xcode 3, you could right-click and click on “Add Existing Frameworks” to pick from a list. This is no longer the case. But doing the same is pretty easy:

– Expand the “Frameworks” from the project tree.
– Right-click on one of the frameworks.
– Select “Show in Finder”
– Finder will open, and will show the folder where all the frameworks are.
– Drag and drop a framework from Finder to the Frameworks in your project

3. Working with the new OpenGLES iOS template

Every few releases of Xcode, Apple changes up the OpenGLES template. I do wonder if I should just copy over it with my own stuff? Maybe, but I figure Apple knows best or whatever, and I always adapt to the latest template for new projects. This one has me a bit more confused than usual since it seems to use more Interface Builder type stuff and has a mygameViewController object in it as well (and corresponding .m and .h files.)

– At this point I knew since I was going to be using GameCenter and IAP in this game I might as well learn a bit more ObjectiveC. I’ve thus far managed to NOT learn it in the 3 years of iOS coding I’ve been doing. So, to kick things off I figured I’d check out what the iOS development videos might have for me. Unfortunately, the newest videos are from Apple’s 2009 tour. Kind of sad, I mean, 2009 was back before iPads even existed. So those videos are certainly not going to help me deal with the new fancy in Xcode 4 and building Universal apps.

– Instead I found that the typed documentation was much more helpful. I clicked into “Tools for iOS Development” to see what they’d have to say about Xcode 4.

– From perusing a few documents I got the feeling that to use GameCenter, etc, I was going to need a ViewController. Since the new OpenGLES template includes one, I guess that is good. If there are any iOS devs reading this who want to point me towards some helpful tutorials so I can understand what I’m doing better, that would be great. As-is, I am sort of continuing in my usual blind-cut-and-paste-and-hope type stupor with this stuff.

– I hacked out all the GLES2 code, I still write all my code using GLES1 .. the advantage that gives me is that my code will work simply on pretty much any platform. And I finally after 3 years understand GLES1 pretty well. I suppose I might get into ES2 eventually, but not yet 🙂 I also like that GLES1 code can work on the desktop with almost no changes. I hear shaders can add complication to my life on the desktop. Again, if anyone wants to link me to useful commentary on that, I wouldn’t mind!

4. Hacking my game onto the iOS app

I always code my games in C/C++. What I’ve found is the easiest way to get it to work with iOS is to rename all the .m files to .mm so that they are C++ aware ObjectiveC. Then I have a set of wrapper functions for my game that the ObjectiveC code can call.

Okay, so this is really cool, Xcode 4 now detects if you type in an invalid function name, and suggests a replacement function name 🙂 And it worked!

5. Making the game Universal

Xcode 4 seems to make this pretty easy. I just went into the Summary tab and switched mygame over to Universal and it all seemed to work pretty well. I only had to add these lines to the top of my drawFrame method in my ViewController:

CGRect screenFrame = [[UIScreen mainScreen] applicationFrame];

Here’s the blog post that helped me with that.

6. Making the game Retina enabled

I just used this code snippet at the end of my EAGLView initWithCoder (I believe I got it from the Fargoal folks):

      float scale = 1;

      if([[UIScreen mainScreen] respondsToSelector:
              if([self respondsToSelector:
                      scale = [[UIScreen mainScreen] scale];
                      self.contentScaleFactor = scale;

Towards the end of the day I spent some time mucking with orientation stuff. That always confuses me! And that’s all for today!


P.S. Changing where the builds are made:

By default the builds are put in ~/Library/Developer/Xcode/DerivedData .. they used to be placed within my project which is what I prefer. This can be changed by going into Xcode > Preferences > Locations > Build Location > Place build products in locations specified by targets

Robot Wants Kitty for iPhone (and other news!)

Tuesday, March 29th, 2011

Hey, so a friend of mine made this awesome flash game called Robot Wants Kitty .. and then that game got ported to the iPhone / iPod touch. And the port is even BETTER than the original!

I’m going to say right here right now that you should buy this iPhone game immediately! It’s $0.99, so it won’t break the bank. It’s a killer fun side-scroller which has gotten all 5-star reviews (except from people who have iOS 3.x on their device). If you want a second opinion, touchArcade really liked it too. So, yeah, support the awesome independent developer, (who I might mention appears in the credits of every single Galcon game as “Mike Hommel.”)

Anyway, again, you can get it HERE.


P.S. There’s a Galcon Fusion tournament on April 1st!
P.S.S. If you like Galcon Flash, you might want to keep an eye on this blog.

Galcon Fusion comes to Mac App Store and Mega-Sale!!

Wednesday, March 16th, 2011


Galcon Fusion is available now on the Mac App Store at the amazing launch price of 99c – that’s 90% off the regular desktop price!

I’m also doing a Mega-Sale across many of the other versions of Galcon! Be part of the “Galcon Community Rejuvenation Project” and help get the word out about this Mega-Sale:

Galcon Fusion for the Mac – 99c – Regularly $9.99

Galcon Fusion for the iPad – 99c – Regularly $4.99

Galcon for the iPhone – 99c – Regularly $2.99

Galcon Labs for the iPhone – 99c – Regularly $2.99

Galcon for Android – 99c – Regularly $2.99

Have fun playing!

2010: Phil’s picks

Monday, January 3rd, 2011

I’m a pretty avid toucharcade reader, and I got inspired by the staff picks posts to do one of my own. In the past decade I haven’t been much of a gamer, but I think in this past year I’ve really begun to game much more consistently. I think the introduction of the iPad was the biggest influence in that. The iPad is a gaming device that really works for me. For whatever it’s worth, I often game on my iPad using a pogo sketch stylus, which gives much better precision than a finger and makes it so my finger doesn’t obscure the action.

As for gaming, I’m a pretty tough customer and not many games truly strike my fancy. Personally I’ve always had a draw to side-scroller games and point-and-click adventure games, so you can see my bias towards those in my selection. I’m a rather casual gamer, so the games I like tend to work well as short-players. The gameplay does not require me to dedicated my life to mastering the game or enjoying it. That said, here are the few games that I really latched onto and played to death this year (in no particular order):

Babylon Twins

This is a side-scroller game and the best one I’ve played on the iPhone. The mechanic of having the two dependent characters really add that “difference” to make the game unique. I played this game on my iPod touch.

Robot Wants Kitty

This was a great series of flash games written by my friend Mike Hommel. These are mini Metroidvania games starring a robot who is seeking out various items (a kitty, a puppy, a gold fish, and finally some ice cream.) I had so much fun playing these games I dressed up as the character for Halloween this year.

Scarlett and the Spark of Life: Scarlett Adventures Episode 1

This is an adventure game and the writing in this game is hilarious. I’d say if you enjoyed Monkey Island you would enjoy this game. This is only the first chapter of the game, but I’m very eager to see the next. The game combines a very fun mix of characters and nonsense to build a very fun experience. I played this game on the iPad using a stylus.

Helsing’s Fire

This is a great game. The user interface was very touch oriented, which I always appreciated. The reverse-stealth mechanic really appealed to me since I’m working on a stealth game right now. And the main characters camaraderie was depicted in such a “mobile friendly” fashion that I just really enjoyed the whole game! I played it on my iPad using a stylus.

UFO on Tape

This game simulates a person in a car video taping a UFO sighting. It is a perfect simulation of the experience. I’m a huge X-Files fan, so getting to live out the attempt at videotaping a real UFO sighting from a car was a ton of fun. I played this game on my iPod touch.

There have been a TON of other really great games that came out this year. And in fact there were a few others that I invested some serious time into that I haven’t listed here. I wanted to keep my list to 5 apps, so I had to make some cuts! And if I were some kind of review site that was obligated to highlight all the best of the best, well, I’d have more to say. But really – those games are the ones I latched onto, and maybe you’ll like some of them too 🙂


Galcon: now with retina display, multi-tasking, and bug fixes.

Wednesday, December 15th, 2010

I’ve updated Galcon, Galcon Labs, and Galcon Lite for the iPhone / iPod touch with retina display support and multi-tasking support. I’ve also updated Galcon Fusion on the iPad with multitasking support. Now you can play more than one game of Galcon at a time! I’ve also updated the desktop version of Galcon Fusion with a number of bug fixes. For those of you who don’t know the difference between non-retina and retina displays, this image will help you understand:


Enjoy the update!

P.S. Okay, that “before” image is a bit of an exaggeration, but you get the idea :-)

Bockini Tournament Oct. 3 & New game development blog!

Tuesday, September 28th, 2010

Bockini Tournament Oct. 3

bockini_1This iPhone / Android tournament will be an individual tournament, broken down into two game modes – 2v2 and FFA.

We will be organizing groups of 4 for the FFA round, you will play 5 games total. For each win, you receive 3 points to your grand total.

The next round is a 2v2 game-mode with randomized partners. You will play first to 15. For each win, you will receive 1 point.

For more information and to join the tournament, click here.

New game development blog!

dynamitedev-03As of yesterday, I began work on a new game! This is going to be a crazy month as my deadline for completion of the game is OCTOBER 31st. As you can see from the picture, I’ve already made a handful of progress for just 2 days of work.

You can read more about it here, and watch as I do daily blogs all this month covering my progress. I definitely want feedback as I progress, so be sure to tell me what you think.


Galcon Labs FREE – This Weekend Only!!

Friday, August 20th, 2010


As part of the “Community Restoration and Rejuvenation Act” I’ve changed the price of Galcon Labs for the iPhone to FREE for the weekend! This is a great opportunity for you to get all your friends in on the Galcon multi-player frenzy! So Go GO GO! Twitter about it! Facebook about it! Email about it! Get the word out!