TIGJam 4

Picture of the door to Hacker Dojo, with 'TIGJam' on a nearby whiteboard.

This past weekend I was at TIGJam 4, an indie game jam at Hacker Dojo, and I loved every minute of it. Basically it’s an annual gathering of indie game makers, both hobbyists and professionals, who get together in the same space to work on their games and to otherwise party. This was not only my first TIGJam, but my first hackathon / jam as well, and while I’m not an expert on these I thought I’d share a bit about what made it so special to me.

1) An almost complete lack of structure.
TIGJam was a four-day event, and you could write the entire schedule on a Post-It note. There was no format, no competitions, no enforced teams, no restrictions on the tools you could use, nothing. As the TIGJam website says, “just do something rad!” which is a really smart approach. The lack of structure leaves room for people to self-organize and to help shape an ideal event for themselves.

Also, when a prize is offered for winning a competition, I think that’s absolutely the wrong motivation. Personally, the process of design itself is where the joy comes from, and the satisfaction of making something that I’m proud of is the motivation, not something external like money. A competition ruins that, and it also creates animosity when everyone should instead be working together and helping each other.

2) The best community you can find.
I hesitated to buy a ticket for a whole month because I saw the list of attendees and thought that I didn’t deserve to go. It was a relatively small event and it had a surprising number of talented people whose work I admire. But I’m really glad that I went because while I didn’t know a single person when I got there, everyone was extremely welcoming and encouraging, and by the time it was over I had befriended a bunch of brilliant and hilarious people.

Another aspect of the community is that everyone, even the event organizers, were working on games. There were no recruiters, sponsors, or anyone shilling their products, just people humbly making things, so any given person in the room is probably working on something interesting and they will have plenty to talk about.

I was also extremely productive and made great progress on my next game! Most of this was done during TIGJam, and It’s still a very early prototype with missing art, no sound, etc., but since I demoed it at the end of the jam and got a pretty positive response, I might as well share, so here’s a brief screencast of Mountaineering.

I’d rather use a service that has a strong, single-minded vision, even if some of the decisions aren’t exactly how I’d want them, than a washed-out, milquetoast service created by committee, designed to meet market demand, that tries to make everybody happy.

Another way to put it: if someone out there doesn’t hate your product, it’s probably not worth using.

— Andy Baio

Also: remember, author intent isn’t worth shit. All that matters is how you interpret it. If something doesn’t work, then it doesn’t work, and intent doesn’t ever excuse that. Period. Don’t ever accept any argument that claims otherwise.

— Christine Love

The Mystery of the Missing Wiimote JavaScript API

In the early stages of development, it was possible to play VIDEOGAME in the Wii’s Internet Channel with Wiimote controls, but it’s not anymore. Here’s the story.

After seeing that the Akihabara framework has Wiimote support I searched to see how they did it, and saw mentions of an article on Opera’s site called The Wii Remote API. The URL still resolves, but if you try to view the page all you see is “Access denied.” Chris Ruppell has an archived version of the article and its examples are still up on Opera’s site.

In a post on Opera’s Developer Forums, Chris Mills of Opera said that the article was posted too soon, and it was requested that they remove it. But the article was never restored, and a FAQ on Nintendo’s site about the JavaScript API was taken down as well.

The sad ending to all of this intrigue is that this is all mostly pointless anyway. The Wii’s browser isn’t hardware-accelerated, so performance for even the simplest JavaScript games is far from ideal. I tried Bouncing Beholder, a game notable for running on code that weighs in at less than 1KB, to see how it ran on the Wii browser and even that one runs at less than half speed.

It’s pretty cool that it worked at all, and the Wii’s browser is certainly better than the PS3’s, but this was a bit of a downer after the excitement of the initial discovery. When I was wrapping up development on my game I noticed that it no longer worked on the Wii, and I didn’t bother to fix it.

Somewhere in recent history the quote from the 1600s about a “jack of all trades” was shortened from its original form. “Jack of all trades, master of none, though oftentimes better than master of one.” For designers getting started in the digital industry I personally believe that one of the best things they can do for their career is to pick up as many skills as possible. Learn all aspects of how to design, build, and communicate your ideas with clients and others. This will open up opportunities as you progress in your career and give you the flexibility to evolve as your role or the industry changes.

