Jump to content
  • Advertisement
Sign in to follow this  
  • entries
    5
  • comments
    14
  • views
    1169

About this blog

While creating my first game I've gained some experience that I want to share with starting game developers.

Entries in this blog

 

Pay to promote — advertising with Google Ads

Originally posted on Medium In April 2018 I received a gift from Google Ads (aka AdWords) — 2000 rubles (~30$) to spend for my Totem Spirits game advertising. In this article I want to share some statistics and overall impressions of this platform. First of all let me tell you that 30$ for advertising is not really ‘a lot of money’ so I didn’t expect it to give the game any significant boost on the market. But the end result was slightly better than I anticipated. While configuring an ad camping I set the budget to ~0.8$\day expecting it to last one and a half months. Actual campaign was active for almost 4 months. As targeting countries I chose the top 5 countries downloading the game: India, Ukraine, Russia, US and Germany. The interface of the Google Ads platform is rather intuitive. I wrote rather since it takes some time to find where to press and what is behind all of those statistics and rates. But I can see its improvement over the old AdWords version. Now it’s time to dive deeper into statistics and numbers. At the next graph we can see the overview of the whole campaign: One point represents stats for the whole week There are two impressions\clicks peaks: week of April 9 and May 7 (I have no clue why). Overall, the campaign is rather linear with ~2500 impressions\~70 clicks per week starting from the peak of May 7 slowly increasing to ~38000 impressions\~500 clicks towards the end. At the next graph we can see the conversion stats: 1$ is roughly 62 rubles at this very moment The cost of one conversion is just 9 cents! Conversion rate is 7.84% which is actually quite high for the industry. Now let’s look into Google Play Console stats: Google Play Console Installs stats As we can see the numbers match: 365 installs with top 18 installs per day several times. Unfortunately, no other relevant statistics can be gathered from Console, since there were no ratings\purchases :( So far the promotion of the game is the hardest part in the whole Game Development process (see my previous article about games promotion for free). And paid advertising seems like a right way to go on. In the end I’d like to quote Mark Twain:

(I don’t know) How to promote indie game for free

Originally posted on Medium I released my first game approximately a month and a half ago and actually tried almost all of the methods I could find on various websites out there - all of them will be listed here. With this article I want to share the story of my “promotion campaign”. The very first thing I did was the Medium account creation. I decided to promote the game using thematic articles about game development and related stuff. Well, actually, I still do this, even with this article here :) In addition to Medium the same articles were posted to my Linkedin profile, but mostly to strengthen it. Moreover, you may find a separate topic on Libgdx website (the framework the game is written on). Then, the press release was published. Actually, you should do a press release the same day as the game launch, but I didn’t know about that back then. And to be honest, all of the methods above were not quite successful in terms of game promotion. So I decided to increase the game presence around the web and started to post articles on various indie-game dev related websites and forums (that's how this blog started) Finally, here comes the list of everything created over the past month (some in Russian, be aware): https://www.igdb.com/games/totem-spirits http://www.slidedb.com/games/totem-spirits https://forums.tigsource.com/index.php?topic=63066.0 https://www.gamedev.net/forums/topic/693334-logical-puzzle-totem-spirits/ http://www.gamedev.ru/projects/forum/?id=231428 https://gamejolt.com/games/totem_spirits/298139 https://vk.com/gameru.indie?w=wall-9222155_202256 https://test4test.io/gameDetails/24 Not so many one can say. But I could not find any more good services! If you know one, please, share in comments. What are the results you may ask? Well, I have to admit that they are terrible. I got a little less than a hundred downloads, and I’m pretty sure that most of them from the relatives and friends. And you can’t really count such as a genuine downloads, since I literally just asked them to get my game on their smartphones. But the good thing is that many of those who played Totem Spirits shared their impressions about the game. They truly liked the product! That was so pleasant to hear their thoughts. I know in person several people who finished the game with all diamonds (a.k.a stars) collected. Still, I don’t regret the time spent on the game because I’ve learnt a great lesson — two years of development is a way too much for such simple and narrow-profile game. It seems that now is not a good time for such complicated puzzlers or I just failed badly with the promotion) Now the next plan is to develop and launch a game in a maximum 160 hours (two working months). The coding process has already begun, so hopefully in January you will see the next product of Pudding Entertainment company!

Ruslan Sibgatullin

Ruslan Sibgatullin

First game crash report

Originally posted on Medium The Totem Spirits game is in the market for a few weeks already and this day came inevitably — I received the first crash report. To be honest, there were 5 of them, but all from one device, so the error is the same. I was truly surprised by this! My game was tested by several people and already downloaded by 50+ more. There were no errors till November 7th when someone with Samsung Galaxy Trend Plus (768MB RAM, Android 4.2) got the game. If by any chance you are reading this article, please, know that I’m deeply sorry that you can’t play! Then, I checked the error (aka stack trace) and became even more surprised because this error… told me nothing. Of course I can find the exact place in the code where this problem occurred but there is literally nothing wrong with it! (It works for 50+ other devices, remember?). Moreover, it is not reproducible on any of my devices — I even ran the game without any issues on an old Acer Liquid MT (which BTW was released 7 years ago). Looks like a dead-end one might say, but I didn’t give up. There are several ways to ask for help in the developer’s world. In this case I decided to create a topic on libGDX (game engine) forum and ask them directly because the issue seems to be in the core library itself. In addition to this I also asked a question on StackOverflow (so unpredictable).   Now it’s time to give a little insight into the error. The crash report in Google Play Console looks like this: Even if you are not familiar with libGDX, you may find some keywords like: xml, parser, fileHandle, rootElement from which you can guess that the error lies somewhere in xml file parsing. And this is totally correct! The application on this device failed to parse locally stored file needed for the game to behave properly. What was even stranger — look at the stack trace once again. Have you noticed that there are no custom messages in exceptions? But the developers of the game engine are quite smart guys so the messages are actually exist in the source code. Looks like magic to me… Although, there were some problems with the engine itself too, I fixed’em already with this PR . As sad as it sounds, so far there is no resolution, but I’m not going to give up on this. When you develop for hundreds different Android devices occasional errors are inevitable. It is just impossible to test a product on each and every smartphone out there. But I believe every problem should be fixed anyhow. After all, if there is no other way some devices may be marked as “Excluded” in Google Developer Console. No support — no problems, right? :)

