Castle and Riders

Build 42 Released

Here is a summary of this release: Yesterday I deployed build number 42 to my DreamHost server. Everything was broken, so I rolled back to build 31. Everything was still broken. Today, I re-deployed 42 and everything works again. So, what happened?

Untyped and Unterminated

After deployment, I was getting “untyped binary data” errors on random pages in Firefox (also known as the dreaded “application/octet-stream” issue on the Windows side) and “unterminated string literal” errors in all my Ajax calls. I spent much time and effort pulling out my hair trying to figure out how code that worked so smoothly on my MacBook Pro could die so spectacularly in production. Did I forget to check something in? Did I not test enough? Am I just unlucky?

As is often the case, the problem was the server configuration and not the code. I have been using FastCGI on DreamHost since I launched GridWorlds, and for a while now it has been working well. All that changed recently, which apparently caused my application to wig out quite badly.

Enter Passenger

Thankfully, the solution was at hand. I have been meaning to switch over to Passenger (also known as “mod_rails”) since DreamHost announced it earlier this year. Since I had no idea what was wrong with FastCGI, and I absolutely hate messing with obscure server configuration problems (and yes, I was desperate to find a solution), I thought I’d give it a try sooner rather than later.

DreamHost has a wonderful “one-click” Passenger setup that is 100% seamless and actually works beautifully. I didn’t have to change one thing in my Rails app to make it work, and all the weird errors I was seeing magically vanished. Switching to Passenger reminded me why I enjoy working with Rails in the first place: it’s easy to set up, and you don’t have to go digging in XML files to get your application to run.

What’s In This Release?

This time around, I added a whole bunch of new features to GridWorlds, including combat with animation and sound effects (yes, you can finally kill things!), character creation, and automatic saved games. I also added a lot of “polish” with clearer screen flow, better error handling, and nicer form layout. Here are the highlights:

  • Implemented a combat system, including animation, sound effects, damage, and death
  • Built a character creation screen to customize your new character’s attributes, HP, starting gold, etc.
  • Replaced JS prompt()-based talk feature with an in-line text editing talk mode (much more immersive)
  • Enhanced inhabitant talk options to include random responses, hello and goodbye responses (and no more |-delimited text)
  • Reworked inhabitant “behavior” system to allow for changing behaviors after being attacked (so a friendly inhabitant will turn nasty if you take a swing at him)
  • Added an avatar stats box, so you can see details about your avatar during game play
  • Applied a new layout to all forms
  • Cleaned up validation and error message styling
  • Simplified navigation and screen flow to make things clearer for new players (fewer things to click, less confusing)
  • Added a “Rest” command to allow the avatar to heal — but it only works when there are no monsters around
  • Implemented a save game feature, which stores the current state of each map. There’s also an auto-save feature that automatically saves the game every time the avatar enters a new map.
  • And of course, tons of bug fixes, refactored code, etc.

42

The number 42 has a certain significance that will not be lost upon most who read this. I didn’t plan to release a build number 42, it just happened that way. Kinda spooky, isn’t it?

Posted on September 23rd, 2008 in the GridWorlds category | Permalink
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

You must be logged in to post a comment.