Carbon Unifying Build Emulator
This project was created in collaboration with 3 other students. The game was created using Unity and took place over the span of 2 months. The goal in C.U.B.E. is to complete levels and develop your planet along the way. In each level, you need to collect a specified amount of various resources. You can only catch resources that are of the same type, or color, as the side of the cube planet facing it. Players can control the on screen cube by manipulating and rotating a physical cube shaped controller.
Our design rationale for the size and shape of the controller were decided based on the feedback from various users testing objects of different sizes and shapes. Most users responded positively to cube shaped objects and "medium-sized" objects that could easily be held with one or two hands.
We used an Arduino 101 board for the interior of the controller since it had wireless capabilities with an on-board gyroscope. We wanted a wireless controller so players would not feel that their movements were restricted by a cord.
The "planet" is a cube shape due to the shape of the controller. By having the same shape for the controller and on-screen object, player's were able to map the movements of the controller to the representation on the screen.
The beginning of this project provided a steep learning curve for every group member. Prior to this project, I did not know Unity or C# too well, so I had to gain familiarity with how Unity worked along with adapting to C#. The other 3 group members also did not have experience in programming outside of Javascript. They were also unfamiliar with object-oriented programming (OOP) principles, so I had to help them learn C#, programming conventions, and OOP.
Another one of the challenges faced during this project was wireless connection using the Arduino 101 board. While we managed to establish wireless connection between the game and controller, the controller could not send over all of the gyroscopic information required for rotating the on screen cube, so we had to use a cord in order to keep the game playable.
Another challenge we faced was dealing with the gyroscopic drift of the board. While we did not manage to solve the problem, we managed to mitigate the drift by re-calibrating in between levels.