Posted on Leave a comment

New game launch + Thoughts on Unity on Linux in 2019

Hello Giants!

Those of you who keep an eye on the front page, follow me on twitter or are active in our discord server know I just launched a small game for Android today called Retro Sail. It’s cute, skill based, features no ads as lacks any kind of IAP. It was also designed and developed in under five days with Unity. Now those of you who think this is some kind of a praise for Unity as an engine, especially those who weren’t in discord, let me warn you – it is not.

For the past 5 days I’ve been through a roller coaster of emotions due to using Unity and I’ll walk you through the reasons in a second. Before that let me just say that after spending these past days using it on Linux makes me want to focus even more on Pint as my main game development tool. Let’s jump through it.

The most stable version of unity, 2017 LTS would put even a Bethesda game, on release, to shame in terms of crashes and bugs.

Last time I got to try Unity engine on Linux was in 2016 and for a first attempt at supporting the Editor on Linux they were onto something. Yes it wasn’t extremely stable and there were a ton of problems with dragging and dropping but it was also an experimental, fresh build. Fast forward to today and well, nothing much has changed. Unity now comes with a launcher called the Unity Hub and all I can say about it is that it’s a convenient way to manage different versions of the engine. In my case I had the option of installing:

  • Unity 2018.3.4.f1
  • Unity 2018.2.2.20f1
  • Unity 2017.4.19f1(LTS)

Out of the three choices the only one who would open up the editor was 2017 version, the 2018 ones would crash as soon as a project was created and loaded. 2017 isn’t far off from this behavior but at least I managed to do get the editor working.

2017 LTS version of Unity comes without Mono Develop, does not install the Android subsystem needed to build Android projects and crashes every single time you open up a project unless the project folder isn’t cleaned of any Interface or Project setting. But again, at least it works. Barely.

Mono develop can be installed externally but actually getting it integrated properly with Unity 2017 is a tale in itself. Let’s just say that I finally got it working but had to default to Visual Studio Code because:

  • Copy pasting anything from outside Mono Develop into Mono Develop was not an option
  • Trying to edit a script from the editor by double clicking on it would open up a new Mono Develop window and solution
  • Even more so sometimes Unity would point out errors on code lines that weren’t there in a given file.

So if you’re looking to try out Unity 2017 on Linux save yourself some trouble, get Visual Studio Code and install the .NET required plugins for it.

Building for Android is a no-no unless you install p7zip-full.

I needed Unity so I can develop a Android game (still Linux, right?) in a few days to put up on the Bearded Giant Games store. Let’s be honest, the BGG store is lacking content and I’m bleeding a lot of new visitors and old visitors. Might as well design a tight game to keep them busy until Outwarp comes out. Back to Unity tho’. If you try to install the Android subsystem needed to build games for Android and use the Unity Hub you’ll just be notified, after the install, that it failed due to an unknown error. After digging for a while the solution for this was simple, get p7zip-full onto my system because Unity requires it. Ubuntu users can just do a

apt-get install p7zip-full

Again this took quite a few hours to debug and figure out since, from my research, it wasn’t documented anywhere. Thank you who ever tweeted about this, you were a life saver (and the reason Retro Sail is out).

Importing audio files is a no-no in 2017.4.19f (LTS) because it is deployed with the wrong library.

Main mechanics completed it was time for me to focus on sounds and audio design for the game and another what the hell moment came when trying to import some audio files into the game. Long story short Unity would default on importing the Audio Files because of a problem with FSBTool and actively required me to download fmod and copy libvorbis.so.2 from it into the Data Folder (editor’s data folder, not the game’s). However, due to FMOD’s licensing I did not want to touch it. After some more browsing I decided to download Unity 2018.2.2.20f1 and copy the FSBTool libraries from it into 2017 and voila, it worked perfectly in 90% of the cases (the remainder 10% required me to import Audio file into Audacity and Export it again as an .ogg file).

Massive processor hog after a few hours of usage

