31 Days of Game Development on Linux
Tags: gamedev, linux, ubuntu
Published: 2019-11-11 12:25:19


During the month of October some of the [Live Coders Team on Twitch](https://www.twitch.tv/team/livecoders) were challenging themselves to use Linux. As a team-member myself I joined in and used Ubuntu 18.04.3. Ultimately setup went smoother than expected. There were some minor hiccups, but then again there always are. Setup of my 6-monitors in the display settings panel tested my patience, especially after doing it a second and third time when it did not save during restarts.

Although a large component of using Linux is for customizations, I did not spend my efforts customizing things endlessly and instead used Ubuntu as-is out of the box.

## Development Experience

I have used Ubuntu previously and already had a build system in place using premake5 to generate make files and such for my custom C++ framework. Setting up Visual Studio Code to run the project was easy enough however it was not nearly as smooth as desired, and I had some issues with full intellisense abilities. Perhaps required more setup than performed; though I tried several times to set the include directory in attempting to make it work.

It was more of a process than desired to test changes as it required manually saving each file, opening/switching to the terminal window (in or out of VSCode) to run a command. Pressing the play button or F5 in VSCode to run with debugger... and when finished the terminal window needs to hide for code visibility. While that isn't a deal-breaker, Visual Studio does all of this with F5, and auto hides on return to code.

This was not world-ending, but was a little more frustrating. Perhaps spending more time with setup would have reduced some overhead as I know there are launch tasks. VSCode is not Visual Studio and never will be; some tools are lacking or missing entirely. Extensions help this significantly and other command-line tools may technically fill the gaps, however that is just not as friendly.

## What I Liked

* Using apt-get to install software is AWESOME.
* wget downloading via command-line in place is GREAT.
* Much easier to grab and install developer dependencies.

A viewer of my [game development stream](https://twitch.tv/timbeaudet) shared a game for me to try, and had to share a few more files. It was amazing to use a terminal window navigate and just run `wget url` to grab those files without opening the browser, save-to prompts and manually moving from `/Downloads/`. Also installing software is way more awesome, when it exists in repositories. Instead of searching "audacity" to find and navigate to "audacityteam.org" then finding the download button and yada-yada, just type in terminal `apt-get install audacity` and BAM all done. That simple. However Audacity may be a bad example because after installed, it didn't get mic input correctly and I actually failed to get it working at all.

## Streaming Experience

Live streaming was surprisingly easy on Linux, the setup did not take long after downloading OBS as I started with settings from streaming on Windows. The monitor setup/reset issue did cause some more overhead at the start of some streams, and the camera sometimes needed help to sync picture with audio from mic. Also there were a few things I did miss from Windows, namely Auto Hot Key which has scripts for typing out some links and handy messages. However overall the streaming went without issue.

## Practicality Linux vs Windows

While development went smoothly on Linux and dealing with external libraries is, _in general_, easier - I would argue heavily that Windows is more practical. If only for the reason that 96% of PC gamers are on Windows, based on [Steam Survey](https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam).

Visual Studio also has a sharper edge with debugging tools. This is a potential bias but I honestly believe the tools being built in and easily accessible is a real advantage.

Linux shines for grabbing dependencies, it is far more practicial in this manner which can increase the rate of development when you target only Linux. This may be shifting slightly as vcpkg is a thing and as it grows perhaps dependency problems will start to become less of a headache.

## Daily Development Streams

Checkout my [game development stream](https://twitch.tv/timbeaudet) to watch my indie adventure, I stream daily 6am-9am ET.