Lately I’ve been watching my fair share of Twitch, and one of my favorite streamers is a kiwi by the name of Rudeism. Although he’s quite an entertaining streamer in his own right, one of his gimmicks is that he plays games “wrong”. That is to say, he likes to play games in a way that’s not standard – something he calls “AltCtrl”. He’s played Overwatch’s Winston with bananas, Skyrim with voice-only controls, and Player Unknown’s Battlegrounds (PUBG) with a frying pan, just to name a few of his many AltCtrl projects. You can find his streams on Twitch.
I think the whole idea of “AltCtrl” is quite intriguing, and it would be fun to build my own controller that matches the animations in a game. I’m going to try doing just that by making my own controller for Overwatch out of a Nerf Hammershot revolver.
This post is part of a series on creating a custom controller for Overwatch using a Nerf revolver. Check out the project page here.
Planning
This controller is going to be for the character of McCree in Overwatch, who is a cowboy with his own six-shooter. The Nerf weapon of choice is a Hammershot – a 5-shot revolver with a spring-loaded action that closely resembles McCree’s own weapon in both style and function.
Control List
Overwatch is a 3D first-person shooter (FPS), which means it has a large number of base-level controls just for manipulating the character. Here are McCree’s controls:
- Mouse to aim.
- WASD to move.
- Space to jump.
- LSHIFT for his combat roll (Ability 1).
- Left Click for firing.
- Right Click for alternate firing (“fan the hammer”).
- R for reloading.
- E for his flashbang (Ability 2).
- Q for his ultimate ability (“High Noon”).
For starters, I’m not going to try to do everything all at once. The Hammershot has limited room, and I want to do my best to keep it in the style of the revolver in the game. This means one-handed controls, and there’s only so much you can (comfortably!) do with one hand on a Nerf Gun.
I’m going to ditch all of the movement-related controls and offload them to something else – most likely a DDR-style dance pad. This clears WASD, space, and LSHIFT, leaving just aiming, firing, alt-firing, flashbang, reloading, and his ultimate ability. Still plenty of controls, but it should be manageable. Now to figure-out how to map them.
Controller Mapping
The most obvious controls are the firing ones: pulling the trigger for primary fire and sliding the hammer back for alternate fire (fanning the hammer in real life). The revolver’s cylinder can also move freely, so I think spinning that would be a cool way to get him to reload. I’ll need two buttons and a rotary encoder for these three controls.
The only remaining controls are for aiming, the flashbang, and his ultimate. I’m going to offload all of these to an IMU, which has both an accelerometer and a gyroscope. Rotation along Z / X can handle aiming, and I think rotation about Y (turning the gun sideways) would be a slick way to trigger the flashbang. For his ultimate ability (“High Noon”), McCree holsters his gun as-if he’s in a standoff. So if I put the gun in a ‘holster’ by my side I can detect the low Y value from the accelerometer due to gravity and trigger the ultimate, mirroring his animation in the game.
That’s about the extent of my planning. I’m getting a bit burnt out from the detailed planning required for the time circuits project, so I’m going to see if I can do this quick and dirty by the seat of my pants. It’s going to chaotic and awesome!
Prototype
To test the electronics, I set up an Arduino Pro Micro with an MPU6050 IMU, a cheap rotary encoder, and a few generic pushbuttons on a breadboard. I wrote a rough piece of code to handle the keyboard inputs and gave it a try in the Overwatch practice arena.
It works! I definitely think I can do this and make it work well. The breadboard is incredibly awkward to use as a controller, but once it’s all tied into the Nerf gun I have high hopes for its actual usability.
Disassembly
With the plan for the control mappings in place, the first step is to gut the Nerf controller so I can wire up the electronics.
Splitting the Shell
The Hammershot has 12 screws holding the outside shell halves together. I pulled these off using a #1 Phillips screwdriver. I also needed to pull off the “Warning” sticker on the bottom rail that spans both shells in order to split them apart.
Note: All of the screws are the same size on my gun, so I didn’t need to worry about keeping track of the screw positions. YMMV.
After removing the screws the left half should lift straight off and the guts will be exposed. There’s just enough time to appreciate the design for a few moments before tearing everything out.
The first part to go is the cylinder, which is only held in place by the shell. This lifts straight out, along with the small orange plastic block that it spins on.
After that the whole firing assembly comes out cleanly. I removed the three screws retaining the trigger bracket, which also slides up and off after relieving the pressure from the hammer. Then I pulled off the trigger, being careful not to lose the coil spring underneath (which, for reference, pushes up against the shell wall around the trigger). The rest of the firing assembly, still held in its white bracket, just lifts straight up as one package.
Parting Up the Firing Assembly
Unfortunately since I want the controls to be easy to manipulate the “Nerf” parts get in the way. I’ll need to lower the resistance required to pull back the hammer in order to slide it quickly with my left hand, which will also make this a pretty puny dart shooter. On the plus side, this means I can remove all of the dart-shooting components and free up some space!
Once separated from the shell, the first step in parting up the firing assembly is to flip it over and take off the small extension spring used to pull the advancing lever forward. This can be pulled off by hand.
Flipping the assembly back over, next I had to remove the hammer and piston. The hammer slides straight up and off of its rotating rod with a little care to free the spring. With the hammer off of its rod, pulling straight back should cause the piston to come free from the air chamber. Next, the advancing lever. This is a little tricky, but I was able to get it out by sliding it out the front after a few twists.
Lastly, the air chamber needs to go. On the back side of the mounting bracket is a small square opening that is retaining the chamber. Flexing the tab up with a small screwdriver is enough to let the chamber slide backwards and out of the assembly.
Although the firing assembly is all parted-out, there’s one last little bit to do before the Nerf gun is completely “disassembled”. With no air cylinder there’s no reason for there to be a piston. Using a screwdriver, I pushed firmly on the pivot rod running through the hammer until it pulled away from the piston fork. After a little wiggling the fork pulled free of the hammer.
Conclusion
We’re just getting started! That’s it for disassembly, and now the fun begins.