Sunday, March 1, 2020

How Many Downloads? (Real Data Included)

I will now present a realistic summary how "Flamingo Tap Tap Run" Android game did over the first 6 months. For that I created a graph that shows moving 30 days average for new downloads. It should give a good idea how the number of downloads has evolved after the updates.

Graph looks great (really steep slope after major update) as long you don't look the scale on the left hand side. But here come the details:

First major version of Flamingo game was available on 3rd of September 2019. It had just one flamingo character and there was no use for collected shrimps. This version got around 50 downloads per month, that has been pretty typical for most of our released little games.

Second major version with large update was released on 3rd of January 2020. This one had total of 8 playable flamingo characters which player could buy using the collected shrimps. This update increased the number of monthly downloads to 200+ and it can also be seen from the attached graph. For us this trial proved that it really is beneficial to update the game with features that will make players return and encourage them to share application download link for others.

In short, Flamingo has now bit over 700 downloads. The number does not sound too large, but compared to our earlier games this has done relatively well. All downloads are organic, so no paid installations or even paid advertising in social media. And yes, based on the data it seems that number of monthly installs is still growing.

With current download volumes the income from advertisements is so small that no-one can earn his living with that (some Euros/Dollars per month). I quickly calculated that good level of income might be achieved with 1000x number of downloads, assuming that CPM will stay about the same. Luckily I am not doing this for living (at least yet)! :)

At the moment we have no plans to do further updates for Flamingo game. But we are monitoring the situation and any good improvement ideas are welcome! :)


Friday, December 27, 2019

Unity3D JSON Serialization (save game data)

Let's keep this short:
My BoxingDay activity was to create a small Unity3d project utilizing JSON serialization for saving game data. Basically, this sample project shows how to save and load game data in one serializable class.

Whole project is available at Github:
(I believe it should work as such)

In this sample project I will serialize GameData class, that contains following variables:
bool adsEnabled
int coinsCollected
int highScore

These variables are packed and unpacked to text format using JsonUtility API that can be used to convert Unity objects to and from JSON format. Basically, it is possible to pack and unpack simple objects to text format by using this API (e.g. collections or arrays are not supported).

Serializing to JSON is done using ToJson method, and and deserializing using FromJson method.

It is important to add [Serializable] to the top of class that will be serialized.

This is very simple solution and as far as know this should be pretty easy to modify for your own purposes. I am going to use this for example in upcoming "Flamingo Tap Tap Run" game update, that is planned to be released in Jan 2020.


Wednesday, December 4, 2019

Using Unity3D LWRP and shader graphs in real game

My previous Unity3D post was demonstrating my trials with scriptable render pipeline and shader graphs. Now I have gone one step further and combined these techniques with one of my previously released game. "Ball Twister" was originally released about an year ago. I did not advertise it too much because of boring outlook and bit simple gameplay. However, now I have found this game perfect for testing scriptable render pipeline and shader graphs in real 3D environment. Attached video shows how different new version of Ball Twister looks compared to the original one. Original version (on left) is using standard Unity render pipeline and shaders. Enhanced version (on right) is using LWRP (or URP) and shader graphs.

In enhanced version, rolling checker board texture, swirling sky and obstacle materials are all using shader graphs to create a sense of movement just by tweaking textures. Basically, only objects that are really moved are black obstacles and coins. Everything else stands still. The resulting game is still more or less playable demo, but you can download Ball Twister from Google Play Store:


Friday, November 29, 2019

New logo for WestSloth Games

The original logo of WestSloth Games was created by me for several years ago. Basically, it was a hanging sloth that was built using voxels. I guess MagicaVoxel was the tool used to create it.

In the beginning logo looked pretty ok. But over time it started to look confusing and not so good anymore. So there was a clear need to draw a new logo.

But what kind of a logo is good one? Some views can be found for example from this article concerning logo design:

"A good logo is distinctive, appropriate, practical, graphic and simple in form, and it conveys the owner’s intended message. "

So yes, logo must be at least appropriate, practical and simple. Those were the words I thought I understood. 

Additionally, there was also a short list of characteristics of good logo:
1. Simple
2. Memorable
3. Timeless
4. Versatile
5. Appropriate

So, I tried to follow these guidelines and started drawing with Inkscape. After 30 minutes of fiddling logo looked like this:

How does it look? Does it meet all the characteristics listed above? 

As I am not an artist it is bit difficult for me to judge if I really succeeded with this assignment. But in any case we are now using this logo in all WestSloth Games's marketing and social media. 


Wednesday, November 20, 2019

Unity3D LWRP Shader Graph demo (rolling checker board)

I started getting familiar with Unity render pipeline usage, because I had plans to utilize that in my upcoming game project. As a by-product I recorded a short video how to create a rolling material (or texture) using Unity3D shader graph.

Shader graph is a way to build shaders visually by creating and connecting different nodes. I would think it is simple enough even for beginners after you understand how to setup and use it.

My shader graph demo recording is available on WestSloth's Youtube channel. There is no speech included, but I hope it gives at least some idea how Unity3D shader graphs can be utilized.

I was using Unity 2019.2.13f1 and created a new project with LWRP template, that automatically brings in required packages needed in this demo.

Edit: I added another Unity3D shader graph video to Youtube.


Sunday, November 17, 2019

Unity3D events, delegates and Action

Delegates and events are very powerful features of C#. With them you can write clean and efficient code also in Unity.

However, I have found delegates bit confusing to understand. Most of the examples I have seen are not so easy to understand, especially if you are a self-taught coder like me. :)

Most of the examples I have found are using both delegate and event definitions. Something like this:
public delegate void PlayerHit(int damage); 
public event PlayerHit onPlayerHit; 

But personnally, I like using Action<> type instead. It allows you to replace two lines with one and it will make your C# code simpler. It also removes some confusing buzz around delegate definition. Here's an example:
public static event Action<int> PlayerHit;

So, at least for me this looks more understandable.

Please find below two very simple code snippets from my GitHub repository to see a real life example using Action in defining delegate. In this example event passes one integer, but you can have multiple parameters to an Action (just list your parameter types comma separated between <> characters).

TestPlayer class:

Manager class: