Prologue

In early 2015 I decided to develop my first game. I chose Unity3D engine without hesitation, as I have had experience in C # and JavaScript, and friends who can help. I remember a mini-game that I played when I was a child and decided to do something similar. So I installed Unity and set a goal to make a running prototype for a couple of weeks while studying engine.

I began to develop this idea in my spare time. After a week I had a working prototype, and one and a half month later I already had a playable level with all the prescribed logic. I was satisfied with this and stopped the game developent for some time. In June I resumed the development stage with the thought that I would need a maximum of a month to finish it. Gosh, how I was wrong back then…


And so, what were the problems I faced during the creation of my first game on Unity3D?

– Designer

– Plugins

 

– Google Play

– App Store

 

Designer

The first major problem I faced was the lack of a designer. And if at the early stages, when I was just creating a game prototype, it was not so important, then the closer to the finish the more uncomfortable was my state. I started looking for a designer after the game prototype was developed and my search was successfull. I found a girl who did not mind helping with the drawings for the game. We met and stipulated things that need to be done, and she was gone. Some time later she appeared, promised to do everything and then disappeared again. So about a month later I finally realized that I won’t get my designs done. As a result I had to draw the entire UI of the game all by myself and it took me a lot of time. Soon one good friend of mine agreed to help, and he said that it might take about two weeks. I had no choice but to believe him. By the end of the second week he happily informed me that almost everything is done, and I took a look at his drawings. There was a half of what I needed, and most of the designs needed to be redone. It took him another two weeks — as a result there were a total of 10 simple sprites. So I had to arm with Photoshop and redo a few and draw all the other designs by myself.

What can I say in conclusion to this point: always negotiate with a designer in advance, if you don’t know how to draw. Look for a responsible person who will do everything in time, otherwise you will have a lot of issues later. These issues in the future may the reason of the game release delay. The situation will look like this: everything from a software side is ready, but the designs are not complete yet.

 

Plugins

When the game was playable, I decided to connect third-party plug-ins. Now it has three plugins:

  • Google Play Game Services (GPGS);
  • Soomla;
  • Appodeal.

 

Google Play Game Services

Plugin from Google has been selected to add achievements and leaderboards to the game, as it was the only one free among all of the variants that I found, also it is easy to use and is supported both by Android and iOS. At the time of its adding it seemed to me as an ideal solution. After adding a plugin to the project a new problem had appeared — it was Google Play developer account. Without it you won’t have achievements IDs and leaderboards, and you won’t be able to test these functions in your game. But when you have an access to them there shouldn’t be any problems with setup. You can find a lot of information on this subject on the Internet. Unfortunately, I couldn’t setup GPGS plugin for iOS and all my efforts led to errors at build processing, and I decided to refuse using GPGS  in iOS build. The good thing that this decision had no influence as Game Center copes with the implementation of the achievements and leaderboards, and it does not require any third-party plugins — all you need is just to use Social class built in Unity.

 

Soomla

Soomla plugin consists of three separate libraries:

  • Soomla Core — the main library, which contains the common functions and tools necessary for plugin to run;
  • Soomla Profile — a library for integration with social networks (Facebook, Twitter, Google+);
  • Soomla Store — library for purchases system implemention.

Originally it was planned to use it as a plugin for interaction with social networks. But later it was decided to add Soomla Store. Again, the main reasons for choosing this plugin were that it’s free of charge, it’s easy to use, it has good documentation on the developers site and its versatility: not only the facts that it works as with Android so with iOS, but that it adds two essential functions — social  network integration and in-app purchases.

 

Soomla Profile

I needed to add the feature to share records in the social networks, and plugin performs these functions with no problems after being setup in project. But in order to set it up, you will have to sweat. For connection with Twitter it’s enough to create the linked application by logging in your account and entering received Soomla Consumer and Key into Soomla settings in Unity. The library is built-in into the Twitter plugin. The way of plugin implementation is different when it comes to Facebook. You need to create the associated application in the developer console Facebook, add to it the information for each platform where the application is going to be used. Then you add Facebook plugin into the project and enter application ID received from Facebook in its settings. Also in order to get development and release key hashes, which are necessary for Android, you need the OpenSSL package. I had an issue getting the keys in Unity, but the application settings page describes how to get them through the console.

If you did everything correctly, the plugin should work. Soomla provides a large number of event handlers, which I advise you to use a lot.

 

Soomla Store

I had to add just one purchase option in my game — the “No Ads” option, so I wasn’t able to check out all of the potential that this library can offer, but it contains everything you may need for in-app purchases implementation. Here I can only advise not to forget to check your in-app purchases before you release your game in the store. Android provides an opportunity to purchase the test product, which has a test ID, while Apple allows you to login via Sandbox test account and make a test purchase of your product. But here I also had some issues — my first attempt to release the game in the App Store failed. As it turned out, Soomla plugin for Android automatically restores Non-Consumable purchase, if you have uninstalled the application, and then installed it again, while Apple requires the application to have a special “Restore in-app purchases” button. Now the game is waiting in a queue for the second review, and I can only hope that everything goes well.

 

Appodeal

Initially I was going to use Chartboost plugin in my game — I has built it into a project and it worked as it should. But soon I learned of the existence of the Appodeal plugin, which has a lot of ad networks in it including Chartboost. And I decided to try it. I was so “lucky” — when I insatlled it there was a period of its updating, so during next two weeks I could not check its work, because I could not link it with my game. But when the plugin has been updated, it was not difficult to customize it to your needs and use it in the project. The only inconvenience caused by the upgrade was that I had to create AdMob account and link it with Appodeal, since these advertising platforms work in close conjunction. And to create AdMob account, you must create AdWords and AdSense accounts, and link them with AdMob. Be prepared to spend some time on it, as  you will have to deal with registration in these services.

 

Issues

Quite a common problem when using multiple plugins is duplicate libraries. Since some plugins require the presence of a certain library, it can be so that the same library may be added to the project from two plugins. This causes “Unable to convert classes to dex format” error. To correct this error, you will have to search for duplicates through the entire project. I advise you to check what you add to the project when you import a plugin. This will help you to avoid unnecessary duplication.

Another problem is the unnecessary files after plugin update. For example, when you upgrade the plugin its structure may change — some classes will replace the others or they will be located elsewhere. Unnecessary files will cause conflicts, errors and unnecessary headache. The solution is simple — completely remove the old plugin files, and only then to install a new one.

The problem that really bothers me is plugins update. So after updating GPGS plugin my game stopped runing no matter what I did in order to fix it— it crashed at startup, because when it starts the plugin initialization took place. I spent a day on to fix it and I couldn’t succeed, and when I decided to roll back to an older version of the plugin, it began crashing after closing leaderboards. And though I found people that faced the same problem, none of the proposed methods didn’t help me to solve the problem. I had to roll back to an older version of the build; bitter mistakes of the past taught to make a backup before each major change in a project. Attempts to update the Soomla brought new new issues — new problems in the project has appeared. Again, I had to roll back and use an older version of the plugin. Situation with Appodeal upgrade was the same — they have added new libraries and “Dex 65536” error occurred.

Here is a general kind of advice to you: if the plugin works, you’re happy with its functionality and it is not a mandatory update associated with changes in API — do not update it. You will get more problems than benefits. Now my game runs with no problems — everything works fine with the old GPGS and Soomla plugins.

What you really need to be update constantly is Android SDK. Here I can only advise you to open the SDK Manager and check for new updates as often as possible. Without it a lot of things may not work so it must be done manually. During the time of my game development my game crashed twice because there were older versions of libraries, such as Google Play Services. And every time I needed some time to identify the cause of the error.

In general Google has always helped me in the search for problems solutions. Most of the problems you may face, other people has already had faced before you. It’s important to be patient and look for the right answer. Do not give up and you’ll succeed. And who said that everything would be easy?

This is not all the errors I faced while additing plugins to my game, but these bugs stressed me the most. I hope that my tips will help you to avoid or at least simplify the search of the issue cause.

 

Google Play

