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

Archive for the 'development' Category

How to run your Xcode universal binary under Rosetta on an Intel Mac

Tuesday, December 29th, 2009

Here’s the trick. First, build your universal binary, let’s say under Debug mode. Then from a terminal …

cd build/Debug
/usr/bin/arch -arch ppc MyApp.app/Contents/MacOS/MyApp

This will launch your app using the Rosetta PPC emulator. This way you can test your Universal binaries from an i386 system :)

I’m doing it this way, because for some reason the ‘Right Click on Your App > Get Info > General > Open using Rosetta’ checkbox is grayed out. Oh well!

-Phil

P.S. Another technique is to go into Project > Edit Project Settings > Build > check ‘Build Active Architecture Only’ .. Then you can change your active Arch to PPC and the build will only include PPC and will run.  Just be sure to uncheck the box before you send a build to your users.

Elephants! First python + pygame game submitted to App Store :)

Saturday, December 19th, 2009

So, I managed to submit a “python” app to the App Store — “Elephants!” Here’s a few crazy things I had to work out to get things going:

  • I found that ObjC doesn’t care much for C++ objects that do their own reference counting.  To have a “Game” object at all, I had to use a pointer to my object instead of using my reference counting object.  It seems that during some of the “magic” of ObjC it copies objects without calling any of the C++ copying methods, so reference counting gets killed.
  • I ported a basic subset of pygame to tinypyC++ and made it work under openGL.  I don’t have this available in my tinypyC++ repository because it takes a good deal of prep-work to use (isn’t out-of-the-box) so it wouldn’t be generally useful to anyone yet.
  • I was able to get pause on call / resume working by saving the game state to a text file.  Since tab-separated files are so easy to create and parse in python this seemed to be the easiest route to getting the project done.
  • I learned a ton about C++ templates.  I still haven’t even touched the tip of the iceberg, and I’m not sure I want to, but at least I’m getting the basics down and that seems to be enough for me to stumble through this project with.

You can check out my current progress at svn://www.imitationpickles.org/tinypy/branches/tinypy2 (in the tinypy/example folder you can check out a julia fractal demo.  It also includes a mini pygame module that depends on SDL not OpenGL, so it actually works out-of-the-box.)

Here are some things I’ve been adding this week in preparation for my next project:

  • I’ve added “weak pointers” .. Since reference counting has the problem of cyclic references never getting collected, I had to do this for some use-cases.  In tinypyC++ weak pointers are just normal pointers, and if the object is collected, the pointer will be invalid, so be careful.  They are created by doing stuff like “x = ptr(GameData())”
  • I’ve added more C style types.  I’ve got uint16, cstr, Array, etc.  This all makes it possible for me to have a different kind of object – a struct in tinypyC++.  The struct is meant to be a C oriented type that can be saved directly to disk.  In Elephants I serialized via saving CSV data.  In the future, if I keep all the game state in C struct type data, I can just use a single simple line like “open(‘data.txt’,'wb’).write(struct_dump(game_data)”
  • I found that STL extensions include a “hash_map” which turns out to be about 2x as fast as the normal “map”.  I’m using that now.

I’m not entirely sure how useful this project is going to be for anyone else, or even for me for that matter.  But I think after my next game project I’ll have a much better feel for what the situation is.  TinypyC++ has some real tradeoffs in terms of being a bit of a hybrid of C++ and of python.  It doesn’t offer the full power of either language.  But I’m doing my best to capture a middle ground between them that will make my life easier.

Restricted tinypy to C++ compiler

Tuesday, December 1st, 2009

elephant1I’ve spent the last week working on a tinypy to C++ converter.  It works!  See the screenshot to the right – I’ve managed to port a pygame game over to C++.

Here’s how (and some of the catches):

  • I require type annotation of all the functions and methods.  ”def test(x:str)->str: return x”
  • I do two passes on each file, the first pass to catch all the function types and class members, and the second pass to generate the code.
  • I generate C++ code that has automagic reference counting.  So you have to code your script so it won’t have any cyclic references if you want garbage collected for you.

How is this different from shedskin (really cool project!)?

  • Built-in reference counting, instead of using libgc.
  • I require the user to type annotate everything.
  • It only supports a subset of the tinypy subset of python.  Shedskin supports a much larger subset of python.

So what’s the point?

  • Well, I learned a lot about STL and C++.
  • I know it will produce iPhone friendly code, I’m pretty sure libgc isn’t iPhone friendly?  (At least, I haven’t found anything via a few searches…)
  • Way less magic.  Since everything is annotated, there are no surprises.
  • Implementing C++ modules is pretty easy – the code can be inlined within the python code and it just works.
  • This will make it easier for me to develop C++ games.

Anyway, if you’re super brave, you can check out svn://www.imitationpickles.org/tinypy/branches/tinypy2 .. I don’t have the elephants example in there, but the pygame.py that I include gives you a pretty good example of a complex module.

I’m going to chat with the tinypy folks to see if we’ll merge this into the tinypy trunk or have it as a separate project.  I’m not quite sure what makes sense to everyone else :)  The nice bit about merging this in is that I could unify the test suites nicely.  And tinypy would still function as normal, just better tested, and with function annotation parsing supported.  All that said, I should make a tinypy module for tinypyC++ so that I can do some code evals!

Galcon Labs on the App Store!

Friday, October 2nd, 2009

Hey,

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!

-Phil

Galcon Labs – Preview!

Thursday, September 24th, 2009

labs-asn-1-p-txtHey,

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 :)

Cheers!
-Phil

Galcon at 360iDev

Monday, July 13th, 2009

“I just got accepted to speak at the 360iDev Conference!  The show will be going down September 27 to 30, 2009.  It’s looking like it’s gonna be a great show, especially with yours truly speaking. The first one was a hit among the attendees and this one is looking even better than the last. Tickets are cheaper on a first come, first serve basis! So buy your tickets asap at http://www.360idev.com/ to get the best possible price. See you there and you better go to my session!”

So, yeah, .. It should be awesome.  I managed to secure an 80 minute talk spot – which will include me talking about dev, Nan talking about the community, and Tim talking about the audio.  So it’s really going to be a great opportunity to meet the whole Galcon team.

Cheers!

-Phil

Galcon Flash has arrived ..

Tuesday, June 23rd, 2009

So .. Yeah.  Check it out.  Realtime multi-player game .. in flash!

So on a more technical note .. The game involves quite a number of technologies!

  • AS3 – of course – for the Flash client itself
  • C++ – for the server
  • PHP – for the web API and rankings system
  • python – for the bots

If I did the project over, I’d probably do the server in python as well.  But all in all the project went pretty well.  After things were done, it only took me a morning to write up the python client.  There’s a very good chance I’ll release that code in a few weeks and let people try making bots for the game.

Anyway – have fun checking it out.  I’m a bit wiped out from wrapping all this up, so I’ll try and post some more interesting details later!

-Phil

AppGamer innovation interview

Wednesday, May 13th, 2009

Hey,

Sorry no posts for a while!  Been out of town for a month!  Anyway, here’s a really swell interview with me by AppGamer about innovation in game design.  

Enjoy!
-Phil 

Cosmic Nitro

Wednesday, April 15th, 2009

 

Hey,

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

www.cosmicnitro.com

“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!

Cheers!
-Phil

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.
 
-Phil

Galcon   Watermelons   Dynamite   The Hairy Chestival
All content of imitation pickles (c) 1999-2008 - Phil Hassey  "we care"