My biggest problem with Unity on Linux didn’t come from android subsystem and/or the FSB Tool problems. Nor did the lack of MonoDevelop (as I affectionately use VSCode for Pint and my other projects) but the fact that a couple of hours in my little Brix PC would slow down to a crawl. And remember this is the same Brix PC I used Unity on for the past few years on major projects as a contractor/freelancer. The OS is installed on a SSD so closing unity and restarting it to get rid of the proc hog wasn’t a problem. Having to delete the ENTIRE LIBRARY FOLDER, Project Settings, Package Manager and Packages after every restart in order to be able to open up the editor? Now that can drive people crazy.

For those of you asking what’s the big deal here’s a small painting of the situation: At best I could go with Unity editor open for ~2 hours before pressing the play button became an exercise in frustration. Closing down the editor and making sure my changes are saved: 4-5 minutes. Restarting the PC from off state? 35 seconds. Deleting the Library, Project Settings and UnityPackage manager folder? 4 seconds. Waiting for the library to be rebuild? 14 minutes. Time for a FIRST BUILD for Android after a reboot? 23 minutes (with subsequent builds being done in < 1 minute). Also, remember, every new opening of the editor had me having to assign the scenes again and set the proper player settings anew.

So for every two hours of work in Unity 2017 under Linux I would loose 43 minutes trying to get it back up again. Add in a few Random Crashes from trying to change the Editor’s Interface elements and mandatory PC restarts and yeah, I lost almost 40% of my development time without doing anything for the game.

Other Linux specific quirks worth mentioning

One issue I discovered today happened while I was preparing Retro Sail for release on the Play Store. The game’s version for Bearded Giant Games was already up after being spitted out by Unity so that wasn’t a problem and it was deemed to work great by the people on Discord. So I did what any other person would do and spit up a Gradle projects and prepare the release for google Play. And release indeed it did but with a small quirk that I believe cost me a few refunds: The FIRST and LAST SCENES were reversed. That means the Main Menu scene of the game was positioned last (scene 4) in the build and the Game Over scene was the scene that welcomed users to their new purchase.

Another thing to note is that any window that pops up outside of the Unity Editor (profiler, shaders, etc) will not position itself accordingly on the screen. What I mean by that is that the top bar and half of the window in height will be hidden on the upper part of your monitor without the ability to move it. When you are a person that lives and dies with the profiler in it’s hand this can and will be a huge turn off. For this I found no fix and I only tested Unity 3D on Gnome. Not sure if this issue occurs on KDE, Unity (hehe) or any other desktop environment.

Ending Thoughts

I was on the fence about using Unity as a tool for my OWN games. I still have to use it for my legacy client projects but for my own titles I’m not sure I want to touch it again. I made a game in about 5 days with it and that shows it’s power. On the other hand those 5 days could have easily been an extended jam period (48h + 20-ish more for polishing) from conception to publishing. It’s a decent engine but on Linux it’s behaves worse than anything else I ever got my hands on. I recommend staying away from the LTS version if you can. And hopefully you’re not running integrated graphics on your machine or else the 2018 version won’t even start.

I made Retro Sail from inception to publishing it on the Bearded Giant Store and the Play Store in just five days using Unity 2017 on Linux because I am a masochist and you shouldn’t do it. But hey, if you want to support such masochistic acts get my games. It will only encourage me to keep doing stuff like this.

Posted on Leave a comment

January Studio Update – Income report

Hello Giants,

It’s a new year and with it comes my new transparency studio report on our earnings via the Bearded Giant Store, in-development projects and my open source tools/frameworks. I strongly believe in my Linux 1st Initiative and want more people to join in developing for Linux as a target platform. The best way I can raise awareness towards Linux as a viable platform is to publish my earnings in a monthly income report post and have said earnings, hopefully, grow as I release more games. My goal so far is to reach a steady 300$ / month of income from my web store before the year ends.

I get that for some people 300$ is nothing but do keep in mind that I have other income sources from freelancing to game design courses. I want to grow the Bearded Giant brand/business steadily over the next few years. With more games comes a bigger back-catalogue that will earn income passively and, in theory, each new released game should increase the monthly revenue. My hopes are that with each new income report the numbers get higher and higher and more people are attracted towards setting up their own long-term Linux centered side/main business.

Income Report!

I announced the Bearded Giant Store in December and thanks to Gaming on Linux and the r/linux_gaming subreddit the reception has blown my expectations in terms of sales. As such the turnover for December is way higher than what I expect the norm to be and is reflected in this month (January) sales.

