Inspiration
I was inspired by the lack of mathematics-based games that were fun. Before developing this game, I'd browsed the App Store for educational games that weren't only adding and multiplying problems with a fancy GUI, but games that could engage an audience.
What it does
Dash through colorful levels and bounce off numbered walls in ORB. Exercise strategy and fast mental arithmetic skills to progress and continuously beat levels to increase your high streak. Intuitively tilt your device to guide the ORB through the infinite amount of levels. Don't fly off the field, get caught in obstacles, or miss the goal! As part of the difficulty curve, the game gets harder as time goes by - slowly moving into new obstacles and adding multiplication, division, and subtraction obstacles over long periods of time. To try to engage a younger audience, I made the game start with simple addition. Of course, to keep the game entertaining, the task of controlling the ball - which, in itself, develops visual motor co-ordination skills - still makes the game addicting.
How I built it
ORB was made using the Unity3D engine along with its C# libraries, and some custom Java frameworks I've made and exported to DLLs with IKVMC. As I'm familiar with Java, most of the statistics controllers and background game management controls were made in Java. However, to deal with input and GUI, I used Unity's built-in libraries. Personally, art is not my forte, hence the minimalistic and colorful design of the game. Still, I decided to go with Cinema4D to mock-up and make the 3D models for the cubes of various sizes.
Challenges I ran into
ORB was not my first app, but it was my first game and the first experience that I have really had using the Unity3D game engine. Nevertheless, I had some challenges in creating the algorithm and figuring out specific gameplay elements. In terms of gameplay, I had designed the game with Darts in mind. This game, which you have probably heard of, involves the player throwing a set of arrows, called 'darts,' onto a board. Certain areas are larger, and others are smaller. I decided to take inspiration from this game and create the numbered walls of different sizes so, for example, the wall which increases your score to 5, will be smaller, and thus harder to get to. Algorithm-wise, this was hard for me to create. The levels are all 'procedurally,' generated which calculates the difficulty that a level should be (by the score but the hidden time it takes to complete past levels); it's almost like a piecewise function which operates as either an exponential, logarithmic, or sigmoidal function. However, with the difficulty being calculated and with different walls put together, they wouldn't fit together like bricks.
Accomplishments that I'm proud of
Overall, I’m proud of completing and creating my first 3D game. The entire experience of creating ORB was extremely enjoyable and was a really good project to begin and get used to the Unity3D workflow. I am really proud of this fact and I believe that I am now familiar with this workflow and can execute upon what was before, just a game idea, in multiple platforms. Additionally, I am pleased with being able to answer questions actively on the Unity3D forums and IRC channels. I'm also proud of getting a Twitch live streamer, GameDevCompany, to test out ORB on stream in front of an audience of about seventy people.
What I learned
I’ve learned a lot through simply experimenting and reading through Unity’s documentation. Generally speaking, I learned a lot about the development of gameplay mechanics and how to actually execute them using Unity, C#, and Java. The use of Java in itself was a completely new learning experience I’ve known Java for five years now, but I am completely new to the fact that you can convert Java source code and use IKVMC to convert it into a DLL, and make it run like a fully fledged library in Unity. Additionally, through ORB, I learned concepts of the functional programming paradigm, a particular type of declarative programming which focuses on using short, maintainable statements like algebraic expressions or functions. I used Java’s lambdas and C#’s LINQ to exercise some fundamental functional concepts (that are part of these mainly OOP languages), and also utilized the ideas of filters, sinks, and maps.
What's next for ORB
The next release of ORB will involve an easier level system and also a store, which has already been completed. The store has all sorts of add-ons, such as the function of shapeshifting so the ORB can fit through crevices in between rocks. To purchase items in this store, there is a collection system and a streak system. Once you've tested it, you'll realise that I obviously plan to make the game easier - the difficulty curve is not perfect as yet! The latest build of the game (when uploaded to the App Store), will also have a checkpoint/milestone system. If you pass a streak of five (or any other multiple of five), you will always start at that checkpoint.


Log in or sign up for Devpost to join the conversation.