24 March 2025

Fish Prototype

The controller we are attempting to make is that of a fish, with flex sensors to detect what sides of the fish are being interacted with and light detectors in the eyes to tell when they're being covered. As a fishing game, it seems thematically appropriate, yet silly and creative, to use the very thing you catch to control the game. As feedback for the controller, two questions come to mind: 1) Is the controller intuitive enough to use for a lack of buttons and for its size

2) Do the given controls seem like the best way to follow the guidelines of the project? 

Scaffolding: Prototype Review, Austin Frunk and Brayan soto

We are doing a doom style controller and as such there is a thematic relevance with choosing a skull motif. Doom is known to a "hardcore" game even for its time and to keep in touch with hits rock influences we thought the skull motif was reasonable. In its current form it uses the accelerometer to move using gyro controls and fires when moved upward. We would like to do more but as of right now this is where we are at currently with our prototype. We are seeking to implement more functionality. Specifically with a speaking mechanic to open the doors. 

Would using a speaking mechanic be enough and interactive enough?
Should we restrict it to just strictly an unconventional switch to fire?

Seeking to improve the code and adding deadzones is probably the next step and figuring out some more refined controls, however Sticking to more of a round object and painting the skull is something I think we should seek to keep in mind. 






Scaffolding: Prototype Review - Frogger Pressure Plates

 The customer controller is now in the prototype phase. It will be able to play the original Frogger utilizing four pressure plates, which will be lily pads, with the player able to move a prop frog to each plate to move the frog in the game. This setup mimics the frog’s movement in the original game while introducing a physical, hands-on component. The concept draws directly from Frogger’s visual and thematic identity, transforming passive button inputs into a playful, full-body experience that emphasizes timing and spatial awareness. The lily pad pressure plates will be inside a box to contain the controller and connected to the circuit playground, which will read and signal the player's inputs. We are experimenting with layout and responsiveness.

Questions:

1. Does the layout of the controller and operation feel fun and rewarding or not? If not how can it be improved upon?

2. Is there anything you think should be added to the controller? Another pressure plate or component, or is it good as is?

                                                    Photo of controller prototype


Photo of circuit prototype



video demonstration 

    
                                                                    Code
#include <Keyboard.h> #include <KeyboardLayout.h> #include <Adafruit_CircuitPlayground.h> #include <Adafruit_Circuit_Playground.h> #define THRESHOLD 600 void setup() { Serial.begin(9600); while (!Serial); // Wait for serial to be ready CircuitPlayground.begin(); Keyboard.begin(); Serial.println("Pressure sensor readings:"); } void loop() { int sensor1 = analogRead(1); // Pin 1 int sensor2 = analogRead(3); // Pin 3 int sensor3 = analogRead(4); // Pin 4 int sensor4 = analogRead(7); // Pin 7 // Print sensor readings to the Serial Monitor Serial.print("Sensor 1: "); Serial.print(sensor1); Serial.print(" | Sensor 2: "); Serial.print(sensor2); Serial.print(" | Sensor 3: "); Serial.print(sensor3); Serial.print(" | Sensor 4: "); Serial.println(sensor4); if (sensor1 > 600) { Keyboard.press(KEY_UP_ARROW); // Forward } else { Keyboard.release(KEY_UP_ARROW); } if (sensor2 > 600) { Keyboard.press(KEY_LEFT_ARROW); // Left } else { Keyboard.release(KEY_LEFT_ARROW); } if (sensor3 > 600) { Keyboard.press(KEY_DOWN_ARROW); // Backward } else { Keyboard.release(KEY_DOWN_ARROW); } if (sensor4 > 600) { Keyboard.press(KEY_RIGHT_ARROW); // Right } else { Keyboard.release(KEY_RIGHT_ARROW); } delay(50); }












Team 16: Prototype Review

 By Final Team 16: Jordan Norton & Briah Bellamy

Our controller prototype for "A Short Hike" is a conceptual representation of binoculars that hikers would use for nature exploration, something highly recommended and encouraged within the game.

Pictures/Videos:








Mechanics:

  • The left side has an infrared sensor strip, which players can squeeze once to jump and a second time to fly. There've been difficulties getting this to work, however.
  • The right eye cup has a Bela Trill ring which can be rolled with the right thumb to steer the character in the game via tank controls.
  • Folding the controller opens the inventory/pause menu, which can also be navigated using the Trill ring on the right eye cup.
  • Between the eye cups has a microphone that activates items through players making noise.

