Droppinz
Images
About the Game
This is an iOS and Android app Developed by me.
I along with a friend of mine who designed the app are the creators of Droppinz supported by Echelon Networks.
Droppinz is a very simple mobile and tablet app targeted at people aged between 5-25 years old.
We wanted to create a very simple app for people when for e.g. they have some spare time or are traveling
in tube or bus etc. to keep their fingers busy.
The general app was created with Unity 5.1.2 in a month (June 2015) and it wasn't that hard to create however, it took me another month to figure out
how to put my app on the App Store & Google Play Store, how to add adverts to my app and how to implement leaderboards and game center functionalities etc.
Personally speaking I found that creating an app is the easy bit. Putting it on the store was the hard bit for me and specially when this is my first app that I'm putting on the App Store.
Originally Droppinz was not the way it is today. During the development stages the app idea was to have an object at the top, which will keep moving
from left to right and a dropping target at the bottom, which will also be moving. Each time the use is successful in reaching the target,
its movement speed will increase and become harder. The user will have to time it correctly and could only tap ONCE.
When we played the game it didn't feel that we had hit the mark and something didn't feel right. It was good but it didn't keep us going or didn't
have the feeling that it was addicting enough. We had to go back and rethink our idea.
So we decided to remove the movement of the character and the target and add distracting rectangular bricks, which the user will have to avoid
when dropping in the drop zone. As the game became harder we decided to give MULTIPLE tapping to jump so that the user will have more control
over the character. We decided to keep the difficulty level quite hard and static because we wanted to keep the game extremely simple and didn't
want to introduce any levels.
When we were making the app we wanted to add themes so that if people don't like our main theme (Yellow and White),
we gave them 2 more options (Black and White & Black and Yellow). There is a possibility that the user may not like all 3 of them but we also had
to keep the app size in mind so it we were unable to offer more colors plus we just wanted to be extremely simply like I said earlier and it wasn't
a big game where we would offer too many choices. We also added Music and Sound Effects, which the user could choose to deactivate at anytime.
There were 3 things that the app needed to save even after the user quit the app. Those three things were user's high score, choice of theme and
choice of whether the user enabled or disabled the app sound. Unity's Player Prefs achieved this. The if statement of checking which theme is enabled
was placed in the update function as the user could change the theme at any point in the game.
I used the same process to save, enable and disable user's preference of sound even after the user had quit the app however, there was one problem.
For the first time the app was loaded the button would have no preference selected as the user would have not stated his/her preference if he/she
would have opened the app for the first time. So the user would have had to press the button twice. My if statement said the user pressed the button
and if selected preference 1 then change the preference to 2 but if no preference was selected then the system would get confused. So I added an else
statement saying that if no preference was selected the choose preference 2 as the default option was to choose preference 1.
In the game I had to make the character jump so every time the user would tap the character would jump. When coding this I realized that when the
character is falling, it has an X amount of downward force which keeps increasing as the character keeps on falling due to gravity. Every time the
character would jump it would have an upward force of Y amount. If X force were too high then you would have to jump (tap) multiple times just to
neutralise the downward force. So I decided to give a max downward force to the falling character so the force would not exceed that amount and whenever
the user would tap, it will remove all the downward force for the character. So at that point in time the character has no force at all and it just stops
there. After that I also added some upward force to the character so while the character is falling it would jump where it is tapped and it will not jump
any quicker or slower as the downward force was removed.
I had to add an invisible barrier at the top of the screen so the character would not fly off the screen.
For the rectangular bricks that the user has to avoid are created at random. The user CANNOT anticipate the next speed of the brick. The way theses
bricks are being spawned are at random using Random.Range. In every fixed X seconds a brick is being spawned in the same position but it has a random
speed set. Either the brick will move at speed Y or speed Z, which is decided by the system randomly hence it is not possible to find a pattern.
However if the user falls into the Drop Zone by tapping just once, its pure luck. The bricks are moving in one direction using Transform.Translate and
after 5 seconds the brick is destroyed, as we don't want the app to eat up the entire device RAM.
After Droppinz was created we wanted to add adverts and game center compatibility to the app, which was a challenge. To add adverts the company identifier
had to be signed up to multiple different accounts and a developer account which took a while and patience and figuring out the correct route.
For Android you have to import Google Ads plugin and Google Play Store plugin along with the Android SDK and JDK that comes with Android Studio.
Scripting the advert was actually quite simple after days of research and tutorials. Most of the tutorial's I was looking at were old and outdated.
I realized even the tutorials that were over 8 months old were non reliable. I had to try and test it myself. After I figured out how simple it was
I felt quite silly. This is all you need to add Google add banner to the top of your app. The Code for adding iAD is also very simple.
On iOS it was a lot easier to ad adverts and Game Center facilities as Apple does not require any external plugins. For Game Center you first needs to
authenticate/ sign user in and then that's it. Just call a function to add score to the leaderboard. I think adding ads and game center facilities to
your app is simple, the only difficult bit was to search online though many tutorials as to how to do it.
To get a build file my personally opinion is that it is a lot simpler to upload an app on the Google Play Store than iOS App Store. With Android you
just upload the build file and your done however with iOS, first you optimize it in Unity and then you get an Xcode file, then in Xcode you have to
authenticate all user's certificate which you need to get form apple developer account, then optimize all settings in Xcode and the you have to build
for Archiving. You also need to make sure that the developer account and Xcode is connected with your iTunes Connect account with the valid
developer/destitution certificate. So you don't get a build file as such for iOS as it gets automatically uploaded to your developer account.
My app showed many errors during the publishing process and it was frustrating.
Some of the errors were very tiny but it took me a while to figure them out. For e.g. while archiving an error kept popping up saying my app was not
compatible with 64bit and is only compatible with 32bit and Xcode showed me how to fix that error which was helpful but even after I changed it,
it still gave me that error. I changed the app architecture to standard to support both 32 and 64 bit but the error won't go. It turns out I had to
change 1 tiny setting in Unity. I had to switch my scripting backend setting from Mono2x to IL2CPP, which supports 64bit. It was just a drop down setting
which barley takes a second to change but the fact that is frustrating is that you have to redo the exporting process again and again to fix tiny issues in my app.
I feel that I have learnt quite a lot about app development and publishing. Yes it was a little frustrating and sometimes demotivating but I fell
that when your app gets approved and its on the App Store and people are downloading it, it's all worth it.