Sunday, September 8, 2019

Flamingo Tap Tap Run

Edit 9.9.2019: It seems that Flamingo Tap Tap Run is our most downloaded game after one week from publishing. However, I have to admit that few tens of downloads is enough for this "achievement". :) 

My game development journey continues with "Flamingo Tap Tap Run" Android game, with pretty simple visual outlook and simplified mechanics.

My emphasis with this project was on character animation. This was first time I used Spriter tool for creating and extracting animation spritesheets for Flamingo movements. After all messing and fumbling result looks pretty ok and at least character animations are more smooth than in my previous projects.


Game logic was created with Unity3D and C#. The overall quality of the code is again improved compared to my previous games, but I think there's still something to do better. :)

There were some challenges during the process, and the toughest one was migrating to latest Unity during the development phase. Some plugins were conflicting with each other and I had manually clean up data caches and temp directories under project folder. It just took some time to know what to do. More about this topic can be found from my previous blog article.

This game is also the first one where I was using Android App Bundle (AAB) instead of APK package. At least the download size is bit smaller and there is no need to deliver separate APKs for each target platform anymore (ARMv7, ARM64, x86).

-Jussi

Monday, August 12, 2019

Issue with Unity3D: "Found plugins with same names, and ."

*** IMPORTANT ***
Following contains my approach for fixing duplicated plugins error in Unity3D. I have no idea if it is a correct way to do this, but it worked in my case. 

BACK UP YOUR PROJECT BEFORE TRYING THIS APPROACH! 

*** IMPORTANT ***

So. let's start. 

I decided to try using Android App Bundle (AAP) instead of regular APK because I got an understanding that it might make game download and installation size smaller. However, I was using bit too old version of Unity3D so I downloaded latest version from their site and converted my exising game project for that.

Game conversion from Unity 2018.2.13f1 to 2019.2.0f1 was running smoothly with no errors. But when I tried to compile my little game for Android, I got bit strange error message: 
"Found plugins with same name,  and  . Delete the one of the duplicate plugins"
(please note the empty spaces around 'and' word). 













I have seen something like this earlier when struggling with different plugins, but duplicated plugins names have been reported clearly in the error message. This time was different and I did not have any idea what to look for. I tried search and destroy some plugins from caches but no success. I also tried to delete all files under "PlayerDataCache", "ShaderCache" and "FacebookSDK" directories, just to see what happens. But no success. 

I decided to return to the starting point by removing converted project and copying original project from backup to get a fresh start. After that I went under project "Library" directory and removed following subdirectories:
- PlayerDataCache
- ShaderCache
- FacebookSDK (I have no idea why it was there, since I had not used any FB stuff in project)
- il2cpp_android_* directories

















After removing these directories I did 2018.2.13f1 to 2019.2.0f1 conversion again and started Android compilation with Android App Bundle build enabled. This time everything was working fine and I got AAB compiled successfully! So it seems that there were something really wrong in caches.

And yes, I have had similar issue with two projects I have converted from Unity 2018 to 2019: First one had old Data Privacy Plug-In from Asset Store so I suspected it somehow conflicted with the latest Analytics DataPrivacy API (comes with Unity 2019). But second project had no Data Privacy plugin installed, so I guess it can't be the root cause for duplicate plugin issue. 

And as stated in the beginning, I have no idea if my approach is acceptable in all cases. For me it worked, but I don't take any responsibility if you break your project with this approach. SO, MAKE BACKUP BEFORE DOING ANYTHING ELSE!

-Jussi.

Monday, July 29, 2019

Running multiple domains on one NGINX server

In addition to westsloth.com domain we have now registered westsloth.fi domain for our planned business in Finland (mostly HW/SW consulting and financial and office management services).

As we are doing this part-time, we want to keep web hosting costs in control. Therefore we wanted to run the web pages of both domains on same server.

The original homepage of WestSloth Games (westsloth.com) has been running on single AWS Lightsail instance. In this solution, the monthly expenses are well-know in advance. But on the other hand server capacity is limited to some level. Anyways, the load for westsloth.com has not been too large for the Lightsail instance to handle it. So we thought we can easily run westsloth.fi on same server too.

Westsloth.com webserver is built using NGINX, Gunicorn and Django framework plus local MySQL database. Web page is built using Bootstrap front-end framework.

Adding another domain to NGINX setup was done by following these instructions on applicable part:
https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04

First step that was required to get two separate domains running on same server was to divide original document root (/var/www/html) to two separate document roots (/var/www/ws.com/html and /var/www/ws.fi/html).