Peer Review Questions:

  1. Any suggestions for working with infrared sensors?
  2. Would having a switch tripped when folding the binoculars be more conducive?

Team 12 Prototype Review

Our prototype, though visually simple, is dimensionally close to what the final product should look like. Though it isn’t painted black and red, it is comprised of a small cardboard box housing the necessary components to play the game SpeedRunners. It was a bit too much add to the prototype, but for the final model, we’d like to use the opening and closing suitcase idea since everyone seems to like it. Modeling our controller after an in-game obstacle, the red and black suitcase that you’ll find yourself stumbling over, allows you to interact with an item from the game in a way that benefits you, instead of sabotaging you like it usually does. It is small enough to sit comfortably in your lap or on your desk while in use, and uses a potentiometer for left and right movement, a toggle switch for the grappling hook, and an ultrasonic distance sensor for using your boost and items, all connected to the CPX.

Questions:

1.     For the functioning suitcase idea, would you as a user prefer a controller that is essentially double in size (another box that is the same size stacked on top) or for the size to remain the same but still have the open and close functionality?

2.     Do you think the “lid” of the suitcase could become a nuisance while playing the game, in the even that it should fall on the player’s hands?

23 March 2025

Team 2: Prototype

Our first porotype is meant to control the rhythm game Project Diva. It was suppose to look like a leek "a type of veggie." Unfortunately, we were unable to replicate the look of the intended prototype. Going back into the conceptual, it was from a fandom that came up with ideas about the characters personalities and the food that they liked. One of the characters food was a leek.  

Operation: The main part of the controller is the color sensor (tcs3200) which inputs the function to the game. For instance, color red is used for A and and in the game it is translated for (X). 

Questions:
Do you need to be in a environment with consistent lighting for the color sensor to work properly?
Does the distance affect how the color sensor reads the color placed directly in front?








Scaffolding: Super Monkey Ball Prototype Review



 Our prototype controller for Haste is relatively simple! Our circuit playground is placed on the inside of the platform surf board that the player will move around while playing the game. The surf board will be placed on top of a spring, that is then attached to a flat block shape that will rest on a surface for the player to use. The player will tilt and move the board controller to get the player character in the game moving accordingly. The goal of this is to make the controller scheme more visually connected to what your inputs do in the game. The player will be able to run at high speeds, jump, and charge up energy for a boosted dash as they dodge obstacles and keep away from the dark, dangerous energy following behind them.

Here is a photo of our circuit prototype:

And here is the video of our controller in action:


Team 7 Prototype

Team 7 Rocket League Prototype

For our first prototype for a Rocket League controller, we chose to start off with a cardstock paper model of the Fast and Furious Nissan Skyline GTR. This seemed like a reasonable course of action since it has a shape with a lot of bends that cardboard or other harder materials wouldn't be able to capture. The wheels and wing of the prototype have been left out, as these pieces need to be custom-made for the switches, sensors, and sliders we plan to use for the controller. These details are important, as they influence how the game plays with our controller. As we work on our next prototype, we are developing a customized paper model pattern to fully integrate all the technology. This will be made from a new type of cardstock that we hope will not weaken with the application of glue. However, as we are still in the design phase, we are actively seeking your recommendations on the aesthetics or materials.

Paper model: https://youtu.be/GWxLIt0xVbk?si=oRgPfI4LWp6LTytd

Prototype:





Circuit Prototype:



Video:



Scaffolding: Prototype Review team 8

 Our prototype is meant to control the 1998 Mortal Kombat. It is a full-body controller that requires you to mimic the in-game moves in real life in order to play. For example, in order to punch or kick, you would need to punch or kick a pad with a pressure sensor for the game to register the attack. There are two punching pads with impact sensors in them that will register your hit in order to trigger a punch or kick. To dodge or jump, we will be using distance sensors. This will be done by each sensor sensing if there is something in front of it. If there is nothing in front of the top/bottom sensor, this will trigger a duck/jump. There will also be a rotating arm that you can grab and move. Rotate it 45 degrees or more and it will trigger a block. The floor will have buttons don't he floor that will correlate to movement. Certain combinations of pressed buttons will trigger WASD, also known as your movement. How do you think this controller could be altered for better gameplay? Should this controller be simpler or more complex?







Prototype and Circuit Prototype


