Office-Wide RFID Powered Nerf War

Keith Chester
Fusion Digital
Published in
3 min readJul 31, 2015

--

…because “Why not?” is the best possible reason

When you get an opportunity to build something awesome, you should. One such opportunity arose recently when a few members of our creative team decided to host an office wide after-work nerf battle and party.

Our office was *really* excited about this and may have gone a *bit* overboard…

Around the same time a client was asking us for examples of our usage of RFID and NFC technology at events. We’ve used the tech before at a few events, but nothing home brewed or terribly unique. The digital team here prides itself on doing what’s weird and awesome (take a gander at what we did on a short timeline for our 8-bit themed party) so we jumped at the chance to build an RFID-powered king of the hill game for our nerf war.

My surface acting as a then inactive capture point.

The idea was simple enough. In a ten minute game, four capture points would exist throughout the building. Only one point would be “active” at a time. Each capture point had an RFID reader on it. A team could capture an active point and, for every 5 seconds of point control, earn their team a point. Every minute the point would move to another random control point in the office.

Death from above — each capture point was chosen because it was impossible to defend, and three of them had the high ground shooting down at them.
First 30 seconds of a game usually led to a foamy death brawl.

We have about a half dozen and change TVs located around the office with Chromecasts plugged into them. Using an oddball trick in Chrome we would display a map of the building with “capture points” denoted (and who controls them), the time left in the game, and current scores of the game.

The map would show the score, where active control points were, what team controlled them, and how much time was left. We Chromecasted the map to TVs throughout the building.

The whole application was written in node, built for node-webkit. To access the RFID readers, I wrote a module called serial-rfid-reader which would make it dead-simple to react to the RFID tokens. The capture points, admin control app, and display maps were all linked together by Firebase — it allowed us to make a reactive real-time app with no effort at all. We used AngularJS to tie the page’s logic together.

Yes, the admin app was hideously ugly, but it did exactly what it needed to do — assign RFID tokens to specific teams, reset the score, start and stop the game, and adjust time limits for game logic. It would take 5 seconds to setup the next game, and a whopping 90 seconds to assign everyone’s RFID token to their appropriate team.

When building the application, we had a lot of issues with the serial port module getting wrapped in node-webkit. This is not an uncommon issue, so I documented what I did to finally get it working in a helpful gist.

All in all, three days of effort resulted in a pretty fun end result. People loved the game and the office was filled with flying darts and yelling. We’re already plotting version 2 features.

Blue team plotting their next move (and catching a breather — this game was exhausting!)

--

--

Keith Chester
Fusion Digital

Developer + R&D for Fusion Marketing. Hardware maker. Node programmer. Entrepreneur. Curious fellow.