A. Journey to the Earth's core_Yiyao Gao(Lea)_Inmi Lee
B.Context and Significance
Our project is a two-player cooperative expedition game. I coincidentally found that our project in Tale of the Visionaries also includes the interaction between people. Meanwhile, the two-player settings in the interactive game Hot Swap and Overcooked inspired me a lot. These projects influenced my definition of interaction. Interaction between a project and its users should involve emotional or intellectual decisions, responses, inputs, and outputs, fostering engagement and communication. Therefore, in our midterm project, we have two players control the horizontal and vertical motion of the detector respectively to enhance the level of interactivity.
Our project's originality is partly coming from its setting, taking place during a journey to the Earth's core, which is mysterious and attractive for most people. Our targeted audience is friends or couples, and also fiction lovers. We hope that the users' interactive experiences will change depending on the partners so they are willing to invite their friends to interact with the project to enjoy brand-new experiences. The project is intended to spark heated discussions or even minor conflicts.
C.Concept and Design
Our concept is to simulate the experience of driving the Earth detector. We want it to be super interactive and cooperative. We also hope that both players can have the authentic feeling of controlling the detector together. This concept led us to make several design decisions. *First, we designed two fancy controllers. These allow users to control the motion of the object by holding them and physically moving their body to tilt or rotate them, greatly enhancing their sense of participation. *Secondly, in order to make the driving experience more natural, we chose to embed accelerometers inside the controllers to give users a silky smooth control feeling. *Thirdly, for the main structure of the project, we chose to design the volcano tunnel as a cylinder with light cardboards(to minimize the friction). The cylinder can rotate 360 degrees and the speed can be adjusted by tilting the controller to enhance the authenticity of driving the detector forward and backward. *Fourthly, we want to increase the difficulty level to make users feel like they are actually navigating through the volcano tunnel. To this end, we designed a hollow in the middle of the cylinder and designed uneven passways. *Last but not least, to make the interactive experience diverse, we chose two types of servo motors(180 degree 360 degree). One accelerometer is in accordance with the degree of servo spins, which controls the altitude of the detector, while the other is aligned with the speed of rotation, which controls the cylinder's rotation speed(relatively, the speed of the detector).
We decided not to use the joysticker or potentiometer as the input. The reason is that the joysticker will make the control method too obvious, eliminating the fun of exploring the controllers. It is not as mysterious and natural as embedding the accelerometer in the two control handles. We didn't choose potentiometer because we want the way(direction) users control the two controllers can be different(to be more fun and eye-catching), while there is only one way people can use potentiometer(pushing).
D.Fabrication and Production
We divided our work into physical component building, coding and testing. I was responsible for coding and wiring and my partner was responsible for physical construction. We worked together on decorations.
Physical components building
We wanted the detector to be able to move both vertically and horizontally. We brainstormed and came up with various designs that were too difficult to realize. Finally, we had a flash of inspiration, which is to make the background a rotating cylinder to make detectors seem like moving forwards and backwards.
Cut the old version since it's not pretty
New version with a black inner layer
Schetch of the volcano structure
We learned how the accelerometers work and decided to use x-axis and y-axis for each of the controllers. I designed and made the controllers with embedded accelerometers and an oled on one of them.
Coding & Soldering(challenging)
At first, I successfully did the coding for one servo, neglecting which type of servo it was, and thought I could smoothly control the angle of its rotation. However, later on, I lost control of the servo. At this time, I tracked the Serial monitor carefully, read and try to understand the code of the servo. I attempted to make 360-degree rotation of the servo be consistent with the x-axis angle of the accelerometer, that is, where the x-axis is, the position of the servo will be. Since the function map() didn't work, I came up with three other ways. First, differentiate the angles and use if condition, which is basically dividing the degree into several groups and, for example, when the accelerometer is ranging from 0-20, the servo rotates to a specific angle. Second, I thought the problem might be due to the fact that the accelerometer's sensitivity is higher than the servo, therefore, the servo need time to react. So I tried to add delay()s. Thirdly, I tried to use the delta of "value" and "prevalue". Whenever the delta reaches a specific value, the servo rotates at a certain angle. However, I failed all these ways. I checked all the wiring and coding and still couldn't figure it out. Therefore, I reached out to TAs, and learned that for 360 servo, different from 180 servo, its servo.write(whatever value) actually refers to speed, not angle. I was suggested to change the servo into 180 servo, but I wanted the cylinder to be rotating smoothly ,ranging from 0-360 degrees. It was the time the user's advice helped. Kevin said he felt it would be more natural if he could tilt the controller to control the speed of the detector. I agreed. So, I started testing suitable spinning speed and finally produced the final coding. After learning this lesson, I became more familiar with servos and successfully finished the most important parts of our coding.
The second part of the coding is for Oled screen. To make the experience real and the appearance eye-catching and scientific, I did some adjustments to the sample code provided by Inmi and it worked well!
I worked on soldering to lengthen the wires so that users can use the controllers in a distance.
Testing accelerometer
Coding sketches
Testing
After the user testing, we adjusted the length of the string and changed the design of the y-axis controller since it was obviously misleading. We also added more decorations to give users a more immersive experience navigating in a volcano setting. Failure was that we didn't add the mechanism such as "if users accidentally hit the edges more than 3 times, they die".
Wiring&Final assembly
After my partner and I finished each component of the project. We assembled the project, connected the arduino and breadboard to the main structure. We used tape to tie wires up, adjusted the structure, and hid the arduino inside the box below the main structure.
E.Conclusions
Our project is a two-player cooperative game which offers users an immersive and smooth experience of controlling an Earth detector to navigate through dangerous volcano tunnels. This project mainly focuses on the interaction between two players as well as the interaction between players and project, which boosts in-person communications and brings excitement. Users of all ages enjoyed interacting with this and surprisingly, this project also serves as a way people make friends. If it is to be improved, I hope to add some reward and punishment mechanisms. All in all, I became more confident after trials and errors. In future projects, I will check the instructions of each component before coding.
F.Disassembly
We disassembled the project and returned these safely.
G. Appendix
Video
User testing
Final project
Processing Code
Inspiration: Hot swap; Overcooked
I want to extend my thanks to all the instructors and teaching assistants who provided invaluable assistance and guidance throughout our project, especially during moments when we faced difficulties.