Ruslan Sibgatullin

Members
  • Content count

    14
  • Joined

  • Last visited

Community Reputation

4 Neutral

About Ruslan Sibgatullin

  • Rank
    Member

Personal Information

Social

  • Github
    https://github.com/Enigo

Recent Profile Visitors

384 profile views
  1. Mobile Critique my first game

    Yep, in a few months.
  2. 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? :)
  3. Feedback on my first game Asteroid Challenge

    Hi, I've been playing your game for a while - quite a good idea actually! I liked the overall style, art and sounds. There are couple things that (in my opinion) can be improved: 1. App icon is a bit strange, not stylish 2. I expected to see more types of enemies - do you have plans for this? 3. Also, custom ship upgrades would be quite cool! You may try and critique my project as well
  4. [Android][iOS] Breakout vs Color Match

    Hi, just tested your game. Several things I've noticed: 1. 50MB is quite a huge size for apk. I can't understand why is it so since there are not much art in the game. 2. those "black bars" look weird. 3. Couldn't understand what "Continue (2 remaining)" really means 4. Overall the game is quite hard. I couldn't hit the right bar even once, lol. You can find my project to critique in my profile
  5. How I halved apk size

    Well, I think I need to read more on that topic, thanks for the information!
  6. How I halved apk size

    Hi lawnjelly! Actually, that way to organize resources loading is one of the "best practices" suggested by libgdx devs. So it is more a pre-emptive measure indeed. But I even tested the game on my old Acer Liquid MT (released 7 years ago) and everything works smoothly The trick about images diff sounds complicated, have you ever used it in a real project?
  7. Mobile Critique my first game

    Hi @Daimos, thanks for the reply! Actually, so far there are two types of players - one of them really like the game and play thru the end with all "stars" collected, other can't pass the 4th level and quit
  8. 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!
  9. Mobile Logical puzzle - Totem Spirits

    Yes, I have plans to release an iOS version later this year)
  10. Seven Tips for Starting Game Developers

    Hi Michael! I found the guy here. Note that the link is for Russian game dev forum, but you may find his email straight away.
  11. 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.
  12. Mobile Logical puzzle - Totem Spirits

    Hello everyone! I'm Ruslan from Pudding Entertainment. In the end of October we released our first game for Android: Totem Spirits Promo video Totem Spirits is a brain teaser game wherein the player goal is to put totems on their places, using the logic as well as ancient mechanisms. Sounds easy, right? Then sharpen your brain, solve all the puzzles and awaken Gods of nature to bring the peace back to the world. Features: - Four locations and 80 unique thoroughly created levels - Complex and intricate logical puzzles - Excellent graphics and amazing soundtrack - Lovely totems Download --> https://play.google.com/store/apps/details?id=com.pudding.totems
  13. Totem Spirits

    My latest game Totem Spirits
  14. Mobile Critique my first game

    Hello everyone! In the end of October I released my first game: Totem Spirits Check out one-minute Promo video Would love to hear your feedback about the product!