Posted on Leave a comment

Benefits of supporting Linux if you are a small Indie Developer

Hi Giants!

Space Mercs launch week has come and gone and, for me, it was an outstanding success both financially (more on that later) and on a personal level. I want to take the opportunity and visibility I have right now to give back to the Linux community and to help other small independent developers.

Before we move on to the article, let’s get some our facts straight and go over the subjects I’ll be touching upon. First off, in order to understand why Space Mercs is deemed successful in my book is to look at the costs of development:

  • It has been in development for three months before release
  • My budget for this game was less than 3000$
    • rent / month * 3 months of development = ~2100$
    • steam submission price = 100$
    • art, sound and other assets that I needed = ~780$
  • Development only by me with no other person contracted or hired

In order for the game to be successful financially for me it needed to make back it’s development cost + one month of rent + 1$. One extra month of rent to cover up for the time it takes for Steam to transfer the earnings (earnings in the month of August are paid out at the end of September) leading up to a total of: 3000$ + 700$ + 1$ = 3701$.

As such I was aiming for the game to sell roughly 630 copies in the first month in order to make it’s money back. 630 copies * 9.99 = 6193.8$ in gross revenue. After steam cut and taxes, 60% of the money end up in my bank account which equals roughly 3716.28$.

How did the game fair so far? In it’s first week of release on Steam the game sold ~648 copies (at time of posting) with a total gross revenue of 5889$ resulting in 3533$ ending up in my bank account – just shy of my 3701$ goal. However this Friday I also made the game available on itch.io which netted me (at current time of posting) 142.87$ leading to a total of 3675$ putting me just 26$ of my goal. Not bad for the first week.

Linux and it’s performance

Let’s get back to the topic at hand – Linux and how exactly it performed for me! Well, out of 648 copies sold, 266 of them were Linux purchases according to Steam meaning that Linux is responsible for 40% of my sales. So much for Linux only makes “3% of the sales” myth that everyone throws around (I’ll go into more details bellow).

Now, 266 sales is a drop in the ocean for big companies or bigger indies however – in my circumstance it really makes the difference between being able to make another game or having to get a job or chase clients. And I’m not the only person in this situation. Did you know that most “good games” make around $10,000 on their first month on Steam? There’s a talk from Mike Rose about it and this one is from 2018, in 2019 the reality should be a bit more harsh. So for the average indie 266 more sales actually matter and make a difference.

When I was talking with Liam from GamingOnLinux during the game’s release day I heard a quote that made me shiver a bit. Lots of developers don’t even see 30 sales on Linux in their first month and I ask myself why. There are plenty of games with more polish, work, production value and love in them that release than SM is. Don’t get me wrong, Space Mercs is one of the best games I developed as an indie to date but it only had 3 months of development time put into it. Other games with more budget and more production value should blow it out of the water in terms of Linux sales so what’s up?

It all comes down to how Linux is perceived in the development community. If we keep throwing around the 1-5% of sales statistic regardless of the scope or what the actual number of sales is we’re not going to bring any new game developers to Linux. Put it at face value, 5% of sales on Linux sounds bad. But when the sales number is around 50,000 copies, 5% is 2500 copies. For a 10$ that’s 25,000$ in gross revenue for the developer. Why don’t we lead with that?

The three myths that maintain the status quo

Indies of my scale ignore Linux because “it’s hard to develop for it, costs a lot of money to do the port, you get a ton of crashes and in the end you make 3% extra sales” and the reality just isn’t that. And note: I’m talking about developers of my scale – to whom a game that sells 1000 copies is a success and trust me on this one: selling 1000 copies of a game on steam is no easy business in today’s market. Most daily releases on steam don’t see 1000 copies sold in their life time. So by continuing to do this – we maintain the status quo.

Okay, so let’s take the percentage of sales out of the equation and let’s say: “Hey indies, you can sell about 200-500 copies on Linux”. How does that sound? Suddenly it’s more attractive to a few developers. But we still have to tackle the “costs a lot of money to do the port and customer support and you get a lot of crashes”. That quote is not pulled out of my proverbial arse, it’s an actual quote from a well known developer – check it out here.