Our video (it's also here)

We learned from this prototyping stage that whatever materiel we use for this project, it will need to be stronger than we thought to make sure the casing can withstand the force of the hits as well as function better so the controller can read the inputs better.

Scaffolding: Prototype Review - Final Team 10

 Our prototype is a simple, tilt-based controller for the "Suika Jelly Game." It consists of cardboard, a potentiometer, the Circuit Playground Express, and some alligator clips. We wanted the overall look of our controller to match the theming of the game, so it's been crafted in a way that looks like a watermelon slice! We plan on decorating the casing to look more like the fruit. (We've also included a latch on the back for easy-access of the internals.)

Questions:

1. Should the potentiometer (knob) be put in a different area of the controller?

2. Do you believe the current sensitivity of the tilting is too much?


Gallery:









Team 15 Prototype Review

 Zoran Diaz
John Stalvey


The concept of our controller has you maneuvering the very ground itself of Dig Dug. In the game, you typically dig deep underground to destroy enemies. In places so deep underground, you'd find stuff like iron, so we used iron fillings and sensors to make our controller reflect the atmosphere in Dig Dug. When you put the fillings near the sensor, the character will move in that direction. When you shake the controller, you attack any enemies in your path. What unique issues do you see happening with our iron fillings and sensors? How can we best separate the fillings from circuits while also physically seeing the fillings?

Scaffolding: Prototype Review - League of Legends Controller Prototype


  1. League of Legends Controller Prototype



  2. https://youtu.be/e5tXyMQpygM

  3. (link)


  4. The idea for our controller came from our team's shared enjoyment of the game League of Legends and its lore. We wanted to pay tribute to one of the game's artifacts with a great backstory, a pair of powerful gauntlets that ended up in the hands of two different people; therefore, we decided on two different controllers in the form of Ezreal and Kassadin's gauntlets. One controls movement, while the other is used to fire abilities. The idea is you would play League cooperatively with two people, each using one gauntlet, but one person could easily play with both gauntlets as well. The novelty of engaging in gameplay in a new manner (coop) and the lore representation seek to give the player an enjoyable, social way of playing a famously toxic and stressful game.

     

     Questions:

    -  Is the idea of playing a competitive single-player game in an optional, cooperative manner sound engaging?

  5. - Do motion controls benefit the idea of a more social playstyle?
  6.  Kassadin's Gauntlet Code (Abilities):#include <Adafruit_CircuitPlayground.h> #include <Adafruit_Circuit_Playground.h> #include <Mouse.h> #include <Keyboard.h> #include <Wire.h> #include <SPI.h> void setup() { // put your setup code here, to run once: // put your setup code here, to run once: CircuitPlayground.begin(); Serial.begin(9600); Mouse.begin(); Keyboard.begin(); CircuitPlayground.setBrightness(60); for(int i = 0; i < 9; i++){ CircuitPlayground.setPixelColor(i,128,0,128); } CircuitPlayground.setAccelRange(LIS3DH_RANGE_2_G); //need to create a variable to store the mouses last know position from the center point // Using mouse libraray exmaple code as a base lets cook } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin A0: int analogValue = analogRead(A3); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = analogValue * (3.3/ 1023); if(analogValue > 240){ Keyboard.press('q'); delay(75); Keyboard.release('q'); } if(analogValue > 240 && analogValue < 300){ Keyboard.press('w'); delay(75); Keyboard.release('w'); } if(analogValue > 300){ Keyboard.press('e'); delay(75); Keyboard.release('e'); } // print out the value you read: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); }

Ezreal's Gauntlet Code (Movement):