Ruslan Sibgatullin

Ruslan Sibgatullin

How I halved apk size

Originally posted on Medium You coded your game so hard for several months (or even years), your artist made a lot of high-quality assets, and the game is finally ready to be launched. Congratulation! You did a great job. Now take a look at the apk size and be prepared to be scared. What is the size — 60, 70 or even 80 megabytes? As it might be sounds strange to hear (in the era of 128GB smartphones) but I have some bad news — the size it too big. That’s exactly what happened to me after I’ve finished the game Totem Spirits. In this article I want to share several advises about how to reduce the size of a release apk file and yet not lose the quality. Please, note, that for development I used quite popular game development engine Libgdx, but tips below should be applicable for other frameworks as well. Moreover, my case is about rather simple 2D game with a lot of sprites (i.e. images), so it might be not that useful for large 3D products.       To keep you motivated to read this article further I want to share the final result: I managed to halve the apk size — from 64MB to 32.36MB. Memory management The very first thing that needs to be done properly is a memory management. You should always have only necessary objects loaded into the memory and release resources once they are not in use. This topic requires a lot of details, so I’d rather cover it in a separate article. Next, I want to analyze the size of current apk file. As for my game I have four different types of game resources: 1. Intro — the resources for intro screen. Intro background Loaded before the game starts, disposed immediately after the loading is done. (~0.5MB) 2. In menu resources — used in menu only (location backgrounds, buttons, etc). Loaded during the intro stage and when a player exits a game level. Disposed during “in game resources” loading. (~7.5MB images + ~5.4MB music) 3. In game resources — used on game levels only (objects, game backgrounds, etc.). Loaded during a game level loading, disposed when a player exits the game level. Note, that those resources are not disposed when a player navigates between levels (~4.5MB images + ~10MB music) 4. Common — used in all three above. Loaded during the intro stage, disposed only once the game is closed. This one also includes fonts. (~1.5MB). The summed size of all resources is ~30MB, so we can conclude that the size of apk is basically the size of all its assets. The code base is only ~3MB. That’s why I want to focus on the assets in the first place (still, the code will be discussed too). Images optimization The first thing to do is to make the size of images smaller while not harming the quality. Fortunately, there are plenty services that offer exactly this. I used this one. This resulted in 18MB reduction already! Compare the two images below: Not optimized Optimized the sizes are 312KB and 76KB respectively, so the optimized image is 4 times smaller! But a human eye can’t notice the difference. Images combination You should combine the same images programmatically rather than having almost the same images (especially if they are quite big). Consider the following example: Before After God of Fire God of Water Rather than having four full-size images with different Gods but same background I have only one big background image and four smaller images of Gods that are then combined programmatically into one image. Although, the reduction is not so big (~2MB) for some cases it can make a difference. Images format I consider this as my biggest mistake so far. I had several images without transparency saved in PNG format. The JPG version of those images is 6 times more lightweight! Once I transformed all images without transparency into JPG the apk size became 5MB smaller. Music optimization At first the music quality was 256 kbps. Then I reduced it to 128 kbps and saved 5MB more. Still think that tracks can be compressed even more. Please, share in comments if you ever used 64 kbps in your games. Texture Packs This item might be a bit Libgdx-specific, although I think similar functionality should exist in other engines as well. Texture pack is a way to organize a bunch of images into one big pack. Then, in code you treat each pack as one unit, so it’s quite handy for memory management. But you should combine images wisely. As for my game, at first I had resources packed quite badly. Then, I separated all transparent and non-transparent images and gained about 5MB more. Dependencies and Optimal code base Now let’s see the other side of development process — coding. I will not dive into too many details about the code-writing here (since it deserves separate article as well). But still want to share some general rules that I believe could be applied to any project. The most important thing is to reduce the quantity of 3d party dependencies in the project. Do you really need to add Apache Commons if you use only one method from StringUtils? Or gson if you just don’t like the built-in json functionality? Well, you do not. I used Libgdx as a game development engine and quite happy with it. Quite sure that for the next game I’ll use this engine again. Oh, do I need to say that you should have the code to be written the most optimal way? :) Well, I mentioned it. Although, the most of the tips I’ve shared here can be applied at the late development stage, some of them (especially, optimization of memory management) should be designed right from the very beginning of a project. Stay tuned for more programming articles!