Second step was to create new pages for westsloth.fi, and that was basically copying westsloth.com Bootstrap template and remove all unnecessary parts there. This was placed under ws.fi document root. Common static files like robots.txt were placed under ws.com document root.

In third step, original westsloth.com NGINX server block was duplicated (under nginx/sites-available). Westsloth.com part was left mostly unmodified, because only changes were related to static file locations. Westsloth.fi server block was configured to listen port 80 and westsloth.fi and www.westsloth.fi server names. Also, document root and index was defined here.

Last step was to enable server blocks by creating symbolic links of nginx/sites-available to nginx/sites-enabled directory. NGINX will read these during the startup.

After restarting NGINX everything seemed to be working as expected. So now we can concentrate on editing the content of both web pages!

-Jussi.

Thursday, July 25, 2019

We are officially a company!


After 6+ years of existence and hobby-based game development, WestSloth Games is now part of a freshly registered company called Westsloth Oy! My family member needed to set up a company for invoicing occasional work, and we decided it's time to make Westsloth a real game company!

To secure company's finances our main businesses are computer hardware and software consultancy plus office and financial management services. But game and app development stays as an essential part of Westsloth and we hope games will start generating revenue in the future.

This change does not have much impact the way we develop games: At the moment I am doing development on a part-time basis (my day job has priority). But of course things can change. And as before, we know we are still ramping up our game development competence and our target is to do every new game better than the previous one!

Transition to company control is ongoing and there will be some changes e.g. in WestSloth Games social media channels.

Check our latest published games from Google Play Store:
https://play.google.com/store/apps/dev?id=5608008400672115508

Follow us on:
http://www.westsloth.com/
https://twitter.com/WestSlothGames



Summary in Finnish: 
Olemme kehittäneet sivutoimisesti pelejä viimeiset 6+ vuotta. Toimimme nykyään osana Westsloth Oy:tä , jonka toimialoiksi on merkattu kaupparekisteriin ATK-laitteisto- ja ohjelmistokonsultointi, toimisto- ja taloushallinnon palvelut ja kaikki muu laillinen liiketoiminta (y-tunnus: 3012425-8). 

Meiltä löytyy saman katon alta osaamista tilitoimistopalveluista, tietokoneista (Windows/Linux/cloud) sekä pelien ja applikaatioiden kehittämisestä! 


-Jussi

Wednesday, March 6, 2019

WestSloth Games: New website with brand-new domain!

In addition to game development hobby I have improved my web development skills by creating and developing websites for my own purposes.

Now I have taken a step towards cloud services and web backend by releasing brand-new landing page for our released games:
http://www.westsloth.com/

Page features:
- Single-page, album-style design
- Responsive, scales for all screen sizes
- Admin console with login for adding/removing/modifying games entries easily

Under the hood:
- Django web framework
- Bootstrap front-end component library
- Local MySQL database. Option to use Postgresql e.g. from Amazon RDS
- Gunicorn Python WSGI HTTP server
- NGINX web server
- Runs on single Amazon Lightsail instance (AWS EC2, in practice)
- Amazon Route 53 for domain hosting and DNS

Kuvahaun tulos haulle django logo
Basically, building simple landing page using Django was surprisingly easy: There are plenty of good tutorials available all over the web and almost all issues were solved by googling error messages. It took me approx 2 hours to get first version up and running on my PC using test server.

But then the hard part was to get same project running on VPS (AWS in my case). I tried two different Django setups: the first one was running on EC2 with Apache2 web server, and the second one was set up to Amazon Lightsail using Gunicorn and Nginx. For me the latter one was easier to get running, mainly because I had solved most of the issues when trying to get wsgi setup file to work with Apache server. :)

So, if you have issues setting up Django based apps on AWS using Gunicorn and Nginx (or Apache), I might be able to help. I have already gone the hard way with them. :)

Django project files (excluding local settings) are available on my Github:
https://github.com/jliias/westsloth-project
Please note, that this is not exactly the same version that is running on westsloth homepage. Some setup changes are required to get things running on different environments.

-Jussi


Tuesday, October 9, 2018

Re-usable Unity3D scripts at GitHub!

During last couple of years we have created some generic Unity3D C# scripts. These scripts have been design to be re-used at least to some extent, to ease up new game project creation.

Now some of them are available for public at GitHub:
https://github.com/jliias/CommonUnityScripts

We have selected the ones that we think are most readable and understandable and also well (?) commented.

New general purpose scripts will be added when there is something we think is worth publishing.

Please have a look and see if there's something useful also for you!

-Jussi