Sunday, February 28, 2010

Initial platform: MacRuby

I have made my decision.  The initial platform will be Mac OS X (probably >= 10.6 for now).  I am going to use MacRuby to develop this game.  One of the reasons I want to do this is to be able to create a focused polished game.  Even though I am going to use MacRuby, I would like to develop the game with the idea of porting it to other platforms later.  This will lead me to separate the game logic and the like from the UI and platform details.  If it makes sense, maybe later I could hook into another platform library.

Ruby

Since my last post, I have researched some ruby options.  It looks like MacRuby could be a good solution.  There is a way of compiling the ruby code and creating a stand alone application with it.  Problems with this are the size of the resulting application (> 50Mb) and that it would only work on a mac (and possibly only >= 10.6).  I also found a library/gem for ruby for game development that would allow me to deploy on linux/win/mac called Gosu.   The negative for this option is that I would have to work on different deployment strategies for each platform, but it would be cross platform.  Also, the gosu option would not including compiling of the ruby code.  Another possible solution is RubyGame.

Monday, February 22, 2010

In search of a platform

With this post, I will bring you up to speed.  My current dilemma is deciding what platform to develop the game on.  I have what appear to be conflicting goals for the platform that make it difficult to find one platform that is exactly what I want.  I have worked with SDL on other projects in the past.  I spent some time working with Slick for this project as well.  I even tried Qt.  My most recent foray has been with the HTML5 canvas element.  I have acquired experience and knowledge from working with each of these options, but also I have used up a bit of time with no product to show for it. My next goal on this project is to weigh my options and decide on a platform.

Most of my daily programming is in ruby.  I have spent time working with C/C++, Objective-C, Java, and many others.  One of the deciding factors for me will be what language I will use to program the game.  For my canvas trial, I used JavaScript, for Qt,  C++.  SDL is written in and most native in C but offers many bindings to other languages.  Slick is a library for Java.

I ruled out the HTML5 canvas option for several reasons.  Sound would be a problem and responsiveness was noticeably distracting to me.  I also noticed a occasional but semi-consistent lagging and the smoothness of the graphics rendering.  While it offered many great pro's, I don't believe that that platform is quite far enough along to use at this point for this game.  I will continue to watch this platform with interest.  For the curious, my father pointed me to a really neat project that aims to allow you to build desktop and mobile applications with web technologies and I had hoped to use it to make my game both downloadable and playable on a website.

I also ended up ruling out Qt.  The thing that I liked about Qt is that it had a nice GraphicsView widget that supports a view hierarchy and collision detection as well as the ability to be backed by OpenGL or software rendering depending on if OpenGL is available.  However, the framework must either be bundled or installed by the user and it is quite bulky and I would only be using a small portion of it.  I also had trouble styling the GUI to look like the original Asterax game.

In my next blog entry, I will go over what I see as my remaining available options and weigh them.

Sunday, February 21, 2010

Extracting the graphics

The main work that I have done so far that is durable is extracting the graphics from the resource forks of the game files.  This turned out to be more work that I expected.  I wasn't able to find a simple way to save the images in a modern format.  My solution was to use a outdated trial/beta version of Resorcerer that had been carbonized, so it runs on Mac OS X to load the images.  Since it wouldn't allow me to export the images, I took screen shots of strips of the images.  Then I wrote a ruby script to automatically load up the strips and extract the images based on a map of the sizes I fed it.

I now have the graphics extracted into png format so I can move on with development for the most part and save getting the sounds for later.  I have a copy of AudioHijackPro, which I am planning on using to record each sound as I play it in Resorcerer and then cut in up in a audio editing program.

Taking stock of resources

I was thrilled to have permission to port Asterax and sent off an email to Michael.  He responded with official permission to port the game to any modern platforms I wanted.  During the conversation on the phone, he told me that Anne Fullerton, the graphics artist behind the game later became, Anne Hanson (his wife!).  They both are fond of the game and are excited to have it modernized.  He offered to look for The graphics were originally rendered from povray.  Michael offered to look for the source code and povray files but was unable to find them (unsurprising really, considering that it has been more than 14 years since it was published).

So, I need to take stock of my available resources.  He mentioned that, typical of classic mac applications, the sounds and images were stored in the resource forks of the game files and application.  So, I have no source code but I do have sounds and images available.  I also have a couple old macs and the SheepShaver classic mac emulator, which will allow me to play the game for comparison along with taking screen shots and screen caps of game play.

The Search

After I graduated from high school it was on to college to get a computer science degree.  I had been programming since I was 12 and this was just the next step.  During college, I dabbled in game development a bit, building tic tac toe, and tetris many times.  At one point the thought came to me that, since I didn't have a lot of ability in the design and art department, the best way for me to get some experience working on a game that had a nice look would be to port an existing game.  Asterax jumped out at me for its simplicity and yet still being very fun to play.

I started to do some research on the game.  I quickly found out that it was developed by Arvandor Software and that Asterax was its only game release (in 1994).  I also found that the company represented a group of students from Stanford University and chiefly, the developer, Michael Hanson.  I search the web for clues and found a email for Michael from Stanford.  Promptly, I drafted up an email asking for permission to port the game.  I don't remember if I got a returned undeliverable on that or if there was simply no response, but either way I failed to find a way to contact him.

This began several years of attempting, occasionally, to find a way to contact Michael.  If I am remembering right, my first attempts were mid to late college which would put my next clue at more than 2 years later.  In January of 2007, I found information indicating that he was working for a networking related company named Reactivity.  I went to their site and found an email or him.  I sent another request for permission to port the game.  This one was bounced and upon calling the telephone number listed on their site I got a message that the number had been disconnected.

Almost another 2 years pass again and, in August of 2008, I make another research attempt and find a news article indicating the Reactivity had been bought by Cisco Systems.  "That explains the disconnected phone," I thought.  I find a linked in profile that indicates Michael now works for Cisco.  Having been unable to find an email address for him there, I called up the Cisco corporate number and asked for him by name.  The receptionist put me right through.  I explained how much I enjoyed his game and he was pleasantly surprised that it was still making an impact on people and surprised I had tracked him down.  He was heading to lunch so we didn't talk for long, but he said he would be glad to give me rights to port the game and gave me his email, so he could respond with official permission by email.

Beginnings

I began my journey many years ago, around 1995.  As a youngster (middle school aged) I used to play Asterax on an old Macintosh Performa 410, if memory serves me.  It was amazing and I could play for hours.  The game was clean and responsive.  It included some strategy in addition to the arcade action.  For example, when you collected the crystals you could buy upgrades for your ship and various other things.  I continued to play it from time to time as the years passed.

My father was a bit of a collector of old macs and let me play with an old color classic, which was past its prime.  I loaded up many old mac games (like Bolo, oh the memories!), including Asterax.  It had a two player (not networked) mode where you could play with a friend, sharing keyboard space.  I played it with my brothers for many enjoyable hours and introduced it to my friends.  For me, it was the Asteroids of my era and platform.  I don't remember seeing Asteroids until later in life.

Inspiration

I spent some time last night and this morning reading Jordan Mechner's Old Journals about creating Prince of Persia (the original of a series of action games).  I am, strangely, interested in computer history. One area that is especially interesting to me is computer game development.  Throughout the blog entries that Jordan digitized from old, handwritten journals he was keeping when he was first creating Prince of Persia, he describes his struggles and triumphs.

I became inspired to chronicle my journey of porting the classic asteroids-style arcade game, Asterax.  Since I am starting this mid-journey, I will be describing the past happenings for a few posts, and then we can get to the present.