In order to be able to release the game on Google Play store, you’ll need to create a Google Play Developer account and pay a one-time fee of $25. Immediately after that, you get an access to all the features of the developers console. But in order to get money from Google, you’ll need to link your bank account. This is the first problem that I encountered while working with Google Play, as you need card with IBAN number for the transfer, but not every bank provide this service. And there is no other way to withdraw money in Ukraine. Moreover, neither the bank nor the support of Google have not been able to clearly answer what kind of card you need to open. I had to figure it out by myself.

Creating associated application for GPGS should not cause any difficulties — everything is intuitively understandable. Create achievement / leaderboard, set it up, get the ID and use it in your project. After successful implementation into the project, you can test the achievements / leaderboard, using your test account to login, while not forgetting to add that account in the list of test accounts in Google Play Developer Console.

Despite the confusion while creating an account, I enjoyed more working with Google Play rather than with App Store. Games on Google Play are released within an hour or two, so you can quickly and effectively make changes to the game.

 

App Store

I will begin with a comparison with Google Play. Price per developer account is several times higher — $100 versus $25, and it is only an access for a year. Then you must again pay $100. Expect to get your game reviewed in about a week and then your game may be rejected. And even if you correct the issues, which caused your game rejection, and was submit back for the second review, there is no guarantees that your game won’t be rejected for some other reasons. Apple has very strict rules for publishing applications in their store. So publishing game in App Store may take some time (a few weeks or even more). All you do is to hope and wait…

After trouble with Google Play, creating of Apple developer account has been easier. But problems appeared later. The first and the most obvious problem was the inability to create a binary file without MacBook. But I was lucky to have MacBook at my office.

The second issue: having assembled project in Unity, it should be open in XCode using MacBook, and a binary file has to be set up and created also only using MacBook. I originally used Windows 7, and when a time to rewrite the game under iOS has come, I just assembled the project and moved it to MacBook to create a binary file. After a long process of getting rid of minor bugs and analysis of how everything is set up in Mac, I faced a problem while creating the binary. Digging the Internet I found out that it is necessary to assemble a project in Unity for iOS also only using Mac. I had to rebuild the project, set it up in XCode, and at last the error was gone.

If you decide to compile Unity project using Windows, be sure to check that you have Python and iTunes installed on your computer and all the necessary paths of PATH variable are specified.

I want to highlight as a separate point the creation of a Certificate and a Profile. Without them you can’t publish your app in App Store. Also, in order to test the Game Center and in-app purchases, you have to create a separate profile, as well as special tester Apple ID for the Sandbox. I didn’t fully understand how to use it and that cost me two dollars deducted from my card. Trifle, but unpleasantly. As it turned out, it is necessary to logout from your account on the test device, open the game and login to the test account, that has been previously added to the Sandbox. Then we can test the above mentioned services.

Creating binary file of the game for iOS is more time-consuming and requires more effort than creating apk for Android, but you can get an access to a large audience of Apple products users. If you are ready to spend your time and nerves on it, then you should try. Just do it! Go to the end, don’t stop on a halfway, don’t be afraid of difficulties and mistakes, because everybody face them, and often they can be resolved with a little effort.


Epilogue

In conclusion I would like to say that creating a game is a unique experience. I’ve always wanted to work with something like this. And while I was working on the creation of the game I was interested in the whole process. Of course, finding and fixing bugs left some negative impact, but it is an essential part of creating something new. Don’t be afraid of doing something different, whether it is an application or a game. Even if it didn’t work – you will get the experience. And maybe next time you will do something better, more interesting and more qualitative. Rome wasn’t built in a day. If you won’t try – you won’t know if it is yours or not. I wish you luck in all your projects, commercial success and conquest of the tops! Thank you for your time. Feel free to ask any questions!

October 7, 2015
Unity 3D Guide

Unity3D Guide: How To Develop Game Project Using Unity3D With No Swearing

Prologue In early 2015 I decided to develop my first game. I chose Unity3D engine without hesitation, as I have had experience in C # and […]
October 2, 2015
Chicken Madness

Chicken Madness: Catching Eggs

It doesn’t important how old we are, because inside all of us a kid lives. And what can be better than things, that remind us about […]