Phil Hassey - game dev blog
Phil Hassey as Snidely Whiplash
"You can't buy awesomeness.
You're born that way."

Archive for the 'iphone' Category

2 years of iPhone Galcon!

Tuesday, July 20th, 2010


To celebrate two crazy years of iPhone Galcon, I’m putting the game on sale for $1! If you don’t have it already, or have friends who haven’t gotten it .. well .. get it now!

Here’s a recap of where we’ve been over the last two years:

Early in development – June 2008

Original menus – June 2008, background was changed by launch

Galcon’s launch screenshot – July 2008

Soon after Galcon got multiplayer! Here’s a shot of me testing it under linux!

In March 2009, I won the IGF Innovation in Mobile Game Design award at GDC’09!

I decided to polish up the look of Galcon a few notches, and launched a graphical overhaul in July ’09. Apparently I didn’t tell anyone because I can’t find any blog posts about it, but here are some screens:

Then in September ’09 I launched Galcon Labs, which included 4 new game modes for Galcon!

I’m not entirely sure what the coming year will hold for Galcon, but I bet it’ll be swell!


Tuesday, March 2nd, 2010

Yeah, you better …


This image represents the last few days of work.  I have ported some 3000 lines of python code to tinypyC++ code.  Fear it.


Seahorse Adventures – Loading TGAs (and more)

Tuesday, January 5th, 2010

Here’s a screenshot.  This is my Ubuntu desktop of my work on a new iPhone game.  Take a look at it nice and big.  Below I’ll explain all of what is going on …


In short, I’m working on porting my pyweek#3 team entry to the iPhone.  Here’s the details:

  • Top left, you see Kate, my text editor.  You’ll notice I’ve got -what appears- to be python.  But that’s actually tinypyC++ code!  My converter still has some rough edges, but it’s starting to get pretty good.  If you weren’t looking to closely you might mistake that for ordinary python code!  (In fact, it should be 100% python parser friendly.)  You can see how I have to use a touch of annotation to make it all go.  But for the most part, the types get inferred.  (The C++ outputted is about 2x as long, so I’m saving a ton of keystrokes!)
  • Top right, you see the level being painted.  It isn’t all working yet, but those are the basic tiles.  Interesting bit about loading the level, when I created this game I used my own level editor and library I made with pygame.  To save on disk and time I save all the levels to .tga files.  Since I’m targeting the iPhone I need an easy way to read the data from .tga files.  I don’t have SDL_image available, so a friend pointed me towards this great site.  It appears to have some awesome bits of code, including very simple and easy to use image loader that can load tga/png/jpg/etc.  I think it has the most painless interface I’ve ever seen for a C-based image-loader.
  • Bottom right you can see me working on tinypyC++.  As I’m working on BSA, I’m always finding new bugs in it.  Lately most of the bugs have been of the “add more graceful error handling” nature.  tinypy will point out what line (and character) an error happened on, but with a bit of extra work I’m able to add in some coherent error messages to tell the user what is going on.  In this case it was to inform the user of an undefined module name.
  • Bottom left you can see the startup of the game.  I’m using irrKlang for all my  game audio now.  It is not open source, but it’s “free” to use for free games, and the price is quite reasonable for commercial projects.  irrKlang is not portable to the iPhone yet, so I have to have a separate driver for my iPhone audio.

And that’s it for today’s report!


Elephants! is free on the App Store!

Wednesday, December 23rd, 2009

My gift to you: A totally FREE iPhone game! I made this game several years ago with some other way-cool game-dev friends. In “Elephants!” you save the giraffes while jumping on a rolled up squirrel! More fun than a barrel of pigeons! For Christmas this year I figured I’d port it over to the iPhone for you 🙂 Check it out!

From the dev side, yeah, this is my first attempt at “python” on the iPhone. Even though it’s actually restricted tinypy code. Here’s a sample of game code so you get the idea of what’s behind this game. All this code is converted by tinypy into C++ code so I can compile it with Xcode for the iPhone:

