Posts

Own Fan Product Store: Why?

Image
We got couple of weeks ago new idea: We ordered a few t-shirts with our own designs from one large European print-by-demand service, and started thinking if we could also sell clothes with our own designs for larger audience.


We thought that by buying products, our fans (I guess we have some?) could support our operations and at the same time these unique products would act as advertisements for our games. After familiarization to the topic we came to the conclusion that it is worth at least trying it. The risk is quite small because there is no own warehouse and the on-demand vendor takes care of all practical matters (orders, payments, printing, logistics, etc.).

It took me approx one evening to set up the account for WestSloth Games, create some initial designs (Flamingos, mostly), and then decide the appearance of the online shop. After that we were ready to go and now we have Fan Product shops up and running world-wide. One shop in EU and one shop at US.

Links to both stores:
WestSlo…

How Many Downloads? (Real Data Included)

Image
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…

Unity3D JSON Serialization (save game data)

Image
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:
https://github.com/jliias/SaveData
(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 …

Using Unity3D LWRP and shader graphs in real game

Image
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 el…

New logo for WestSloth Games

Image
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…

Unity3D LWRP Shader Graph demo (rolling checker board)

Image
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.


-Jussi.

Unity3D events, delegates and Action

Image
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…