There is only one goal: tap you way down to 000000. But it is going to be fun and... almost therapeutic.
Each tap will be accompanied by cool animations, and with sound that will be unlocked as you progress. And yes, there is a kill screen if you reach the goal! I promise. Perfect for times when you are waiting or just want to do something without thinking. Your progress with be automatically saved when you leave the app (unless you reset it on purpose). And if you ever wonder how much time you have spent and the taps you have made, there is a short summary for that purpose. |
The inspiration of this game comes from my appreciation of the "VisitorTT2" font created by Brian Kent. It's very game-y and block-y and feels kind of retro. I decided to make the characters into 3D models that I can use for other purposes, and it occurred to me that I could use them as the main game element.
The original idea was very simple, just a counter that swaps out old digits. But then I thought it would be nice to have some fun with the characters and make the "counting" process a bit more enjoyable. So one day I was talking to a friend and the idea of counting down became a good direction. To make the game last longer I decided to make the countdown begin from 999999, which eventually helped the formation of the title: Mega Tap, which translates to 10^6. Next I added a few more screens to make the game more engaging. The "Statistics" screen is to report the progress of the player, which in turn requires some saving and loading of the game status. The "Modifications" screen motives the player to keep going as they will be unlocking new sound if they reach a new significant figure. There are other screens that I added, you can check them out when you get the game.
Now the technical hurdles (means these will sound technical). Making the app completely in Unity solves a lot of problems like platform dependencies and resource management. But sometimes it works like a blackbox. A problem that I had early on was the graphics rendering didn't behave the way I wanted. The camera was at an angle and the edge floor that I used to catch the digits was rendered with a reflective glare. An unlit shader will solve this problem but it will not render the shadows. I ended up finding a custom shader that did both (thank you Internet and Stackoverflow).
Another problem was the animations. I know for a fact that Unity has Animators for exactly that. But I was not familiar with it and all I needed was some smooth transitioning. For the simplest tasks most people would use a lerp inside the Update function. But it's very hard to control the duration and timing. Eventually I learned about using StartCoroutine and IEnumerator functions to achieve more sophisticated animations that I had more control of.
Yet another problem was since all the digits that got bounced off were handled by a physics engine, and it's taxing the processor quite intensively. My testing device (an iPod Touch 5th Gen) was almost non-responsive (eventually crashed) when around 130 digits were created. It took me a while to come up with something that periodically cleared out older digits and at the same time went with the theme of the game.
The part that took me the longest time was to make the app return to its previous state if the player switches to another app or quits. The solution to this is the PlayerPrefs along with OnApplicationFocus, Start, and Awake. However, to make the experience seamless it took me a while to figure out which function actually gets called and in what order. Having multiple screens makes it harder because some of them relies on the availability of other screens, and one has to make sure there are no "deadlocks". Eventually I used a GameMaster class that saves and loads everything, which then delegates other classes to update their respective content.
There are a few non-technical cool things that I learned when making this app.
I really like the color scheme of this game and the transitions between them. I didn't come up with the colors myself, but the Internet has a vast amount of nice color schemes. I strongly recommend using them. They really enhance the experience. The transitions are achieved by "lerping" the color and/or the camera angle.
I have attended a few game development talks and the term "juiciness" is often brought up. Essentially it's a quality of a game that makes it more fun and more engaging. It has very little to do with the main game mechanics or the core storyline, but how things are being presented. For example, muzzle flare, screen shakes, overshoot animations... etc. Those little icing will in fact make your game better. I've added some elements in my game to do just that. For example, the quick inflate-deflate animation of a digit before it gets bounced out, and the accompanying fun sound effect.
The original idea was very simple, just a counter that swaps out old digits. But then I thought it would be nice to have some fun with the characters and make the "counting" process a bit more enjoyable. So one day I was talking to a friend and the idea of counting down became a good direction. To make the game last longer I decided to make the countdown begin from 999999, which eventually helped the formation of the title: Mega Tap, which translates to 10^6. Next I added a few more screens to make the game more engaging. The "Statistics" screen is to report the progress of the player, which in turn requires some saving and loading of the game status. The "Modifications" screen motives the player to keep going as they will be unlocking new sound if they reach a new significant figure. There are other screens that I added, you can check them out when you get the game.
Now the technical hurdles (means these will sound technical). Making the app completely in Unity solves a lot of problems like platform dependencies and resource management. But sometimes it works like a blackbox. A problem that I had early on was the graphics rendering didn't behave the way I wanted. The camera was at an angle and the edge floor that I used to catch the digits was rendered with a reflective glare. An unlit shader will solve this problem but it will not render the shadows. I ended up finding a custom shader that did both (thank you Internet and Stackoverflow).
Another problem was the animations. I know for a fact that Unity has Animators for exactly that. But I was not familiar with it and all I needed was some smooth transitioning. For the simplest tasks most people would use a lerp inside the Update function. But it's very hard to control the duration and timing. Eventually I learned about using StartCoroutine and IEnumerator functions to achieve more sophisticated animations that I had more control of.
Yet another problem was since all the digits that got bounced off were handled by a physics engine, and it's taxing the processor quite intensively. My testing device (an iPod Touch 5th Gen) was almost non-responsive (eventually crashed) when around 130 digits were created. It took me a while to come up with something that periodically cleared out older digits and at the same time went with the theme of the game.
The part that took me the longest time was to make the app return to its previous state if the player switches to another app or quits. The solution to this is the PlayerPrefs along with OnApplicationFocus, Start, and Awake. However, to make the experience seamless it took me a while to figure out which function actually gets called and in what order. Having multiple screens makes it harder because some of them relies on the availability of other screens, and one has to make sure there are no "deadlocks". Eventually I used a GameMaster class that saves and loads everything, which then delegates other classes to update their respective content.
There are a few non-technical cool things that I learned when making this app.
I really like the color scheme of this game and the transitions between them. I didn't come up with the colors myself, but the Internet has a vast amount of nice color schemes. I strongly recommend using them. They really enhance the experience. The transitions are achieved by "lerping" the color and/or the camera angle.
I have attended a few game development talks and the term "juiciness" is often brought up. Essentially it's a quality of a game that makes it more fun and more engaging. It has very little to do with the main game mechanics or the core storyline, but how things are being presented. For example, muzzle flare, screen shakes, overshoot animations... etc. Those little icing will in fact make your game better. I've added some elements in my game to do just that. For example, the quick inflate-deflate animation of a digit before it gets bounced out, and the accompanying fun sound effect.