06 April 2022

Pinball Controller for Demon's Tilt

I am making a controller for Demon’s Tilt—a digital pinball game. My controller concept for Demon’s Tilt resembles a miniature pinball machine. Its conceptual model is meant to be that of a pinball machine as well. The user has four inputs. Two of those inputs are levers located on both sides of the controller, that the user must pull towards themselves, to control the flippers in game. One input is a plunger they must pull in order to launch the ball in game. The final input requires the user tilt the entire controller on the x and y axis to nudge the ball. The controller's inputs are effectively three unconventional switches and input from the CircuitPlayground Bluefruit's accelerometer.

This controller is shaped like a pinball machine and will have art from the game’s poster and from in-game to reinforce the conceptual model. I believe that this controller suits Demon’s Tilt as the game is made to only use keyboard and controller. Like a controller meant for simulators, this brings part of the experience of being in the arcade to the user for a game where it lacks that physical pinball experience through the controls.

Sketches:

describing the general appearance and parts to 3D print

detailing metrics for the enclosure's contruction
 
Schematic:
 
Video:
 
 
 
Questions for Peers:
 
The most vague part of my design is still how I will mount components inside my enclosure. 
Do you have any suggestions for materials or methods to secure my plunger and flippers so they will not shift?

Can you foresee any issues that may come up with my current enclosure design when I go to build it? I would rather avoid any notable errors when 3D printing it.
 
Psudo code:
//Read accelerometer X
//Read accelerometer Y
//Map X input to accelerometer X, and a range of -1 to 1.
//Map Y input to accelerometer Y, and a range of -1 to 1.
//Bool alreadyNudged = false
//If alreadyNudged == false{
//     If map X == -1 && absolute value of X > absolute value of Y,
//          Analog Left output/A keyboard output
//          alreadyNudged = true
//     If map X == 1 && absolute value of X > absolute value of Y,
//          Analog Right output/D keyboard output
//          alreadyNudged = true
//     If map Y == -1 && absolute value of Y > absolute value of X,
//          Analog down output/S keyboard output
//     If map Y == 1 && absolute value of Y > absolute value of X,
//          Analog up output/W keyboard output
//}
//If map X == 0 && map Y == 0,
//     Analog center output/Undo all WASD press
//     alreadyNudged = false;

//Create bool isLeftFlipping = false
//A6 pin = leftFlipper
//Read leftFlipper input
//If leftFlipper input == on,
//     isLeftFlipping = true;
//     else
//     isLeftFlipping = false;
//If isLeftFlipping == true,
//     LB output(xbox)/left shift output
//     else
//     End Lb/left shift output

//Create bool isRightFlipping = false
//A1 pin = rightFlipper
//Read rightFlipper input
//If rightFlipper input == on,
//     isRightFlipping = true;
//     else
//     isRightFlipping = false;
//If isRightFlipping == true,
//     RB output(xbox)/right shift output
//     else
//     End Rb/right shift output

//Create bool isPlungerPulled = false
//A0 pin = plunger
//Read plunger input
//If plunger input == off,
//     isPlungerPulled = true;
//     else
//     isPlungerPulled = false;
//If isPlungerPulled == true,
//     B button output(xbox)/Space key output
//     else
//     End B button/Space key output

 

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.