I’m not saying that statistic is a lie and it’s true for them. But look at it from this perspective:

  • You develop the game on windows and work on it on windows for 90% of it’s development.
    • you may or may not use DirectX and no abstraction layer for the rendering/input code
  • As release draws closer you start handling the port to other platforms and Linux is one of them
    • this implies changing the code, adding support for other rendering API’s, Input, etc
  • You get the game running on Linux and tested on your development machine and maybe one two extra pc’s before release.
  • You put the game up on steam or other storefront that supports linux
  • release day comes and you see that linux makes 1% of the sales and you get ton of crash reports
  • shocked_pickachu.jpeg

Why would you support linux in this case, right?

  • You spent a ton of money and time re-writing the rendering api and the input handling routine. You gotta make that money spent back from sales so your sales target increases.
  • You spent the last few months of the development cycle doing the port and you weren’t sure you’re going to be able to launch properly on Linux so you don’t market it too much. Less awareness about the Linux release. Heck your twitter PR thingies are pretty vague about linux.
  • And since Linux is an after thought so is your QA process and your community involvement (aka linux testers for your beta builds) so you don’t catch the many issues that can crop up when you adapt your code to work on another platform.

See where I’m going with this? From the get go a ton of developers consider linux as an afterthought and reap the benefits of having it as an afterthought – you reap what you sow. If from the get-go your rendering engine used OpenGL or Vulkan time spent doing the port would be much lower and with less hurdles. There’s literary no reason why you shouldn’t use SDL in your custom engine from the beginning for handling input or window creation. Heck, for a 2D game SDL is literary all you need and the game will compile for anything from tablets to the PS4 with minimum changes. But hold on, the case I presented above concerns developers with a custom engine. What about developers that use Unity – that engine is cross platform and exports to Linux so they shouldn’t be facing any problems right? Egh… check out the screenshot bellow:

This is a mistake I see other devs routinely make. They fall into a false sense of security given from the fact that Unity can export a Linux build via 1 click in the editor. And it’s true – if you were to make a game in unity with no extra middle-ware solutions and 3rd party plugins the game should run on Linux with no problems. But once you start adding it more stuff that haven’t been developed with cross platform portability in mind things go off the rail. Let me put it easier for you:

You’ll never expect a text-to-speech middleware library from the asset store designed to use the iOS API to compile and work on Windows right? So why do you expect any 3rd party stuff that you didn’t make to run on another platform it’s not advertised for?

I have a simple rule I follow for my games – before I purchase any middleware (and Space Mercs uses a few – like ReWired for Input handling) I make sure that Linux is marked as a supported platform. And after I purchase it I do a build and check it on all my targeted platforms. That means I also check it on Windows. I check the things that I buy before I use them to make sure I’m not shooting myself in the foot in the long run.

This is why QA is needed when you are targeting Linux. No I don’t mean hiring a specific QA team, I mean doing regular builds when you add new stuff. Setup a build server, spit out a Linux build and run it. Or do it from your machine. Do a Linux build, fire it up every once in a while and you’ll know how things are going on. But most developers just get their stuff, code their game, test it on windows and bam! Come release month they do the Linux build for the first time since last Christmas and they have to post announcements like this or this.

For Space Mercs – I developed it exclusively on Linux. There are many reasons why I handled it this way – from Linux being my favorite operating system for a while now to it makes business sense. It makes business sense – from no operating system costs, to great uptime to a ton of stuff but especially from a middleware and engine perspective:

If it works on Linux – 99% of the cases in works on Windows vs the cases above. Middleware and assets on the unity store that work on Linux are 99% guaranteed to work on Windows. Through out SM’s development I only had a single, Windows specific issue – and that was a crash with a particle effect which was caught as soon as I made the windows version. It took me 20 minutes to get the source on my Windows PC, do the build and test it out.

So let’s take the development woes away. So far we got rid of the percentage issues and cross platform support. Why does a game still sell so little on Linux? Well most game devs do no marketing on Linux. Like – at all. At best they fire an e-mail to GamingOnLinux and that’s it. While the Windows version get’s press releases, builds sent out to testers, to press websites. Windows players get engaged on reddit and twitter and facebook. Everyone that’s on Windows knows the game is out while Linux users get a single article mentioning the build might come. Heck, usually Linux is used as a marketing tool when it comes down to needing kickstarter pledges but once the goal is funded it’s up to Linux writers and editors to keep a track of the release and mention it.

