Hands-free pong: My Mini LD #58 Game

Hands-free Wave Pong!A couple of weeks ago I created an entirely hands-free pong game demo in JavaScript for the Mini Ludum Dare #58.  The theme of this game development jam was “Pong” and I gave it a new twist.

You can check out the game here.  Note you’ll need a mac laptop running chrome to play the game demo and you’ll also need to give the browser access to your microphone when you visit the page.

I first got the idea for a hands-free game after seeing implementations by Daniel Rapp that used the doppler effect to track hand motion. His work seemed like the perfect basis for a game, and what’s remarkable about it is that it works so well. I’ve left the game on by accident and watched it continue to track hand motions from someone sitting across from me after I pulled back my chair.

I put this demo together in a few hours for the Mini Ludum Dare game jam and I’d like to expand on the concept by making a more involved game in the future. From swatting flies to leveling a space ship, there’s enough here with this mechanic to be quite entertaining.

PHPUnit install tip for Homebrew and Composer

PHPUnit is one of my favorite unit testing tools and I recently needed to install it directly into a project with composer. I’m on a macbook pro running mavericks and homebrew, so I typed:

composer require "phpunit/phpunit"

Surprisingly, I got:

Could not load package phpspec/prophecy in http://packagist.org: [UnexpectedValueException] Could not parse version constraint ^1.0.2: Invalid version string "^1.0.2"

I looked at my version of composer, installed last year probably, and it was at 1.0.0-alpha8. Aha! I thought, I will upgrade.

brew upgrade composer

This upgraded composer to 1.0.0-alpha9, but still did not resolve the error message.

Finally, the magic to get it working was:

composer self-update

The update set composer to 1.0-dev, which was enough for my composer require “phpunit/phpunit” installation command to work.

I’m noting this tip here on my blog in case anyone else finds themselves working with PHPUnit since the closure of its pear repository last year.  Composer is an awesome dependency management tool that’s a delight to use and I’m glad only a quick self-update was needed for PHPUnit.

Daylight Saving Time

Summer is my favorite season in San Francisco. This year I’m enjoying the approaching summer hours and following daylight in the mornings and evenings. The initial DST time adjustment is disconcerting, but it’s worth being able to appreciate the weather outside of the office.

Switching back in November is more challenging for me. I’m happy that the next change is quite a few months from now and near the end of a year that still feels new. I expect 2016 to be pretty awesome by the time it rolls around.

Thirty Flights of Loving

I keep returning to Thirty Flights of Loving, one of my all time favorite video games in the non-linear short story genre. If you haven’t played this yet it’s a quick $5 adventure that can be obtained here.  Spoilers ahead.

Thirty Flights of Loving drew me in after the first crash scene, with an injured Anita staring blankly into space while shooting empty rounds from a machine gun. The untold story behind that scene’s moment is shown and almost eclipsed by the literal shell shock of the character.

The scenes shift quite a bit after, but my favorite is the wedding party and the relaxed evening with friends. There’s a surreal and beautiful moment when the guests float into the sky that captures the feeling that everything’s going to be okay.

The most haunting part of the game for me is near the end. I’m riding on a motorcycle with Anita driving, and she turns to look at me with love in her eyes. Everything seems safe, the adventure is won, the past is present, and then the bike drifts into oncoming traffic.  I feel like this is a metaphor for my own life in a way; every time I’ve felt secure in my position or proud of something a shoe drops somewhere and I’m pulled away.

The developer commentary is a nice add to the game, though it doesn’t say that much about the depth of these particular moments. It also includes short movies on modeling several of the game’s objects in Blender, which is encouraging to me because I’m learning that software right now.


Playing This War of Mine

This War of MineI’ve finally had the chance to play the incredibly awesome This War of Mine by 11 Bit Studios. The game is a survival-sim crossover somewhere between Don’t Starve and Fallout that captures the feeling of wartime desperation and desolation.

This single-player game begins with a cast of characters that have to survive a war together in an abandoned half-destroyed house in a blockaded city. The outlook initially seems positive: at least one of the characters has an immediately usable skill and resources scattered around the house can be used to craft tools and repair the shelter. However, security quickly vanishes as the player is forced to send out characters to scavenge and replace dwindling supplies and make what feel like imbalanced trades for sustenance.

Actions matter too. In games like Fallout inhumane conduct is easier and almost encouraged in the resource gathering process. This War of Mine constantly reminds the player that there are always consequences. Early on, I accidentally killed a hospital worker after I was caught stealing and my character had a crisis of conscience so severe they never came out of it.

Character death is also sudden and final. This can shake things up after a span of successful scavenging runs — all it takes is being the wrong place and time to end things.

My favorite part of This War of Mine is the balance and pacing. My games seem to last about a month of in-game time, which is just long enough to feel like there’s a chance of rescue when the scenario gets grim.

The 2014 Retrospective Post

The year 2014 was an important and well-lived year in my life, for which I’m very grateful.

