Learning Module #1: Soldering
Max began with the basics in Soldering with Jonathan K. They began the project by practicing with example pads and jumper wires, but soon after they moved on to working with other parts such as resistors and capacitors. Once they attached the switch and LEDs, they were able to successfully turn it on and get the LEDs to blink.
Learning Module #2 : Arduino Basics
Max, along with Ryan C, learned the basics of using an Arduino. They started with controlling LEDs, and then moved on to controlling a small servo motor. Finally, they combined an ultrasonic sensor with the servo motor to get the motor to move based on an object's distance from the sensor.
Ultrasonic Sensor with Arduino and Servo Motor
Learning Module #3 : MIT App Inventor
Working with Ryan D, Max learned the basics with MIT App Inventor. Max and Ryan started with a little troubleshooting, but once they had sorted it out they went on to making some small programs. First, they made a game where two players competed to tap faster than the other. After that, they worked on something a little more complex, a four function calculator. They successfully got both programs to work.
Learning Module #4 : Bluetooth and LED Strips
For his next module, Max decided with Yuliana P that they would work with an LED strip. Originally, they wanted to create ambient lighting by reading the screen of a monitor and matching the colors and positions on the back. However, they quickly learned that this project would be more about combining preset components than making their own, so they changed their focus to making a program that could control an LED light strip with an app using bluetooth and Arduino. Yuliana was able to get the light strip working, and Max was able to get the app he made to work with the Arduino using a basic LED setup. Â
Learning Module #5: Unity 2DÂ
For module 5, Max and Jackson paired up to learn the fundamentals of Unity 2D. They decided that Max would focus on building the game mechanics while Jackson learned about using animations and, towards the end, making a controller compatible as well. Max began by working on code for a player controller, and Jackson quickly picked up how to use animations. Further into the module, Max created code to make the hazards move and began working on the layout. Jackson, on the other hand, attempted to figure out pathfinding, but the code was not compatible with the version of Unity that they had. In the final stages of the module, Max completed the layout (seen on the top left), and then Jackson added the animations to the player character. The two had intended to add more than the one, but they did not end up having enough time. Finally, they implemented the use of the controller. (Bottom left) Overall, the two had a great time with this module and found it to be very valuable.
Learning Module #6: Arduino Part 2
For this module, Max partnered again with Jonathan K to learn about some more advanced components that could be used with Arduino. At least, this was their core idea, but they quickly set some more tangible goals. First, they wanted to learn to use the LCD screen and joystick module, and they decided there was no better way to do this than by making a game with the two parts. They started with just getting the character to move on the screen, which can be seen in the center above, and from there started to create obstacle movement as well. The first and final complete versions of the game can be seen on the left to right.
Having finished the project so early, Max and Jonathan needed a second idea. Unfortunately, at this point Jonathan got sick and had to stay home, so they had to work separately. Max chose to work with the TFT touchscreen shield for Arduino, which ended up being much more difficult than making the game with Jonathan. He had a lot of trouble getting it to work, so he tried many different solutions, which included tweaking example code, adjusting the libraries he had, downloading new ones, and even trying different hardware. In the end, he simply had to adjust the code differently than he had originally tried. Overall, it was a real roller coaster of a module, but it was one of his best yet. (Different stages of the screen are arranged chronologically from left to right below.)
Learning Module #7 : Ultrasonic Car
For this project, Max and Aidan decided to work together to make a typical RC car into a self-driving machine using Arduino and ultrasonic sensors. At least, this was their initial goal, but things quickly went off track. Worried they would not be able to get the car working properly with just the ultrasonic sensors, they spent a lot of time looking into alternatives, only to come up with nothing. They also had to decide how to work the motors, which they ended up using an H-bridge for instead of the commonly used motor shield. Once they sorted out the hardware, which admittedly took too long, they began working on the car. As Aidan worked on a 3D printed harness for the components, Max figured out how to get 3 ultrasonic sensors to work at once using two Arduinos in tandem. Unfortunately, the 3D printer did not work for Aidan, and even though they were able to get the sensors and H-bridge working individually, the two could not get the car to follow someone like they had hoped. Although they didn't come up with much of a finished product, Max and Aidan still found this module to be valuable for future projects with sensors and motors.
Learning Module #8: AR Platformer
Max and Evan Rodriguez decided that, for this module, they would make a game in augmented reality using Vuforia with Unity 3D. They immediately ran into download issues, which they eventually resolved, but they were left with only one compatible device. In order to adapt to this problem, they decided to take different focuses for this module. While Evan learned the essentials of Vuforia, Max learned about 3D game development in Unity. Max finished his initial research right around the same time as Evan, so the timing worked out for them to reconnect their paths. Unfortunately, when Max tried to take what he learned and apply it to a game in Vuforia, he quickly found that virtually none of it was applicable. This required the two of them to think on their feet and come up with outside of the box solutions. They tried many methods, and eventually got the ground working, but they didn't get obstacles functioning correctly until the very last day of the module. They were more than relieved, as they had lost almost all hope of getting the game to work. With the little time they had left, they focused on adding some polish to the game to make it look nicer. Overall, the pair is thrilled with their final product. Final Writeup Presentation
Stages of Development
Max followed a tutorial to make a working player character, complete with animations. This is the completed result of that tutorial.
It wasn't easy, but Evan and Max got the two halves of their product working as a whole. This video shows the final version of their project.
After tackling some issues with getting Vuforia to work, Evan set up the first image target. This video showcases that first image target.
Max's Trials at Home
Since Vuforia did not always register a flat target as 100% level, Max designed gravity that would allow the player to always move 'down' with respect to the ground's orientation.
Realizing his last method of "diagonal gravity" had some flaws, max redesigned it so it could work with platforms at different elevations. Although it worked, they did not use it in the final build of the game.
Since collision with hazards also had issues when applied in Vuforia, Max tested this at home too. Shown here is one of many working methods that, in theory, should have worked in Vuforia.
Vuforia makes objects very small when it actually runs. The two figured this was the problem, but shown here is Max debunking this theory. Even at 1/1000 scale, everything works just fine.Â
Learning Module #9: Online Multiplayer
For his final module, Max had a few ideas, but one in particular stood out to Alex Leahy. Max wanted to make a simple website where users interact, and Alex liked this idea, wanting to take it a step further and make a full-on game. Although he had never done anything with web design, Max liked the idea and agreed. The first obstacle they had to clear was actually allowing multiplayer interaction, which took up a good part of the module. To do this, they had to do a lot of research and consult with James Goode. After many unsuccessful trials, Alex and Max were able to get the basics of server-client communication down, allowing multiple players to each move around their own square on the screen, however, the way they did this was very inefficient and quickly overloaded the server. After adjusting this (with more help from James), they were able to work on the more fun parts of the module. The first game feature they added was collectible coins that spawned randomly across the screen, and after that, they added different characters that the player could switch between. At this point, things were running pretty smoothly, but then they hit their next major roadblock. Creating an attack for players proved to be more difficult than either of them expected, so they split up to try two different methods, cannonballs and lasers. Eventually, they got cannonballs working, completing with the game. All in all, it was a great final module.