I work for a company that restricts access to the internet. Today I set up my iPhone so that when it’s docked, my work computer uses its tethered 3G connection to browse the internet, bypassing the filter. Here’s how I did it. more »
I posted a lengthy Q & A about my upcoming Cuttlefish Engine – a cross platform cell phone game engine for iPhone, Android, and Blackberry – over on the Cuttlefish Industries blog, for all you cell phone game makers.
Old and busted:
public State FindByName(string name)
{
foreach(State thisState in this.StateList)
{
if (string.Compare(thisState.Name, name) == 0)
{
return thisState;
}
}
return null;
}
New Hotness:
public State FindByName(string name)
{
return States.Find(
state => (string.Compare(state.Name, name) == 0)
);
}
Sweet sweet syntactic sugar!
Just now I was browsing some ancient code of mine. Part of the Cuttlefish Engine is a UI layer, and so I thought I’d dust off all the old UI code I wrote for Quaternion and modernize it. Anyone who’s written a UI framework will tell you that the hardest parts are the nuances of message processing; making sure controls and windows behave as the user expects when they click over there, drag, press ESC while dragging, etc.
I happened upon a comment:
... // release: 1.02 on 06/24/99 by Mason (now safe for realloc) ...
Holy crap. That comment’s from exactly TEN YEARS AGO! The summer of 1999. I was… 22 (lol), working on Quaternion, a few months before I knew it was an IGF finalist. Apparently I had memory allocation issues.
The comment I found wasn’t in the UI code, but I want to believe that today ten years ago I was working on UI, browsing flipcode and sweet oblivion (aww yeah!), wondering what the GDC was like, dreaming of working in games, thinking Visual SourceSafe 6 was a pretty good tool….
Anyway, apologizes for the public introspection, but some coincidences are just too cool not to share. I also recently resurrected my gamedev.net login. Join date: 8/3/1999. At 1am. It’s now 12:40am. I guess some things will never change. :)
I’m happy to announce what I’ve been working on so intently for the last few months: The Cuttlefish Engine. It’s a cross-platform game engine and game designer (think Yoyo Game’s Gamemaker), for iPhone, G1, and Blackberry.
More info at http://www.cuttlefishengine.com.
There’s probably a few of you who have found this blog through the Cuttlefish Industries site, and you may be confused about which blog to track. If you want to follow the technical development of the engine closely, this is the blog to subscribe to. I’ll post entries here about the minor engine decisions I’m making as I go. If you just want to know when it’s ready or when it hits major milestones, I’ll post those “big announcements” on the Cuttlefish Industries blog (and here too).
Ahh, junction, you never fail to bring me joy.
Use dropbox to sync your winamp settings (internet radio bookmarks, media library, etc.) between all your computers. Just set this up and it seems to work great. Caveat: I think winamp stores its media library in here, so if yours is big, you may eat up a chunk of your 2GB dropbox limit (in which case it might be better to junction to a removable drive).
junction C:\users\[you]\appdata\roaming\winamp C:\[your dropbox]\winamp
I’m working intently on something iphone-ish (iphony?) that I’m really excited about. It’s been taking every minute of my time but I’ve almost got enough ready for a big debut here soon.
In the meantime, I thought I’d talk about backups. Up until last night, my backup strategy was, let’s say, severely lacking. Even after losing over 160 gigs of MP3s to a Diet Coke a few weeks ago, the only real backup I had was some folders I copied halfheartedly before moving across the country this time last year. Prompted by a conversation at work earlier, I spent the wee hours of Friday night working on… backups.
I found a program called Cobian Backup. I like it because it supports FTP transfers, meaning that in addition to backing up my internal drives to an external USB drive, it also can pull from FTP sites, so I can backup snapshots of all my web sites too. It’s a little rough around the edges but it’s easy enough to schedule stuff and it seems fairly reliable.
With local data and websites now safe and secure, I thought about gmail. Backups of gmail may seem silly – gmail’s not going down for the count – but, thanks to alcohol, it’s entirely possible that I could do something ridiculous to lock myself out of my account. And there’s always a chance I’d get hacked. An infrequent gmail backup couldn’t hurt.
Lifehacker will tell you you need to install cygwin and then point you down the path of UNIX-on-Windows hell. Don’t do it! There’s a much easier way – some awesome guy has written “Gmail Backup.” It’ll let you backup via a GUI, or through a command line interface. Through a couple scheduled tasks, I’ve now got my gmail, and my wife’s gmail both backing up to the USB drive every few months.
The one thing I wish I could figure out is a way to archive some of my pages on other sites. It’d be cool to periodically backup my twitter, facebook, and friendfeed pages. I dream of some sort of “web backup” tool that you can point at all these different sites and have it save off your news feeds and profile info. Also, where’s the plugin architecture for Digsby??? I want to write one to remember all the avatars and taglines I change and put them in one of those cool flash-powered timeline displays that are all the rage on the internet.
So I’m toying with the idea of writing a game – I’ve got a pretty good idea that, more importantly, has remained a pretty good idea for the last few weeks. Simple to implement, fun to make, fun to play. I should be happy, but I’m not.
I’m tearing myself apart trying to decide which platform(s) to create it for. For starters, there’s the obvious: the iPhone. Tons of free engines and code samples make creating a game for the iPhone a no-brainer. Unfortunately, that means there are thousands upon thousands of them, and getting any sort of attention in that crowded market would require more work to market and publicize than it would take to actually create the game.
Then there’s the G1 – its hardware is on par with iPhone, yet it has a much smaller user base. This is a blessing and a curse – less users means fewer sales but less competition. Same deal with Blackberry – I don’t have the numbers to back this up but my hunch is that the number of iPhone users dwarves both the number of G1 and Blackberry users. At any rate, Don’t Dial iPhone is outselling Don’t Dial G1 by at least a 10:1 ratio (but, that’s with a very iPhone-centric marketing effort). Maybe with some G1 exclusive marketing I can get that to 5:1.
The Blackberry has in its court a much less crowded market, and a push for quality (RIM has explicitly said they’re not going to tolerate the crap apps that Apple does). Also, I’d be a fool to sell my game for anything above $1 on Apple’s app store, but I could sell for $3, maybe $5 on Blackberry and remain competitive. G1 is probably the same story, but muted slightly due to the number of free apps, as well as the G1′s open source spirit, which attracts a user base that’s a bit less comfortable with paying for apps.
The really discouraging thing is that technically, the three platforms couldn’t be farther from each other. Don’t Dial has taught me that getting any meaningful code sharing across all three platforms is difficult if not impossible. I’ve toyed with the idea of building a cross-platform metalanguage that would “compile” down to ObjC or Java code, but doing that is a lot of work, and then you have to abstract all the functionality of the APIs you need.
Someone, somewhere, is doing this, or will be soon, so there’s that too – should I develop my own abstraction, or wait until one gets released? The phonegap guys are making good progress, but they’re all Javascript, which makes sense for web apps, but for games is a harder sell.
Lots of questions, very little answers.
In all the hubbub of Don’t Dial, I completely forgot to mention my articles in two new game programming books!
I’ve got one article in each book – “Lone Wolf Killers” is in Business and Production, and “Creating Good Game Art When You’re Not An Artist” is in Content Creation.
I’ve read through both books, and both are worthwhile. Definitely check them out.


