Sunday, October 9, 2011

Go Board Game with Google Docs

Go, played on Google Docs
I've been satiating my asynchronous game play needs recently by playing Go via Google Docs. I figured someone else must of thought of that already, and they did: Edward Donohue had a spread sheet template available, which I modified into my Go Board Game Template.

The cool thing is that Google Docs comes with great features already in place:

  • Version history
    • Allows you to roll back time to recall what has been happening in the game.
  • Change Notifications
    • Allows you to make a move, and your opponent will automatically get an email notification that links to page showing what has changed.
    • (Set this up by going to |Tools| |Notification Rules|)
  • Auto formatting
    • Makes the board look like a bunch of black and white pieces instead of playing in text.
  • Works anywhere, even mobile
Also, you can do odd stuff, like make this tiling (toroidal) go board. People have played on tiling boards before, the simplest way is to just duplicate any moves on the left and top edge to the right and bottom. But, in docs, .

Try out the templates by making a copy so you can edit in them. Select a square and enter a 'w' or 'b' character. Have fun!

Gmail Follow Up Script

I have lots of email I want to follow up on later or put aside for some time. I use Gmail these days, and I miss Outlook's built in feature for this. Well, there's a solution, the apps script team posted a script for "snoozing" email. My modified take on it is this gmail Follow Up script doc.

With follow up you can:

  • Get emails out of your inbox, and out of sight, for a specified amount of time, and then have them return.
  • Send emails you want to make sure you get a response on, flag them for follow up and have them resurface in your inbox again after a given amount of time to ensure they were handled.


The implementation summary is: You can have javascript code run on a Google server at a regular interval that manipulates your gmail messages. You do so with google apps script.

I modified the original in a few ways:

  • I added "hours" to the "days" and "weeks"
    • At first I thought it was overkill. But, no, it's mighty handy in a work day to put off an email till the afternoon when you think someone else should have replied by then. Or just to clear your inbox rapidly so you can concentrate on the top items for the next hour.
  • I adjusted the label names to be more keyboard shortcut friendly
    • To move an item out of my inbox and have it reappear tomorrow, I type the keys, "v1d" enter. That's |move|, and then enough to match the label "FollowUp-1days".
  • I use the "quick links" lab in gmail to view all messages pending follow up
    • Sadly there's no way to roll up multiple labels in gmail, else the hierarchical labeling would have solved this. Anyway, details in the doc for using quick links.
Some notes:
  • Draft messages can be brought back to to the inbox, to complete and or send at a later time.
  • Muted messages can be brought back too, disabling the mute at that time. So you can let a firestorm thread rage on for a few hours before reviewing it in it's entirety instead of being interrupted constantly as replies come in.
  • I sometimes leave notes to myself as to why I marked this message for follow up. One way is to start a reply draft and then blank out the To: line so it's not accidentally sent.
  • It's handy when you send a message and want to ensure you get a reply back.
Now that I have this tool, I use it a lot a lot to rapidly simplify my inbox. Check it out: Follow Up script

Tuesday, August 23, 2011

Casual Connect 2011 HTML5 Games Presentation



My Casual Connect 2011 HTML5 Games Presentation was recorded, and the 30 minute video is up.

I discuss the current availability of some key HTML5 features, overview the browser tech being used today in games, and touch on monetization and distribution. Lots of resource references towards the end.

The next best way to learn more is to come to the New Game Conference in November.

Saturday, July 2, 2011

Game Jam Tips

I've done a few game jams. At Google, I've done a few at work, and been asked for tips on running them internally and externally. Thanks Seth Ladd for nudging me to post. So, why not jot some thoughts down here:

Prepare, and make sure participants are prepared. You want to spend the jam making awesome, not doing the boring stuff:

  • Publicize frameworks in advance and encourage attendees to come with 'hello world' games already under their belt so they can hit the ground running. Possibly include a super simple template of our own that isn't a 'framework', but just a tiny simple example.
  • Publicize easy / free tools for e.g. audio & 2D drawing. (e.g. Audacity & Paint.Net)
  • Publicize source control and encourage teams to already know how to use it, set it up in advance, and have made a trivial pull, edit, push cycle.
  • Publicize game hosting tech (appengine, nodeJS) and point to relevant examples (Well, for web games)

Hold something back until the Jam - usually the theme. Generate a surprise theme that balances creative license and enough constraint to remove the 'blank page' effect.

Decide to allow pre-formed teams or not. Most Jams I've been in discouraged pre-formed teams or game concepts. Instead, we brainstormed them up, pitched them to the wide crowd, and formed small teams to work on the top ideas. Pros and cons either way, but I've enjoyed the mixer style.

Small teams tend to work out much better than large. E.g. 2 or 3 coders. Communication is a killer on a tight schedule.