The total amount of sales from December:

Ebony Spire Heresy:

  • Linux: 64 copies sold – 447$
  • Windows: 5 copies sold – 34,95$

Rogue Sweeper:

  • Linux: 26 copies sold – 36,14$
  • Windows: 7 copies sold – 9,73$

Total: 527$.

December was a great month for me that blew my expectations, however, it’s important to note that a huge chunk of the sales were from people who heard about the Linux 1st Initiative and wanted to support it. As such December will not contribute to my baseline towards the 300$/month target for 2019. For some more juicy December data check this out:

  • Visits to the Bearded Giant Store: 3.7K
  • Highest referral being GoL’s article with 893 visitors sent this way! (Thank you Liam and GoL’s staff! You are all amazing)
  • Number of requests to delete purchase data: 7 (check out my privacy policy for more details)
  • Most visits by country: US with 712 visits followed closely by Germany (347) and Romania (312)

Moving onto January things are a bit different and more in-line with my expectations for this month.

The total amount of sales from January:

Ebony Spire Heresy:

  • Linux: 6 copies sold – 41,94$
  • Windows: 2 copies sold – 13,98$

Rogue Sweeper:

  • Linux: 6 copies sold – 8,34$

Total: 64,26$

Like I previously stated there’s a huge discrepancy between December’s sales and January and that’s because of the amount of traffic sent my way from news coverage on the Linux 1st Initiative. However I’m not taking this as a bad thing since it’s pretty much in-line with my expectations! Let’s go over the other stats:

  • Visits to the Bearded Giant Store: 263
  • Highest referral being google with 43 unique visitors sent my way
  • Number of requests to delete purchase data: 0
  • Most visits by country: Romania with 97 visits followed by the US with 63 and UK with 27!

The total amount of revenue generated from the Bearded Giant Store so far:

Following up before the end of the month will be a blog post announcing the new game in development for Linux under the Bearded Giant Brand and a progress report on my new game development framework called Pint! If you want to get in contact with me you can do so via our DISCORD server or by sending me an e-mail at contact@beardedgiant.games! You can also follow me on twitter or stay up-to-date with Bearded Giant Games on Facebook!

Thank you Giants and have an amazing year! 

Posted on Leave a comment

December studio update and Pint progress report

Hello Giants,

Welcome to the last Bearded Giant Games studio report for 2018! The store has been live for a while now and sales have been steady. I’m happy with how well it performed ahead of my initial launch estimate. Starting with January 2019 I’ll open up a new blog category titled Sales and Transparency report where I’ll go into details on how the studio is performing. Hopefully people will be able to learn from my experience and I can grow both as a business and as a developer.

For the past few days I’ve been bedridden, struck by the flu so I had enough time to work on Pint, my new internal game engine. It’s pretty stable and nice so far and I cannot wait to push it out into full production use soon. In the video bellow I’m rendering ~1400 sprites for both backgrounds + the enemies on screen. All scaled, transformed and translated and the FPS is over 100 even on my little Chromebook 14. The memory footprint itself is also extremely small with the game eating less than 48 mb of ram.

Graphics are all placeholders from google images/oga for testing purposes. I’m using a neat little rendering technique inspired by how the scene/roads are rendered in a game like Outrun and it seems pretty fun. Once I add support for animation frames in Pint I think I’ll have a pretty nice demo to release alongside the engine. It just needs some explosions, some screen shakes and proper animations.

On the game development side I have no new game in progress right now however I am toying with a few ideas. I like the faux 3D and fake perspective usage in other games and I’ll probably play with that for my next title. The goal is to have a working game prototype by the end of January so I can focus on developing that in the upcoming months. I’ve already been throwing out some ideas and started a few debates on this subject with people from our Discord server (you are free to join the server and tag along in the conversations as they happen) so I guess I’m narrowing down the list of possible game candidates from a handful to 3-4 projects. Only one will survive in the end!

That’s all for this Studio Update. Pint development is going great, evolving slowly but steady into a framework I can use and abuse in the future. The discord community has been growing nicely in the past few weeks and more and more people are learning about the Linux 1st Initiative (a huge thank you to GamingOnLinux for their shoutout and the discussion it started on their article).

Thank you Giants and Happy Holidays!