def elephant_new(g:Level,pos:List(int))->Sprite:
    s = Sprite('elephant',pygame.Rect(43-14,8,28,48))
    s.ball = ball_new(g,(int(s.rect.get_centerx()),int(s.rect.get_bottom())))
    s.suit = ElephantSuit()
    s.vy = 0
    s.vx = 0
    s.jump = 0 
    s.facing = 'e'
    s.score = 0
    s.z = 1
    s.state = 'live' = 'elephant'
    return s

Galcon pricing experiment

Monday, November 23rd, 2009

Two weeks ago, the price of Galcon @ $3, Labs @ $2, and Lite @ $0.  This past week, I changed them to Galcon @ $5, Labs @ $3, and Lite at $1.  I wanted to see how this would impact revenue.

And the big surprise is …

It didn’t!  Much.  Best I can calculate, revenue was down 10%.  The most dramatic change was Lite, which went from $0 revenue to a few bucks a day, and from a few hundred downloads to almost none.  So this week I’m changing the prices back to Galcon @ $3, Labs at $1, and Lite at $0.  What have we learned?  It seems that people who want a free game want a free game, and people who are willing to buy would rather spend less.  Since I’m not going to run this sale for a month I can’t say for sure what the long term effects will be, but I’d guess word-of-mouth would be reduced as the pool of Lite players shrunk.  Who knows 😉


Galcon Labs on the App Store!

Friday, October 2nd, 2009


So Galcon Labs is now available on the App Store! Check it out 🙂

Anyway, I just got back from 360iDev where I gave a talk about Galcon Multiplayer.  The two main points made in the talk were about managing community, and test driven development.  With so many devs talking about App rejections and other problems, I wanted to make sure the app was approved first time through the system.  And it was, in an excellent 7 day turn-around 🙂  So a real big thanks to all the folks out there who pressed me into reading the Kent Beck book on the subject!


Galcon Labs – Preview!

Thursday, September 24th, 2009


After a few days of itunesconnect being down, I was able to submit Galcon Labs to the App Store.  Check it out!  (See Phil’s first ever video!)

On a dev note, this game was REALLY fun to make.  I got to do things that completely change the gameplay of Galcon so that Galcon Labs is really four totally different feeling games.  My favorites are the Billiards mode (where the planets move around) which is just a lot of fun, and the Assassin mode where instead of trying to conquer everyone, you are assigned a single player that you have to destroy first.  The interesting thing about that, is if you destroy another player, or the player who is trying to annihilate you gets destroyed – YOU LOSE!  It really changes up how you have to play!

As usual, testing (TDD) was a big deal.  Having a network game makes it so that everything has to be tested to make sure it really works.  I’m going to be doing a talk at 360iDev on Wednesday, so if you want to hear me compare UDP networking to herds of rabid animals, be sure to attend.

Also, check out pygame 1.8.  It is really awesome 🙂  While working on Galcon Labs I felt I needed to put more effort into differentiating the game from previous Galcon games visually.  As it’s still triangle ships and planets, this took some effort.  And during the last hour, I decided I needed a whole shiny new look for the planets.  In the game I use a texture with 64 planet designs on it.  So creating all those by hand would have been too hard.  I used pygame to generate new landscapes and found the new pygame 1.8 features really helpful.  I was able to use the new blending modes to trim the landscapes into circles and rotate and scale them down so I got a nice antialiased look for all the planets.  In previous versions of pygame, this would not have been nearly as easy!  So, not just for games, but for generating and doing automated image manipulation, pygame is really starting to shine 🙂


Cosmic Nitro

Wednesday, April 15th, 2009



So I finally got a new game out!  Yay!  And here it is:

“The end of the world is nigh!  Defend the world from the onslaught of an unfeeling universe!

“In Cosmic Nitro you must blast through nine different invasions.  To play merely touch the invaders to blast them, but when things get too tough you can swipe the screen to launch a shield.

