Be Mindful of Over-Engineering
Do you remember the Nintendo Wii's controller; the one shaped like a TV remote? I do.
That thing kicked ass.
This post is a mess, but maybe there'll be a lesson in it somewhere.
Switch 2 a New Controller
For the last day and night, I've been looking into how remake the "wiimote" for a modern world.
Nintendo recently announced a new console. After all the initial excitement faded away, I realized that I don't want it all that much. Nintendo does a lot of things I don't like, actually! The more I learned about Nintendo' Game Chat system, the more I wished I could just integrate Discord (or any other chat program) into my Mario Kart and Smash Brothers sessions.
The only thing that locks me into their ecosystem is that they come up with fun new ways to interact with games that aren't recreated anywhere else. If I had something like a wiimote or a Joy-Con that would work out-of-the-box on a Linux system, I'd be fine with leaving Nintendo in the dust.
Nobody was picking up that torch. PlayStation came close with their Dual Shock 4 and Dualsense—hell, they surpassed Nintendo in the "traditional gamepad"-space, as far as I'm concerned. Where can I get that old remote-control feeling though? Who's making controllers shaped like sticks? Nobody!
You know what people are making, though? Programmable microcontrollers.
If nobody else was going to create what I wanted, I'll just pluck up and create it myself! How hard could it be?
Gunning for the Top
I wasn't only gonna remake the wiimote, no sir! I was gonna make it better; more accurate, more robust, more compatible!
At first I wanted to go beyond the old infrared sensor bar to move a cursor on a screen.
- Could I use the timing of ultrasonic pulses with a microphone to get a spatial image?
- What if a square of sensors around the screen, detecting a the intensity of a cone of some (safe) radiation to triangulate a point?
- Are there any kind of cheap grid that could be overlaid or underlaid on the TV?
- Can a camera on the wiimote detect subtle pixel-manipulations as location markers?
Ultimately, I decided to stick with the same method that Nintendo did.
The starting point was the sensor bar: this wasn't going to be some electronic candle that "calibrated your detection (I didn't understand what that meant yet)." My sensor was going to give you laser precision on the screen-space with a five-point infrared beacon system! The only problem was that I would need to set up those beacons around a TV. It would be better if those sensors were built into the TV, but that would require selling manufacturers on the added expense: how do I sell somebody on that kind of expense?
I could try and target Roku and Amazon? If I make an open source platform, cobble together a hack of their remotes, and say "hey, if you don't do this, your competitor will," that might get them to do my job for me?
Which IR-cameras can get cheaply that offer enough fidelity and speed that I need for a modern game? 60 frames per second is the standard, but 120 frames per second is becoming something people expect.
Screw It, Actually
Turns out, I didn't need to do any of that nonsense!
If drifting over time is the problem, all I had to do was toggle detection on and off. Nobody really cares about exact one-to-one accuracy: feeling matters more. Computer mice are considered the gold standard of tracking, and they only send data of relative movement too! So long as people can stop input to reset themselves (like picking up and moving a mouse), they'll clearly be happy.
The B-trigger can easily take over as a motion toggle. The action feels natural enough. I was worried about first-person shooters, where people would likely insist on the trigger being the shoot-button, but I concluded that either it'll work out or the toggle could be mapped to A.
Backup Uses
The games are what matter, and let's be honest: nobody's gonna develop for this device but me at first. Anybody that buys a remote is going to need more than just a few bits of niche entertainment software to start with, and I've got some ideas on that front:
- Plug-and-play remote mouse (output gyro/acceleration as mouse movement, A as left-click)
- Novelty for the Steam platform (the remote puts out XInput-compatible data as a generic gamepad, with SteamInput covering the slack)
Some smart TVs have mouse-capability, so that'd be an easy win. If I program the remote to automatically output motions as analog stick motions (axes 2 and 3 I think), like SteamInput can make motion-capable gamepads do, then that's one less hurdle all-around. Any odds and ends could be tackled by Valve's input layer, if games don't allow rebinding on their own.
Even without software specifically targeting a revised and revived wiimote, someone could get some solid use out of it.
The Lesson
You probably don't need to do as much work as you think.