#include <Adafruit_CircuitPlayground.h> #include <Adafruit_Circuit_Playground.h> #include <Mouse.h> #include <Wire.h> #include <SPI.h> int range = 12; int delayTimer = 2; int center = range/2; int threshold = range / 4; float minMotionx = 1; float maxMoition = 10; bool on = false; void setup() { // put your setup code here, to run once: // put your setup code here, to run once: CircuitPlayground.begin(); Serial.begin(9600); Mouse.begin(); CircuitPlayground.setBrightness(75); for(int i = 0; i < 9; i++){ CircuitPlayground.setPixelColor(i,0,0,128); } CircuitPlayground.setAccelRange(LIS3DH_RANGE_2_G); //need to create a variable to store the mouses last know position from the center point // Using mouse libraray exmaple code as a base lets cook } float AccelReader(){ float x = 0; float y = 0; float z = 0; //Should it be a one time read on call or should i have a read for a set Time? //The examples I've seen have had a fixed read but i think that wil for(int i = 0; i < 15; i++){ x += CircuitPlayground.motionX(); y += CircuitPlayground.motionY(); z += CircuitPlayground.motionZ(); } //might need to trim these to be an average or make a buffer return sqrt(x*x + y*y + z*z); } float lerp(float x, float x0, float x1, float y0, float y1) { // Check if the input value (x) is outside its desired range and clamp to // those min/max y values. if (x <= x0) { return y0; } else if (x >= x1) { return y1; } // Otherwise compute the value y based on x's position within its range and // the desired y min & max. return y0 + (y1-y0)*((x-x0)/(x1-x0)); } void loop() { // put your main code here, to run repeatedly: if(CircuitPlayground.leftButton() == HIGH && on == false){ on = true; } if(CircuitPlayground.rightButton() == HIGH && on == true){ on = false; } if(on){ float inputX = CircuitPlayground.motionX(); Serial.println(CircuitPlayground.motionX()); float inputY = CircuitPlayground.motionY(); Serial.println(CircuitPlayground.motionY()); float x_mag = abs(inputX); float x_mouse = lerp(x_mag, minMotionx, maxMoition, 0.0, 12); float y_mag = abs(inputY); float y_mouse = lerp(y_mag, minMotionx, maxMoition, 0.0, 12); // Change the mouse direction based on the direction of the acceleration. if (inputX < 0) { x_mouse *= -1.0; } if (inputY < 0) { y_mouse *= -1.0; } //int mouseX = Mapping(inputX, 0); //Serial.println(inputX); //int mouseY = Mapping(inputY, 1); //Serial.println(inputY); Mouse.move((int)x_mouse, (int)y_mouse, 0); delay(10); if(CircuitPlayground.slideSwitch()){ Mouse.click(MOUSE_RIGHT); } } }

Team 13 - Prototype review of Balan Wonderworld hat controller


  1. For our Balan Wonderworld design, we wanted to create the inner component of the hat that would be the structural base. This is to test the main controls and understand what the inner structure needs before refinement. Tilting the hat moves the characters in 8 directions, shaking the hat swaps costumes, and pressing the button on top of the hat uses the costume's ability. With this inner hat design, and the outer hat design, we plan to have the inner structure sit on top of the head and connect to the outer hat using a 3D printed ball bearing mechanism so the hat can spin without interfering with the dead zone of the tilt. Questions: What would be the best solution to 3D printing the ball bearings model? Should we cut the model into pieces and model it so we can put it together as a puzzle? What would you recommend for cable management so the exiting cord doesn't interfere with the spinning outer hat?
  2. Outside of prototype

  3. Inside of showing circuitry prototype




Scaffolding: Prototype Review | Team 11

1.

For our prototype of the controller for “The Game of Life”, we are using the accelerometer to control the mouse movement which will help with navigating through menus. This mimics the tilting of a car to help with immersion. The prototype also uses the sound sensor that is built in the Circuit Playground Express so that when the player says “spin the wheel” it acts as a spacebar and which controls the spinning the wheel function in game. A knob at the top controls the left click which will select options in game. At the moment, we have a cardboard box to represent a car and a knob to represent as a person.


Questions:


What can be at the top to cover the knob that isn't a person and still fit the theme of the game?


How far should the controller lean to move the mouse?



2.




3.




4. Demo






Team 21 Prototype Review

Webfishing Hat: Prototype Review

 

To ground our controller in the wacky world of WEBFISHING, we chose to strap our hunk of hardware into a hat like one you can wear in game. As WEBFISHING is a silly game, using this controller is silly experience. Tilting your head to move your character may not be the most comfortable control scheme, but it certainly does make you feel ridiculous! To look left or right, you twist the rotary encoder. By scratching the top of your head (as if thinking), you block a light sensor that toggles the inventory menu open and the tilt controls to mouse movement so you may ponder your next choice of bait. Yelling may not be a common activity during real life fishing, but it is a common occurrence in WEBFISHING when you hook a high quality fish and need to spam click a few hundred times to reel it in. In reference to these moments, as well as for the silliness factor it provides, the left mouse button is tied to a microphone and is held as long as you are making loud noise.

Questions:
How do you feel about the sensitivity of the tilt controls?
Is the camera movement increment from the rotary encoder too much/too little?