In 2014 I’m proud to have:

  • Became a Zend Certified Engineer for PHP 5.5 and Zend Framework 1.
  • Received word that I passed the MySQL 5.6 certification exam during the beta last December (2013).  Though Oracle claims the credentials are equivalent to non-beta exam takers, I’m proud to have earned mine because of the enormous block of questions featured only in the beta exams. It feels hard-core.
  • Succeeded at a dream job and found another. I’m getting closer to figuring out what I want to be when I grow up.
  • Released 3 games through the Ludum Dare game development competitions and also worked on the Shadowgate remake. That was cool.  I only had one small game out in 2013, so I feel like I’m gaining momentum in this area.
  • Joined the current decade in cell phone and laptop technology.
  • Visited Portland, twice!  Portland is neat. I could retire there someday.
  • Went on a proper (if somewhat local) traveling vacation to the empire mines.
  • Played and wrote more about games.

I’m also happy to have seen my family more and spent time with people who are good for me. That’s the most important thing.

Bringing in 2015

It’s that time again.  I started this blog in 2013, this is a young blog!  It feels very strange to write up another year’s end post already, so I’m going to do it backwards and look ahead to the new year.

In 2015 I plan to:

  • Complete one game a month in the One Game a Month Jam. (Is this a jam? I don’t really know. But it looks cool.)
  • Get my retirement finances in even more groovy shape this year. I’m definitely getting better at moneying like an adult.
  • Blog excitedly about the video games I own, most of which I haven’t played yet.
  • Pet more kittens.

In 2015 I also hope to:

  • Learn how to cook food worth eating. I’m *this* close.
  • Upscale my game development skills in the art and music areas. I’m committed to making 12 games next year, but I’d like them to be good ones, eventually.
  • Finish my lingering Magento enterprise certification. I still have the voucher; studying for the certification test got away from me this year.

Aside from these goals, I think I’m going to play 2015 by ear. I’m also going to write a retrospective of 2014 probably in the first week of January — it was an important year for me.

Ludum Dare 31: The Results

The results are in, and I’m happy to say Tiny’s Adventure in TV Land did much better than I expected!


I’m especially proud of the 3.94 I got in the Theme category!  One hope I had from this competition was to get a 3 or higher in any category because I’ve never scored above a 2.x before. I almost got a 4 in Theme! I’m also pleased that the 3.94 score placed me at #189 out of 1365 total 48-hour compo entries.

My rank in the Humor and Mood category placed me in the upper half of the competition entries. I did slightly worse in the Overall category than the last competition; my previous game SWARM received a 2.80 rating in Ludum Dare 30.

The most informative part of this competition for me was having 55 other participants play and comment on my game, which is a new record for me.  Thank you so much!

Playing Oblivion Again

After nearly a decade-long pause, I’m finally playing The Elder Scrolls IV: Oblivion again.  I’m actually going to beat it this time, too!

Back when I was obsessively playing Skyrim, I remember thinking that Oblivion was still better. I couldn’t remember exactly why it was, but I felt very strongly about that fact. Now that I’m back into Oblivion, it’s easy to see why.  Oblivion is beautiful. Skyrim is epic in a Game of Thrones tribute to the north kind of way, but it gets dreary and boring. Even the later generation graphics don’t quite save it by comparison. The placement of villages and overall map structures in Oblivion make sense, and don’t feel packed in like Skyrim’s do. Oblivion feels smaller, but that’s okay, because the cities, towns, caves and other areas resonate with the mood of the game.

I never finished Oblivion back when I first played it largely because my game got bugged inside the oblivion gates.  My incredibly powerful alchemist made potions to walk across the lava in the oblivion areas to reduce travel time.  I thought I was being clever by sidestepping one of the more boring areas of the game, but I ended up bugging the gates, and treasure chests weren’t populating along with other issues.

I have other games I intend to finish soon, so my current Oblivion playthrough is more of a casual speedrun.  I’m having fun, and this time around I’m not taking any shortcuts.

Tiny’s Adventure in TV Land – A Ludum Dare Postmortem

Tiny's Adventure in TV LandLast weekend I created the adventure game “Tiny’s Adventure in TV Land” in 48 hours for Ludum Dare #31.  Prior to the competition I had a plan for the development methods I would use and roughly how I would spend my time.  This is a postmortem of how it went.

What went right:

  • I completed the game in 48 hours!
  • The thematic portions of the game were easy for players to identify.
  • Improved graphics. This game was visually nicer than my previous Ludum Dare entries.
  • The overall game design I came up with Friday night largely held throughout the weekend.
  • Having a tested build system in place.  This made the submission hour a breeze.

What went differently than I expected:

  • Dropping mobile support early. Prior to the competition I wanted to make a mobile entry, but I decided there wasn’t time to tweak a game type I was unfamiliar with.
  • Time management. I’d planned to have the entire prototype finished Friday, and then iteratively polish it over the weekend. Instead, the game came together a few hours before the competition ended.

What went wrong:

  • The first level was too hard.  Some players mistook the carrot as life or status indicator instead of an item to retrieve.
  • I didn’t allow enough time to create a soundtrack.
  • The physics were floaty.  I went with it, rather than changing it, but this limited the level design later on.

After each competition I have an idea of what I need to work on.  These are my plans:

  • Practice composing music in GarageBand.  I need be good at this and have a solid workflow in place prior to the competition.
  • Study photoshop techniques.  I learned quite a lot during the competition and I think I can improve even more for the next one.
  • Improve my use of JavaScript 2D physics and use a better tweening solution.

Overall, I had fun participating in this Ludum Dare. I learned the most enjoyable part of the game development process for me is at the point when the game is assembled just enough to be playable. I’m looking forward to the next competition in April.