How to run your Monogame app on a Raspberry Pi (or any Linux)

October 1, 2021 | 3 minutes read

If you are here you probably have a Windows game developed using Monogame that you would like to port to a Raspberry Pi device with Raspberry Pi OS (Raspbian). Or even, to any Linux distribution. Well, you are in the right place. This mini-tutorial will cover all the steps to run your game on it.

Requirements

Before starting to get your hands on the task you must comply with these requirements to maximize compatibility and to be up-to-date.

  • Monogame 3.8 (it could run on older versions but not tested)
  • Your game using .Net Core 3 or newer
  • Your game and assets built with target DesktopGL
  • Raspberry Pi 2 or newer (dotnet can publish only on newer devices and not on the original RPi)
How to do it

We are going to use our videogame Zombusters that is #OpenSource as an example of a real project working.

1. Clone the Game Repository

git clone https://github.com/retrowax/Zombusters.git

2. Download and install .NET Core 3.1 SDK

In this case, at the moment we are still using .NET Core 3.1 but it would be the same for the latest version 5.0. Here you will find the SDK:

https://dotnet.microsoft.com/download/dotnet-core/3.1

We need to download the Arm32 version because Raspberry Pi OS is still 32bit.

wget https://download.visualstudio.microsoft.com/download/pr/2178c8a1-ad48-4e51-9ddd-4e3ab64d1f0e/68746abefadf62be43ca525653c915a1/dotnet-sdk-3.1.405-linux-arm.tar.gz

Now we need to uncompress the file and install it on our path:

mkdir -p “$HOME/dotnet” && tar zxf dotnet-sdk-3.1.405-linux-arm.tar.gz -C “$HOME/dotnet”

export DOTNET_ROOT=$HOME/dotnet

export PATH=$PATH:$HOME/dotnet

If you want .NET Core to still work after restarting the system you would need to do this:

sudo vi /etc/profile

Add these lines at the bottom of the file and save it, use your editor of choice I used vi.

export DOTNET_ROOT=$HOME/dotnet

export PATH=$PATH:$HOME/dotnet

3. Build the Game Solution

Now is time to build the solution but first, we need to download the required Nuget dependencies included on the solution before we could build it.

dotnet restore ZombustersLinux.sln

Then, build the Debug flavor:

dotnet msbuild ZombustersLinux.sln

Now you would like to make changes to your solution in order to adapt it or solve eventual issues with your solution being migrated to your Raspberry Pi.

If the build runs without errors, it generates a dll with the debug build that could be executed with this command (the path is where your solution files were generated):

dotnet /home/pi/Documents/github/Zombusters/ZombustersWindows/bin/Debug/netcoreapp3.1/ZombustersLinux.dll

Note: if is the first time migrating to a Linux environment it would be possible that your Content Load paths could be wrong and could generate errors when building.

And that’s it! You will have now your game up and running on your Raspberry Pi.

This process could be used to execute it on other Linux distributions, you only need to download the correct arch for the .NET Core SDK.

Finally, if you would like to try Zombusters on your Raspberry Pi, you can download it for FREE here:

https://retrowax.itch.io/zombusters-raspberry-pi-edition

In the next posts, we will cover the ways to create a Release build and the best options to distribute it.

Stay tuned!

comments powered by Disqus

popular post

How to run your Monogame app on a Raspberry Pi (or any Linux)

If you are here you probably have a Windows game developed using Monogame that …

Read More