Undead Man Lover

Undead Man Lover is the game I worked on for the 2013 Global Game Jam at the NC State location.

The jam started off rough due to a nasty winter storm, which prevented us from meeting on Friday night. We did pitches/team formation thru a combination of mumble, google+, and a wiki. Thankfully the roads cleared up enough to open the jam site on Saturday around 1 pm and we were able to jam in person for the rest of the weekend.

Continue reading “Undead Man Lover”

Exploding Slime Painter

This past weekend was the 2012 Triangle Game Jam. Our theme was game titles generated by madlibs: everyone contributed a list of 5 adjectives, 5 nouns, and 5 verb stems, and a program generated random game names from them. From there, we pitched ideas based on the titles and formed teams.

There were a lot of good titles, but the one I pitched and ended up making into a game is Exploding Slime Painter.  The team consisted of Mike Daly, Michael Noland, and Frank Voelker, with some sounds from Ash Gowland.

Continue reading “Exploding Slime Painter”

Multi-turret water cannon

I’ve been holding off on posting about this until I got some time to finish it up, but now seems like a good time since it was mentioned in a community blog post.

Multiturret water cannon

I didn’t capture a proper video of it in action, but there are a couple snippets in this awesome picnic compilation video put together by Aaron:

The cannon uses a pre-pressurized water bladder, typically used to smooth out variations in water pressure for houses or RVs. The pressure of the output water will be roughly the same as the water supply used to charge the tank (and it can also be run in ‘continuous’ mode by leaving the hose connected). At the picnic site, the park water supply pressure was crazy high, which resulted in very nice performance. However, I saw about 90 psi on the pressure gauge at one point, which is uncomfortably close to the tank safety rating.

The drive electronics are just an Arduino that sequences four relays in turn controlling the sprinkler valve solenoids.

Planes on a Snake

This past weekend was the 4th annual Global Game Jam, and we hosted a site in the triangle again. I was an organizer this year, but I still had plenty of time to jam, creating Planes on a Snake with my team. The theme was a picture of an ouroboros, which we interpreted by setting a shmup on the back of the world serpent.

Brief Play Description

A rift in spacetime has resulted in a large number of World War II era planes getting stuck on the world snake.
Join the frequent fliers club of Ouroboros Airlines, racking up points while taking advantage of the torus nature of your new environment.


(video contains some strong language)

Continue reading “Planes on a Snake”

Speeding up LPD8806 show() without hardware SPI

If you’re using LPD8806 LED strips and you can’t use the hardware SPI port (e.g., when using an Ethernet board), there are two other options in the Adafruit library: the default mode and ‘slowmo’ mode. The default mode is decent, but the flexibility of being able to choose the pins at runtime comes with a cost.

However, you can still get a decent speedup by defining your pin usage at compile time in a replacement show() function. I measured the time required to update an 86 LED strip using each method on an EtherTen board (Atmega328 @ 16 MHz, same as the Uno):

30.23 ms - Adafruit 'slowmo' method (digitalWrite)
7.76 ms - Adafruit default method (port pointers)
1.54 ms - Compile-time method
1.43 ms - Adafruit hardware SPI method

Continue reading “Speeding up LPD8806 show() without hardware SPI”

Reducing code size on Arduino Ethernet boards

The Ethernet library grew in size several KB from 0022 to 1.0, which is a big deal when you only have 32 KB to play with. You can save about 2 KB by compiling out DNS support:

Wrap the following pieces of code in #if WITH_DNS

  • Dns.cpp and Dns.h:
    The entire file
  • EthernetClient.h and EthernetClient.cpp:
    int connect(const char* host, uint16_t port)
  • EthernetUDP.h and EthernetUDP.cpp:
    int beginPacket(const char *host, uint16_t port)
  • Client.h:
    virtual int connect(const char *host, uint16_t port)
  • Udp.h:
    virtual int beginPacket(const char *host, uint16_t port)

Add #include "EthernetUDP.h" to EthernetUDP.cpp, since it’s currently relying on the indirect include from Dns.h.

Faster Arduino development

I’ve been using Arduino boards for a bunch of random projects lately. They may not be as inexpensive or as small as throwing together a microcontroller and a resonator on a piece of perf board, but they’re a lot faster when making one-offs: lots of shields with ready-to-go libraries, quick programming / test cycle, etc…

One major downside is that the official Arduino IDE has a super-awful text editor, but there is a solution. Visual Micro has a plugin called Arduino for Visual Studio that makes everything ‘just work’ in the VS IDE, even VAX. Install the Arduino 1.0 IDE, then install the plugin, and all you have to do is point the plugin to your Arduino directory the next time you run devenv. It handles the rest, setting up syntax highlighting for .ino/.pde files, adds a toolbar to pick the board type and COM port, etc… To top it all off, it compiles about 10 times faster than the official IDE (0.2 – 0.5 s versus 5-10s); so much faster that it seems like there is a bug in the current version of the Arduino IDE.

Long story short, if you are doing any Arduino development and have VS 2008 or VS 2010 (the express edition won’t work since it doesn’t have support for plugins), you should download it now for a massive productivity boost.

Global Game Jam 2012

I’m happy to announce that we will be hosting a Global Game Jam site in the NC Triangle area again this year, January 27th to the 29th at Joystick Labs in downtown Durham. Sign up now at http://globalgamejam.org/sites/2012/triangle-game-jam.

More information will follow shortly, but the format will likely be very similar to past years:

  • Getting started around 6:00 PM on Friday, announcing the theme, brainstorming ideas, and forming teams, etc…
  • Full day of work on Saturday
  • Finishing up on Sunday by 3:00 PM, showing off the games to each other afterwards.

This is the 4th year of the Global Game Jam; to get a better idea of some of the cool things possible in a weekend, check out some of the games made in the triangle area in past years:

Cross-posted from the Triangle Game Jam site

Christmas gifts: Candles

One of the things I made for Christmas gifts this year were candles. In addition to the typical cylinder and square candles, I made some candles in the form of the Gears omen and a lime.

Making candles with a homemade mold

For my first time making molds, and first time pouring candles, I’m really happy with how things came out.

Continue reading “Christmas gifts: Candles”