Would your windows version sell just as well if no one knew it was coming out? Do you do a one-off shot to the press about your game and forget about it until release? The most common questions posted on r/gamedev when a dev post that his game got no sales is “Did you do any marketing?”. Same thing here – did you do any marketing for Linux for your game?

For Space Mercs I exclusively marketed it on Linux! I was lucky to have GamingOnLinux believe in me and my Linux 1st Initiative to cover the game so extensively. Because of GoL’s article I meet Jason who interviewed me on the Linux4Everyone podcast that eventually became a Forbes Article. All my windows marketing was basically nil, safe for SpaceGameJunkie reaching out to me on twitter and doing a video about the game. And Joshua Pantalleresco giving me the time of day on his podcast which isn’t about computers or gaming (thanks to IndieImprimt for helping me out there with this one). But I didn’t market the game too much outside of linux and the efforts can be seen. 40% of the sales at this point – are from Linux.

How Linux improves overall sales on Steam

And if you think that’s something impressive let me tell you the kicker! Remember that I launched on Steam right? Well, stream cares about how many sales you make and how well you convert. They are like an ad agency. The ad that sells the most products get more traffic. Wanna know how Linux is worth it? You’d be expect that by having 90% of the marketing done on Linux would lead up to 90% of the sales being on Linux right? No, Linux’s % of the market on steam is tiny – yet a Linux sale has the same weight as a Windows sale. The more sales I made on Linux the more visibility STEAM gave my game. This is why after the Forbes article the total percentage of my linux sales didn’t drastically increase from 36% to 90%. Let me put it this way: For EVERY sale I got on Linux steam deemed me worthy and sent more traffic my way. For every Linux sale I got two more sales on Windows. Why? Because 95% of the traffic Steam can give you is Windows traffic.

So doing a good job supporting linux and engaging with Linux users actually BOOSTS YOUR SALES NOT JUST ON LINUX. Supporting Linux increases your overall support for your primary target platform. I’m not sure how I can explain it better than this.

So when people complain and say that Linux is not worth supporting, when they tell you “just advertise that it works with Proton” or when they complain that they are wasting money on a dead platform just point them here. Because they are shooting themselves in the foot.

I love Linux and I really wish a day will come when I can just develop games for Linux exclusively and get someone else to do the Windows port. That’s the day when I’ll be a really happy developer.

But yeah, it’s not worth it to support Linux.

P.s. If you like this article and want to support my development on Linux you can do so in a bunch of different ways. One of them is by becoming a patron. This gives you access to all my Linux games from the BGG store. You can also purchase Space Mercs – the game about whose development I talked about in this article – from Steam or Itch.

Posted on Leave a comment

Resources for Linux Game Developers

Hello tuxedo giants,

With the help of Raven67854 (co-host of the Offtopical Podcast and fellow gamedev) I compiled a list of resources for Linux Game Developers. It covers topics such as Streamers and Youtubers, using Unity, Services (people porting or offering porting services) and more. I’m hoping that with this resource list I can aid other game devs that are bringing their games to Linux OR give a bit more of a nudge to those who are on the fence about doing it! It’s not a complete, exhaustive list, but it should help getting you started on the journey! We need more native games on the platform, now more than ever!

Unity for Linux Developers

I published an article on this blog a few months ago about using Unity on Linux in 2019 and I was quite rough with it. For my last two projects, Farm Life and Space Mercs, I’ve been using Unity exclusively – the 2018 edition and it’s been wonderful. Marc (mdiluz) reached out to me after the article and pointed out some problems with my approach towards Unity’s “Stable” builds and the fact that the one I should use is the “experimental” 2018 version and let me say, it’s a huge difference. I will rebute the previous article soon enough but until then here’s where to get the latest Unity Hub version together with my overview on the situation!

  • Download Unit Hub 1.6.0 for Linux from here: https://forum.unity.com/threads/unity-hub-v-1-6-0-is-now-available.640792/
  • Install the 2018.4.0f1 official release version
  • 2019.1.2f1 seems to have problems with built-in packages like TextMesh Pro and the LWRP. All the errors you get on start require you to remove all the packages installed by default. I’m looking to upgrade my projects from 2018 to 2019 and I’ll update this bullet list with an article on what I did soon!