Have an art plan. Either set expectations that people should work with minimal art (e.g. procedural, 'retro' lo-fi-pixel-junk, or freely available stock), have artists and a plan for how to get art out quick, or pre made art. Some contests have run in two phases of 'prepare art' and then 'make games using only prepared art'.

Encourage rapid prototyping development practices! Games should be functional half way through!!! They'll need the second half for polish. People always always always blow this and mis-estimate. Encourage frequent re-prioritization of what people are working on. One good technique is have a team list out the top few tasks, rank `em, and have people work on those and only those. Don't work on anything unless it's an agreed top priority.

Eat, sleep, don't try to mash it all out. Taking short breaks through the day let's you get Meta, re-evaluate progress and priorities, and plan. Sleep helps you make the remaining time more effective.

Don't make it a contest, but if you do, run several wildly different categories. E.g. most original, best use of new tech, most hilarious. Don't just have "the best".

Plan for games to have more work done after the Jam, and how they will be publicized. Can teams update links, images, YT videos, etc?

Capture the presentations at the end, e.g. video recording. Snapshot the code and art too. (Good reminder, Mike Mahemoff)

Have fun. If it's not fun... do something fun. ;)

Tuesday, March 8, 2011

GDC 2011 Report

Some of my observations from GDC 2011:

I've been mispronouncing Bokeh for years, and posted before about how there's a lot of room for improvement vs what's common on PS3 and Xbox 360. Well, it's all the rage these days. E.g. check out the Unreal demo and stills. Blur alone was a topic AMD discussed on DX11 day, discussing perf and memory optimizations of the heat distribution method from Kass et al at Pixar.

Tessellation and Displacement Mapping were put to good use in a variety of places too, e.g. terrain in Battlefield 3, character morph in Unreal demo.

On a much different note, I spent most of the rest of my sessions in design and rant topics. Much of that is hard to summarize, but here are some bits:

Trip Hawkins quote from the Social Rant: "Think more about the browser. The browser will set you free." after he described challenges Nintendo, Apple, etc have presented for game developers in the form of license agreements.

In general I was disappointed by the Social Game Devs Rant back, in that no strong defense was made for social games. Much of what was discussed was the same anti slot machine techniques we've already heard.

The Experimental Game Design session had two games with recursion build in. One spatially, e.g. the level had a model of the level in it, and you can manipulate objects from the different scales. The other “inside a star filled sky” with the player, enemies, and power ups all agents but also levels that can be entered and ascended out of.

[update] I forgot to mention user generated content. Andy Schatz (Pocketwatch Games / Monaco) discussed it and pointed out his site: http://hellodotdotdotgoodbye.com/ (cool, simple idea I keep being drawn back to) and others http://infiniteblank.com/http://playpen.farbs.org.

I've not been keen on the 3D wave in cinema, TVs or games. So, I thought I'd better take a good look at the Nintendo 3DS which is the best option I've seen yet. Autostereoscopic works nicely in a personal device like a hand held, and I can't stand glasses. The 3DS works well if it’s close to your face, not as well at my comfortable playing distance ~1.5 ft. Was very cool to see, but I’m concerned about eye strain. I played a few demos looking for any where the stereo effect really helped them. But none really stood out, and were all just as nice to play with the effect turned off. But, the always on wireless feature to exchange data between games seemed cool.

Google (I work there on Chrome) had a stronger presence than previous years with 2 tutorial days, booth, and some additional appearances. I gave a talk "HTML5 and Other Modern Browser Game Tech" (slides up soon, promise) which was received well.

I got a chance to meet up with friends, including the guys at Activate 3D, who had a cool demo running on Kinect. Being able to jump, swing on ropes, zip lines, monkey bars, etc, with video motion capture is pretty cool. They need to update their website's video, they had a nice rooftop race demo running.

David Jaffe pointed out that Consoles are way too slow to resume playing your game -- why can my DS pop back instantly and my plugged into the wall console takes minutes.

And finally, I'm inspired to do more design work and game Jams. Especially Stone Librande's talk 15 Games in 15 years, where he described creating games for himself and children was superb. Build fun in your life.

Tuesday, February 22, 2011

Get Ready for GDC 2011!

Here comes GDC!

I'm presenting at GDC this year on HTML5 and Other Modern Browser Game Tech. Still busy getting slides ready, I've a lot of tech I want to cover... WebGL, canvas 2d, svg, web sockets, storage, audio, Native Client, etc. Whew. Well, it deserves a bit logo off on the right. ;)

Google's going to make a good showing this year. Check out our GDC Agenda.

Here's a list of sessions that caught my eye when I skimmed through. Did I miss any awesome session? Let me know in comments. ;)

(you can add it to your own calendar view by putting bdsmf82ejdng803qok5mlmsn4s@group.calendar.google.com into your "other calendars")

See you there.