— Jonathan Moore

VIDEOGAME

At last, here is my first videogame, made with HTML5 and Javascript. It’s called VIDEOGAME.

It’s no secret that I love videogames. They’ve been a passion of mine for nearly as long as I’ve been alive. I’ve always wanted to make one, but it seemed like I would have to learn C, Java, Flash, or any of a number of complex tools that just aren’t for me.

So I got really excited when I found out about the new canvas element in HTML5. It’s a 2D animation platform driven by JavaScript, a language that I happened to be familiar with already. With canvas it seemed like I suddenly had all the necessary skills to make a videogame, so I gave it a try and had a blast doing it.

The objective for this project was simple: make a videogame. Note that it wasn’t to make a good videogame, just to make a videogame, period. If people happen to enjoy it, that’s a bonus. So for the best chance at succeeding I chose to apply as many constraints as possible and take it back to the very beginning of popular videogames, with a clone of Space Invaders. Blocky white sprites, a barren black background, and a simple gameplay concept repeated indefinitely. If you’ve played Space Invaders before, you’ll mostly know what to do here. There may also be a devastating laser beam that transforms aliens into fruit.

Along with canvas there is cache manifest support for playing the game offline, local storage support for storing the high score for future play sessions, music and sound effects using the new HTML5 audio element, and touch controls for mobile devices. I even had it working in the Wii Internet Channel with Wiimote controls at one point, but it turned out to be more trouble than it was worth. I’ll write more about that later.

Mobile performance: Canvas (and audio) performance on mobile devices is pretty terrible at this point. If you want to make a game for mobile devices I would advise you to stay away from canvas because it might just break your heart. It will be viable someday, and the iPad 2 actually runs the game pretty well (at half resolution) but in general the canvas is too much of a performance bottleneck. It’s tempting to rewrite the game without canvas because it would probably work fine on all iOS devices, which would be pretty ironic considering that canvas was the whole reason I was compelled to do this thing in the first place.

The music: I once again used YMCK’s Magical 8bit Plug in GarageBand for that NES sound but simplified it even further and restricted myself to just two channels instead of the usual four. The in-game loop is pretty clearly inspired by the simple bass loops of Donkey Kong, also from this era.

Sound really matters in videogames, and it’s surprising to me how many HTML5 games are out there that don’t even have it. Sound is unfortunately disabled for the mobile versions due to mobile OS inadequacies, and it hurts.

The mini-site: This was so much fun. At first I was going to just mirror the look of the game and have the same black background, use the same pixel font as in the game, etc. But since the mini-site is basically the packaging for the game, I instead decided to mimic videogame packaging from the same era. So, obviously the box art for Space Invaders is an inspiration, as well as the exquisite box art for Gradius on the NES, one of my all-time favorites. The text for these boxes, along with the cover artwork, so often evoked an epic, comically overwrought setting that did not come across in the actual gameplay at all.

Additional acknowledgements and thanks: Douglas Crockford’s videos on YUI Theater were valuable for learning to write better Javascript when I was starting out, Mark Pilgrim’s excellent book Dive Into HTML5 taught me just about all of what I needed to know about HTML5, Bill Mill’s walkthrough on how to make a Breakout clone is fantastic for building your first game with canvas, Dominic Szablewski’s Biolab Disaster and Neven Mrgan’s Pie Guy are nice little Javascript games that inspired me, and Yasuke Kamiyamane made the awesome and free Arma Five pixel font used in-game.

The hope of good design lies in those designers who believe in what they do and will only do what they believe…Contrary to hearsay, it is possible to make a living that way.

— Alexander Girard

Work is more fun than fun.

— Noel Coward

(via Shaun Inman)

The moment I saw this trash can at Target, three years ago, I knew that this was the trash can for me. It was my destiny.

Not until today did I realize why I felt such a mysterious and immediate connection.

My silver trash can, next to a screenshot of the very similar-looking OS X trash can.

Apple would never do this, because they’re much too classy, but perhaps there’s a market for an Official Mac OS X Trash Can™.