Multiplayer Pong Demo using GameKit in iPhone OS 3.0

One of the more interesting features that was announced during the preview of iPhone OS 3.0 was the GameKit framework.

The video above is just a simple demo I wrote a few months ago with a beta version of GameKit and the cocos2d-iPhone framework. The two devices discover one another over Bluetooth, coordinate the client / server relationship, and begin play. There’s currently no scoring, and my protocol implementation is highly inefficient.

While the framework provides many neat features, I was most attracted to the zero-configuration P2P over Bluetooth. Multiplayer applications were previously only possible using Bonjour over WiFi, or some roll-your-own solution over the cell network. These methods provide a significant barrier of entry when you consider that the most popular games on this platform are the pick-up-and-play / get-in-get-out kind, with a typical play session lasting five minutes or less. If I have to fiddle with my network options in order to play an ultra-casual game with you, I most likely won’t.

The bad news? Bluetooth P2P is only available on iPhone 3G and 3Gs, and iPod Touch 2G.

Off To GDC Next Week

gdc

It has been ten whole months since I decided I wanted to make video games for a living. Since that time I’ve purchased well over $1,000 worth of books, games and consoles in an attempt to immerse myself in an arena I’ve been away from for many years.

By leveraging my existing skills, I was able to get my foot into the door as a developer for a upcoming kids-oriented MMO by day. I am also designing and programming games for the iPhone on my own. I took a little break from iPhone programming during the last quarter of 2008, but the innovation I’ve seen in other apps has brought me back to the land of Objective-C. And yes, I am planning an update for Tiny Violin. :)

All this is to say that I will be attending this year’s Game Developers Conference next week, and couldn’t be more excited! I’m really looking forward to meeting fellow game-makers, especially on the iPhone-front.

Tiny Violin in Mac|Life

The folks over at Mac|Life contacted me back in early November for a short interview. They were writing an article showcasing a handful of iPhone developers and were interested in including Tiny Violin. The online version of the article was published a few weeks ago, and the print version can be found in the January 2009 issue of Mac|Life.

Many thanks to Leslie and everyone else over at Mac|Life for giving Tiny Violin all the press. And if you haven’t checked out Mac|Life before, know that you are missing out on probably the best all-things-Mac-related publication out there.

Site launch: ExploringETFs.com

Exploring ETFs, the financial e-learning site I’ve been working on for the past four months, recently launched:

We’re excited to announce the launch of Exploring ETFs, a site for Barclays Global Investors designed to educate financial advisors & individual investors about Exchange Traded Funds. It’s been a culmination of over 6 months of collaboration between the IQ team and the folks at iShares, and we’re ecstatic with the way it’s all come together.

As the art director on the project put it, it’s really the total package. Within a PaperVision3D environment, it incorporates photo-realistic 3D models with studio-shot video, custom-manufactured props, an elegantly intuitive design, and a custom-composed soundtrack.

(from http://www.iqinteractive.com/blog/?p=47)

As lead developer on this project, I am very happy with how it came out. We had a great team as well as a great client.

Exploring ETFs

Tiny Violin Approved for the App Store

tinyviolin_iphone_portrait_0708

My first iPhone / iPod Touch application, Tiny Violin, has been approved for the App Store. More details to come, but here is a description of the application:

Play the world’s smallest violin on your iPhone or iPod Touch.

An indispensable tool useful for showing sympathy toward another’s misfortune.

Slide your finger or thumb across Tiny Violin to play one of three short violin riffs, each designed to show sincere condolence for any situation.

Update: I’ve created a page for Tiny Violin.

Off-Road Velociraptor Safari

A ridiculously fun game built with the UNITY engine. Playable as stand-alone or in the browser. Give it play, or check out the video above.

My new Silvia

n12808554_33580644_61721.jpg

I just received my Rancilio Silvia last week. So far it’s been making incredible espresso. This little beast has quite an enthusiast following, with owners mod’ing it with PIDscomputer interfaces and even NES controllers.

UPS Whiteboard ‘08 Launches

picture-4

After a few months of strategy, creative, and technology working together to make the next iteration of UPS’ Whiteboard website better than before, the website has officially launched.

While the ‘08 Whiteboard site is much more complex than the previous version, we had a great team working together to make it as good of an interactive experience as possible. The technology side includes a nice mix of Flash / AS2, Ruby on Rails, and almost half a gigabyte of video.

Check it out at http://whiteboard.ups.com.

Modifying request headers in ActionScript 3.0

Though Adobe’s documentation would have you think otherwise, setting or modifying the request headers in an AS3, browser-based Flash application is only possible under certain circumstances. I’m testing this with player version 9,0,115,0 in both Safari 3 and Firefox 2 for OS X.

The documented way to set request headers on an URLRequest object is the following:

var header:URLRequestHeader = new URLRequestHeader("myHeader", "headerValue");
var request:URLRequest = new URLRequest("http://www.[yourdomain].com/");
request.data = new URLVariables("name=John+Doe");
request.requestHeaders.push(header);

However, it seems like you can only modify the headers on a POST request. Which would mean we’d have to specify the POST method (assuming the remote site accepted POST requests for the URL):

request.method = URLRequestMethod.POST;

But even this isn’t sufficient, because the Flash Player will silently convert POST requests into GET requests if the request is empty. So now you have to add URLVariables to the mix:

var variables:URLVariables = new URLVariables();
variables.postVariable = "variableValue";
request.data = variables;

So the only way to successfully set or modify request headers on a URLRequest object is to set its method to POST, and make sure you send at least one variable along with the request. Otherwise the headers will silently remain unchanged.

This is unfortunate as it makes it difficult to connect a browser-based Flash application to a truly REST-ful Web service which determines the markup of content based on request headers.

Miscela d’Oro Ciald’Oro ESE Pods

I’ve been using ESE (easy serving espresso) pods for a while now for their convenience and easy clean-up. Many varieties are sold with each pod individually packaged in a nitrogen pouch keeping them fresh for up to a year or more, making them more economical to beans if you only make espresso a couple times a week like me.

I recently purchased a bag of 40 Miscela d’Oro Ciald’Oro ESE Pods off of eBay. I had never tasted Miscela d’Oro coffee, but after reading good things about the brand, I decided to give it a try. The flavor is much stronger and earthier than either the Lavazza or Illy pods I’ve tried, and there is a pleasing amount of crema produced during the pull.

My only regret is that I still have 20 or so Lavazza pods remaining from a previous purchase, but maybe I’ll keep those for guests. ;]

img_0117.JPG