https://www.youtube.com/watch?v=_7HmcG0lToU
This is the Castlevania (NES) Motion Controller. Its a Circuit Playground Express incorporated into an arm brace in order to use its buttons and accelerometer to control an emulated version of the original Castlevania for the NES. The goal for this was to make the game more interactive, immersing, and make you feel the cool effect of whipping the undead in real life. Making several gestures or moving your arm in certain directions will control the player character.
Having your forearm straight up, in a ready to whip stance, is going to be your default position for using the controller. Tilting your forearm to the right or left will make the playing turn/move in the correlated direction. Extending your arm out quickly in a whipping motion will engage attack mode, where the player will continuously attack. In this mode the player can still turn left or right. While the controller in earlier parts of development was being designed for each whip to be done by the player, this method resulted in inconsistencies with how well the controller could detect the player's individual whips as well as ultimately being very exhausting and strenuous to whip that many times so quickly. Thus a more user friendly approach was developed henceforth. To get out of attack mode the player need just aim their arm straight down, similar to lowering your weapon in real life. Holding this position and/or covering the controller at the same time will also result in the player crouch or enable them to go down stairs. Whipping the arm at a high angle with enough force will lead the character to do a forward whip jump and enable attack mode. Pumping a fist straight up will result in a regular jump however it is more consistent to whip jump by whipping upward. To use the character's items the player need just hold their arm straight up and cover their controller in a powerful stance to enable the use of those special weapons. This will continue until the player lowers their arm. This stance is also how the player climbs stairs.
Under the hood, three key ideas make the controller work: sending the right amount of keyboard input messages to have the game detect controls, working with gravity in mind, and designing the gestures to work along the XYZ axis. In development a lot of testing went into figuring out the appropriate amount of "Keyboard.write()" commands to send in order for an action to be executed consistently enough when gestured as well as enough to where no duplicate inputs would be executed. Since the controller is using an accelerometer to receive inputs, different ranges of acceleration in each of the dimensional axes need to be figured out through constant testing. The ranges that accept input aren't consistent due to the different angles that the human arm reaches with as well. For example, in tilting your arm you have a greater natural range of motion when tilting your arm to the left and not the right. For attacks the controller is looking for a minimum amount of force to be detected in the X axis, the axis that follows the path of gravity given how the CPX is mounted on the bracer and how a person positions their hand to hold a weapon. When a large enough force is detected in the X axis, attack mode is entered. If this force is accompanied by a large enough acceleration in the Y direction as well, then this leads to the whip jump. The crouch and item gestures function using the light sensor on the controller to detect when there is no light, thus telling the game to receive the down and up keys respectively.
Comments