“Designed by award winning game designer Phil Hassey winner of the IGFM Innovation in Game Design award.”

So check it out, the game is only 0.99 and totally worth every penny!  Be sure to tell your friends about it!


P.S. I just submitted an update to Galcon to the App Store .. so keep an eye out for that in the next week or so!  🙂


RC1 ..

Monday, April 6th, 2009

So .. After recovering from GDC, I’m working on wrapping up my “new game” .. Which is in RC1 tonight.  Hope to package it up and ship it tomorrow with a hopeful launch date of next week.  I gotta get all my press materials together tomorrow so that when it does launch I’m ready.  Here’s a checklist of things I need to get together:

  • Website ?
  • Game page
  • More games page (linked to from game)
  • Newsletter announcement
  • Blog announcement
  • E-mail announcement for reviewers
  • AdHoc build with comments for reviewers
  • Get a banner ad ready & pay for ad slot
  • Description, title, screenshot, icon for AppStore
  • Game assets / screenshots for reviewers
  • YouTube video of gameplay
  • YouTube video trailer
Man .. these launches take a lot don’t they!  At least I’ve utilized my blog here to list all the things I plan on preparing.
So starting Wednesday I’m working on a iGalcon update *finally*.  I’ve got the most demanded features figured out, so I hope to package it and send it to Apple come Monday.  Fun bit is the game will probably be available on the AppStore during my sister’s wedding.  So .. I have to make sure all my announcements are all prepared a week in advance so I can “launch” my update with about 5 minutes of button pressing when I get the notification from Apple.

Beast for the iPhone / iPod touch

Monday, February 23rd, 2009

Today marks the release of my first iPhone game release in five months.  It’s about time I got going on dev again.  I’ve been in the midst of many transitions in both of my businesses, so I decided to start out with something short-n-sweet.  The game is called Beast.

Beast is a re-make of an ancient MS-DOS game that I played ages ago (and I’ve re-made several times).  The original is here.  You may have followed my progress on twitter.  Here are some interesting “factoids” about the game dev.

The original game is pretty tough to play, if you have dosbox and have all the proper slow-down settings going, you’ll find it can be a challenge to surround the beasts and crush them with blocks.  The iPhone doesn’t have a D-Pad, so moving a character around the screen is a bit tricky.  I had to make several modifications to the original game so that it would work with the touch interface:

  • You can move the player around the screen by pushing your finger around.  However I had to make the player unable to move diagonally as I found the resolution of your finger movement made it near impossible to play and quite jumpy if I allowed diagonals.
  • You can touch any point on the screen and warp to that location.  The controls were still a bit tricky, so I had to add this feature so you could do quick movements to escape from a beast, or to attack it quickly.
  • I disabled the beasts so they can’t move diagonally, made the super beasts spawn into only 4 instead of 8 normal beasts, and slowed down the beast movement by about 50%.  These changes were all required to make the game playable.

All these changes turned an impossible to play on the iPhone into a reasonably fun diversion.  I also added a notable element of speed into your score.  This gives the player a good bit of replay value, since even after they beat a level, they can try again and try and “master” a map they are playing.

Overall the main point of this whole exercise was to get myself back into iPhone dev.  Really last year when I worked on Galcon I threw myself violently into that project for 3-4 months and came out a bit burnt out.  I knew this time I needed to do a small scale project to get going again.

I’m pretty pleased with the results of this project.  For some more interesting factoids about the game project, check out my game blog announcement.

Excuse to post this to the python planets: I actually made a python version of this game a few years ago.  It contains some really bizarre pure python sound-synth for both the music and sound effects.  Check it out.  Not only all that, but the whole game is a single 18k python file!  I ported from this code for the iPhone version.  Again, another great example of python prototype -> C++ final product!

(Silly side-note, actually the python code was a port of some C++ code I made ages ago.  So this is a great example of C++ code that was ported to python and then later ported back to C++.  I won’t bother you with details about my even earlier Java and C versions of the game.)