Ruslan Sibgatullin

Ruslan Sibgatullin

Seven Tips for Starting Game Developers

Originally posted on Medium Well, it’s been a ride. My first game Totem Spirits is now live.   I’m not gonna tell you how awesome the game is (since you may try it yourself :) ). Instead I want to share my own experience as a developer and highlight some useful tips for those interested in game development. First of all, short background information about myself — I’m 26 now and have about 22 years of a game playing experience (yes, that’s right the first games I played at age 3–4, one of them was Age of Empires) and slightly more than three years of professional career as a Java developer. Alright, let’s dive into the topic itself now. There are seven tips I’ve discovered while creating the game: 1. The team is the main asset. Yes, even the smallest game dev studios have a team of a few people. I literally give a standing ovation to those guys who are able to create a whole game product only by themselves (I know only one example of such). In my team there were one artist, one UX-designer\artist, one sound designer, and myself — programmer\game designer\UX-designer. And here comes the first tip: you should tip 1: Delegate the work you are not qualified in to the professionals. Just a few examples why: Firstly, I tried to find the sounds myself, spent a few days on it and ended up with a terrible mix of unsuitable and poorly created sound samples. Then, I found a guy who made a great set of sounds for less than $15. The first version of promo video was, well, horrible, because I thought I’m quite good at it. Fortunately, I met an UX-designer who made this cool version you may find at the beginning of this post. I can see now why there are so many, let’s say, strange-looking games with horrible art assets and unlistenable music. Well, you just can’t have the same level of professionalism in everything.   2. Game development is not free. You would have to spend your time or\and your money. I mean, if you want to create a good-looking and playable product you need to invest in it. To be honest, I think that not each and every product out there in the markets can be called a “Game”, since many of them are barely playable. As for my game I’ve spend about $1200 on the development and slightly more than 2 years of my life. Still think that it’s worth every penny and every minute, since I gained a lot of experience in programming which boosted my professional career. tip 2: Take it seriously, investments are necessary.   3. Respect the product. The development process is painful, you will want to quit several(many)times. But if the game you’re building is the one you would enjoy playing yourself it would make the process more interesting and give it additional meaning. The third tip is my main keynote. tip 3: Build a game you would want to play yourself.   4. Share it with the closest friends and relatives, BUT… tip 4: …choose beta-testers wisely. If you don’t want to pay extra money for professional testers then friends\colleagues\relatives are gonna be the first ones to test the game. Try to find what kind of games they like since probably not each of them represents your target audience. And I suggest sharing the product not earlier that in the “beta” stage — otherwise you would need to explain a lot of game rules and that would harm the user experience and you gain almost nothing useful out of it.   5. Make use of your strengths. It will cost you less if you know how to code or how to create an assets. In my case, I didn’t need to hire a programmers or game designers. No one is able to implement your idea better than you, that’s why I suggest to tip 5: Take as many roles in the project as possible. But do not forget about the tip 1.   6. Don’t waste too much time on planning. No, you still need to have some kind of a roadmap and game design document, just tip 6: Make documentation flexible. You would probably need to change it many times. In my case a lot of great ideas had come during the development process itself. And don’t be afraid to share your ideas within a team and listen to their ideas as well!   7. You will hate your game at some point. That may sound sad, but that’s true. After a ten-thousandth launch you just hate the game. You may be tempted to start a new “better”, “more interesting”, etc. project at that point, but, please, tip 7: Don’t give up! Make it happen. Share the game with the world since you’ve put a lot of effort into it. Those tips I’ve discovered mostly for myself and more than sure that for a game industry giants the list above may sound like a baby talk. Nevertheless I still think it might be useful for those dreaming to create the best game ever.

Ruslan Sibgatullin

Ruslan Sibgatullin

Sign in to follow this  
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!