Unity 2018 is mostly stable for me with little to no crashes and really decent performance, at least compared to the 2017 version. I’ve used it to port Farm Life to linux and exclusively to work on Space Mercs with little to no problems. There are a few issues tho’, like trying to close Unity windows which requires a lot of fiddling with the mouse. But overall the performance is almost on par with the Windows counterpart. Note one thing: It does not ship with MonoDevelop or any other text editor. I recommend doing the following:

  • Download Visual Studio Code from here: https://code.visualstudio.com/docs/setup/linux
    • They have .deb, .rpm, snap packages and even a repo to use!
  • Install the .NET Core SDK on your distribution based on the article here: https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-10/sdk-current
    • There are guides for Red Hat Enterprise Linux, Ubuntu 18.10 to 14.04 (19.04 is not covered yet and there are a few problems with getting it to work on 19.04 due to missing packages – to be fixed soon), Debian 9, Fedora 27 and 28, CentOS, OpenSUse and SLES! Should cover most of your needs!
  • Open up the Unity editor and go into Edit -> Preferences -> External Tools tab
    • From External Script Editor click the drop down menu and select browse. Navigate to your the binary for Visual Studio Code and select it
      • if you don’t know where the binary for Visual Studio Code is located, open up a terminal and do: which code
      • normally it should be under /usr/bin/code
    • Create a new script inside Unity’s Project Browser and double click on it. VSCode should pop-up and work properly!

Unity seems to have really picked-up the pace with development and with the 2019 edition reaching preview status Linux is really close to becoming a first class citizen. I can, finally, wholeheartedly recommend it!

Porting your games to Linux

Linux needs more native games! I love Proton and what Valve are doing with it but using Proton doesn’t guarantee full support and games working on it at this point can break in the future with updates and due to middleware support (see the EAC scandal). I’ll say it, Proton is amazing, but native support is better! Depending on the technology your game is based on, porting to Linux can be as simple as outputting a build for it with the click of a button (Unity) to just compiling it on Linux directly. In other cases you really need to dive deep into the code and change quite a few things. Luckily, there are many solutions and services to aid you here – including hiring someone who specializes on that! We’ll start with this.

At this point in time I know of a few developers who specialize in this and, with my interactions with them, can recommend them for this task:

  • Ethan Lee
    • Website: http://www.flibitijibibo.com
    • References: Super Hexagon, Capsized, Rogue Legacy! Active developer on FNA and Proton!
  • Timothee Besset
    • Website: https://about.me/TimotheeBesset
    • Refferences: RocketLeague, Quake Live – mostly unreal engine from what I gathered.

As for known studios, there are quite a few you could reach out to! There’s Aspyr Media (Civilization VI, Start Wars Knights of the Old Republic, Geometry Wars, Broderlands 2), Feral Interactive (DiRT 4, Rise of the Tomb Raider, Hitman, Deus Ex), Abstraction Games ( Danganronpa ), RuneSoft (Ankh).

Twitter user @hardpenguin13 maintains a Github repo with a more comprehensive list of Studios and Developers porting games to Linux!

For resources, here’s a compiled list of articles and videos that can help you get started!

  • Building for Linux the smart way [Article – Leszek Godlewski]
  • Game Development with SDL2 [Video – Ryan C. Gordon, Slides ]
  • Getting Started with Linux Game Development [Video, Ryan C. Gordon, Slides]
  • Porting to Linux at Linux Conf Australia [Video – Cheeseness, Slides]
  • Linux/SteamOS Game Development [Video – Ethan Lee, Slides]
  • Cheeseness talking with Ethan [Article – interview style! Good resources and points of view on technology to use]

List of Linux Gamecasters/YouTubers

First thing’s first, the reason this list was compiled. Besides, the wonderful linux news website, GamingOnLinux I did not know other places or people (Influencers. let’s call them that) with whom to speak to put more eyeballs on my latest project. As such I reached out to Raven67854 to see if he can aid me. And he did, so be sure to thank him dearly on twitter. This is a list of Linux streamers and youtubers that can put some eyeballs on your game after you brought it to Linux!

JakeJw93 
YouTube: https://www.youtube.com/user/Jakejw93
Twitter: https://twitter.com/jakejw93

Xpander69
YouTube: https://www.youtube.com/user/Xpander666
Twitter: https://twitter.com/Xpander69
Mastadon: https://mastodon.social/@xpander69

Snowdreike
YouTube: https://www.youtube.com/user/snowdreike
Twitter: https://twitter.com/snowdreike

HexDSL
YouTube: https://www.youtube.com/user/hexdsl/
Mastadon: https://linuxrocks.online/@HexDSL

Eegee
YouTube: https://www.youtube.com/user/EtherealGaming1
Twitter: https://twitter.com/egee_irl

Penguin Recordings
YouTube: https://www.youtube.com/user/PenguinRecordings
Twitter: https://twitter.com/Sabunator

GamingTux
YouTube: https://www.youtube.com/user/GTuxTV
Twitter: https://twitter.com/gtuxtv

Holarse
YouTube: https://www.youtube.com/user/holarse
Twitter: https://twitter.com/holarse

Gotbletu
YouTube: https://www.youtube.com/user/gotbletu/

Linux4UnMe
YouTube: https://www.youtube.com/user/Linux4UnMe/

sneekylinux
YouTube: https://www.youtube.com/user/sneekylinux
Twitter: https://twitter.com/sneekylinux

quidsup
YouTube: https://www.youtube.com/user/quidsup
Twitter: https://twitter.com/quidsup

Ghost67Linux
YouTube: https://www.youtube.com/channel/UCglkWuyZDppWD2BVsyI4r3A

ChrisTitusTech
YouTube: https://www.youtube.com/user/homergfunk
Twitter: https://twitter.com/christitustech

SwitchedToLinux
YouTube: https://www.youtube.com/channel/UCoryWpk4QVYKFCJul9KBdyw
Twitter: https://twitter.com/switchedtolinux

GasGregor
YouTube: https://www.youtube.com/user/DasGregor
Twitter: https://twitter.com/DasGregor

JoeCollins
YouTube: https://www.youtube.com/user/BadEditPro
Website: https://www.ezeelinux.com/

DistroTube
YouTube: https://www.youtube.com/channel/UCVls1GmFKf6WlTraIb_IaJg
Mastadon: https://mastodon.technology/@distrotube

Bryan Lunduke
YouTube: https://www.youtube.com/user/BryanLunduke
Website: http://www.lunduke.com/
Twitter: https://twitter.com/BryanLunduke
Mastadon: https://social.librem.one/@lunduke

TheLinuxGamer
YouTube: https://www.youtube.com/user/tuxreviews
Twitter: https://twitter.com/thelinuxgamer
Mastadon: https://social.librem.one/@gbryant

GamingOnLinux
YouTube: https://www.youtube.com/user/GamingOnLinuxcom
Twitter: https://twitter.com/gamingonlinux
Mastadon: https://mastodon.social/@gamingonlinux
Website: https://www.gamingonlinux.com/

Level1Tech
YouTube: https://www.youtube.com/user/teksyndicate
Twitter: https://twitter.com/Level1Techs
Website: https://www.level1techs.com/

The Linux Experiment
YouTube: https://www.youtube.com/channel/UC5UAwBUum7CPN5buc-_N1Fw
Twitter: https://twitter.com/thelinuxexp

Linux4Poets
YouTube: https://www.youtube.com/channel/UChAZdofPrVJ4i2aXbLm_V3Q

KyLinux Cast
YouTube: https://www.youtube.com/channel/UC30WrT9v3qc4UCmDtIyH3ww

InfinitelyGalactic
YouTube: https://www.youtube.com/user/InfinitelyGalactic
Twitter: https://twitter.com/ingalactic

DwangoAC
YouTube: https://www.youtube.com/user/dwangoAC
Twitter: https://twitter.com/MrTASBot

ChrisWereDigital
YouTube: https://www.youtube.com/channel/UCAPR27YUyxmgwm3Wc2WSHLw
Mastadon: https://linuxrocks.online/@ChrisWere

Destination Linux
YouTube: https://www.youtube.com/channel/UCWJUSpXVHTaHErtGWC5qPlQ
Website: https://destinationlinux.org/

Linux Gamecast
YouTube: https://www.youtube.com/user/linuxgamecast
Twitter: https://twitter.com/VennStone
Website: https://linuxgamecast.com/

We opted to include public means of contact in the form of twitter/mastadon or their website’s contact form instead of providing a list of e-mails that can be used to spam them.

I hope this list is going to help you get started with bringing more games to Linux! Like I said in the begining – we can never have too many native games! As for me, I hope you are all aware of my Linux 1st Initiative and methodology behind my games. You can help support this initiative by becoming a patreon subscriber, and get some amazing Linux games in the process!

Good luck Giants!