OpenTTD op een Raspberry Pi

Hieronder vindt je een handleiding om OpenTTD op een Raspberry Pi met Raspbian te kunnen draaien. Deze handleiding is een vrije vertaling naar de handleiding van deze pagina (van Tobias Schwarz).

LET OP: Naast dat deze handleiding er vanuit gaat dat je basiskennis van de commandoregel van Raspbian bezit gaat het ook van een van de onderstaande 2 scenario’s uit.
– Je wilt OpenTTD voor het eerst installeren en de momenteel meest recente versie is 1.8.0 en je hebt een schone installatie van Raspbian draaiend met toegang tot de commandoregel. (Begin bij het eerstvolgende hoofdstuk)
– Je draait nu OpenTTD 1.7.2 en wilt updaten naar 1.8.0. (zie hoofdstuk “Stappen om een update van OpenTTD uit te voeren” op deze pagina)
Vervang bij een update van OpenTTD in de onderstaande handleiding zelf de versienummers.

Shell

Om te beginnen open je de commando-regel van Raspbian. Dit kan via SSH, dan wel via het terminal-venster in een desktop-configuratie.
Mijn persoonlijke aanbeveling is om Raspbian Lite te draaien (dus zonder desktop-omgeving) om niet onnodig bronnen kwijt te zijn aan een desktop-omgeving. Een Raspberry Pi 1 Model B Rev. 2 (512MB) kan prima een server draaien maar een map groter dan 256×256 is bijvoorbeeld niet mogelijk. Met een Raspberry Pi 2 Model B V1.1 is een kaart van 512×512 geen enkel probleem en draait hier al tijden lang zeer stabiel.

Update Raspbian

Voor we echt gaan beginnen met de installatie van OpenTTD is het verstandig om Raspbian eerst bij te werken.
sudo apt-get update
sudo apt-get dist-upgrade

Afhankelijkheden installeren voor het compileren van OpenTTD

sudo apt-get update
sudo apt-get install build-essential pkg-config libsdl1.2-dev subversion patch zlib1g-dev liblzo2-dev liblzma-dev libfontconfig-dev libicu-dev

Meer informatie in de OpenTTD Wiki.
Op de OpenTTD Wiki worden nog twee pakketten genoemd welke geïnstalleerd moeten worden als we kijken in de lijst, echter worden ze niet in de commando-regel weergegeven. Het gaat om: libpng12-dev en timidity
Geen van deze twee heb ik tot nu toe geïnstalleerd en heb geen van beide tot nog toe blijkbaar nodig gehad.

Home-map

Zorg dat je je in de home-map bevindt.
cd ~

Download de OpenTTD-broncode

wget https://binaries.openttd.org/releases/1.8.0/openttd-1.8.0-source.tar.gz

Pak de broncode uit

tar xvzf openttd-1.8.0-source.tar.gz

OpenTTD compileren als dedicated server vanuit de broncode

cd openttd-1.8.0/
./configure --enable-dedicated
make --jobs=4

Op Raspberry’s met meerdere CPU-kernen kun je het beste met het maximale aantal CPU-kernen compileren voor de meeste snelheid. Om te achterhalen hoeveel CPU-kernen de Raspberry Pi heeft welke je op dit moment gebruikt voer je eerst de onderstaande commando uit.
getconf _NPROCESSORS_ONLN
Je krijgt nu een getal terug wat je in kunt vullen op de plaats van de 4 uit “make –jobs=4”.

Installeer de OpenTTD binary

sudo make install

Start de server

Start nu eenmalig de server.
openttd -D
De server zal je onderstaande foutmelding geven wanneer de server juist is geïnstalleerd.
Error: Failed to find a graphics set. Please acquire a graphics set for OpenTTD. See section 4.1 of readme.txt.

Installeer OpenGFX

Ondanks dat OpenTTD als een dedicated server zal draaien dient er toch een graphics set geïnstalleerd te worden. Omdat de set op de server geen invloed heeft op wat de speler op zijn eigen client later gebruikt is het installeren van OpenGFX de makkelijkste keuze.
cd ~
wget http://fr.binaries.openttd.org/bananas/basegraphic/OpenGFX-0.5.2.tar.gz
gunzip OpenGFX-0.5.2.tar.gz
mkdir -p .openttd/baseset
mv OpenGFX-0.5.2.tar .openttd/baseset

Creëer een configuratie-bestand voor OpenTTD

Creëer eerst handmatig een configuratie-bestand en start en stop daarna de server zodat het bestand gevuld wordt met de basis-configuratie.
touch ~/.openttd/openttd.cfg
openttd -D
exit

Nu kan de configuratie aangepast worden.
nano ~/.openttd/openttd.cfg
Hieronder een aantal voorbeelden van basis-instellingen welke je kunt aanpassen
; set passwords for the server
server_password = letmein
rcon_password = letmein
admin_password = letmein
; set a name for the server
server_name = Noki's Server
; Pause game without active clients
min_active_clients = 1
; increase number of vehicles to maximum
max_trains = 5000
max_roadveh = 5000
max_aircraft = 5000
max_ships = 5000
; set the curreny
currency = EUR
; set map size to 512x512
map_x = 9
map_y = 9
; set start year to 1970
starting_year = 1970
; set autosave to yearly
autosave = yearly

Daarnaast kun je de goederen-distributie ook op asynchroon instellen.
; change the cargo distribution to async
distribution_pax = 1
distribution_mail = 1
distribution_armoured = 1
distribution_default = 1

Zie voor alle instellingen ook de openttd.cfg-pagina op de OpenTTD Wiki.

OpenTTD Init Script

Voor het automatisch starten en stoppen van de server kun je OpenTTD Init Script gebruiken, geschreven door Frode Woldsund.

Downloaden en uitpakken van OpenTTD Init Script

cd ~
wget https://bitbucket.org/frodus/openttd-init/downloads/openttd-init-1.2.1.zip
unzip openttd-init-1.2.1.zip

Installeer afhankelijkheden

sudo apt-get install screen

Installeer het script

sudo ln -s ~/openttd-init/openttd /etc/init.d/openttd
chmod 755 ~/openttd-init/openttd
sudo update-rc.d openttd defaults

Hernoem en wijzig het script

mv openttd-init/config.example openttd-init/config
nano openttd-init/config

In het configuratie-bestand pas je het volgende aan.
USERNAME="pi"

Samba

Om te zorgen dat je vanaf een Windows-computer bij de bestanden kan, om bijvoorbeeld met Kladblok het configuratie-bestand aan te passen, is het handig om een Samba share op te zetten.
Let op: met onderstaande stappen zet je een Samba share op welke voor iedereen binnen het netwerk zonder invoer van wachtwoord te benaderen is. Gezien het hier om de thuis-map gaat acht ik dit veilig voor een privé-netwerk.
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install samba samba-common-bin

Open het onderstaande bestand
sudo nano /etc/samba/smb.conf
Plaats in het bestand, helemaal onderaan, het volgende.
[PiHome]
path = /home/pi
read only = no
guest ok = yes
force user = pi

Voer na onderstaand commando tweemaal het wachtwoord in. er vanuit gaande dat pi de standaard gebruiker is. Als dat het geval is dan is het standaard wachtwoord: raspberry.
sudo smbpasswd -a pi
Het is waarschijnlijk niet nodig maar een herstart is nooit verkeerd.
sudo reboot
Bron

Stappen om een update van OpenTTD uit te voeren

Gezien OpenTTD nog altijd actief in ontwikkeling is zal je in een situatie komen dat je server gedateerd raakt. Onderstaand zijn alle stappen te vinden waarmee je een update uit kunt voeren.
sudo service openttd stop

sudo apt-get update
sudo apt-get dist-upgrade

cd ~

cp -r ~/.openttd ~/openttd-1.7.2-backup

wget https://binaries.openttd.org/releases/1.8.0/openttd-1.8.0-source.tar.gz

tar xvzf openttd-1.8.0-source.tar.gz

cd openttd-1.8.0/
./configure --enable-dedicated
make --jobs=4

sudo make install

sudo service openttd start

Let op: Bovenstaande is voor de Raspberry Pi 2 en 3. Voor de Raspberry Pi 1 dien je make --jobs=4 te veranderen in make --jobs=1 (of simpel: make), zoals eerder ook al behandeld is.

Cron

sudo crontab -e
Kies, indien dit nog niet eerder gebeurt is, de volgende editor:
/bin/nano

Onderaan het bestand dat nu geopend is kun je de Cron-taken toevoegen. Onderstaand een voorbeeld van taken. Dit is een 1 op 1 kopie van wat er op mijn server draait.
*/15 */1 * * * sudo service openttd say www.batssoft.nl/openttd

5 13 * * 5 sudo service openttd say Game_will_restart_in_6_hours.
5 14 * * 5 sudo service openttd say Game_will_restart_in_5_hours.
5 15 * * 5 sudo service openttd say Game_will_restart_in_4_hours.
5 16 * * 5 sudo service openttd say Game_will_restart_in_3_hours.
5 17 * * 5 sudo service openttd say Game_will_restart_in_2_hours.
5 18 * * 5 sudo service openttd say Game_will_restart_in_1_hour.
20 18 * * 5 sudo service openttd say Game_will_restart_in_45_minutes.
35 18 * * 5 sudo service openttd say Game_will_restart_in_30_minutes.
50 18 * * 5 sudo service openttd say Game_will_restart_in_15_minutes.
55 18 * * 5 sudo service openttd say Game_will_restart_in_10_minutes.
0 19 * * 5 sudo service openttd say Game_will_restart_in_5_minutes.
2 19 * * 5 sudo service openttd say Game_will_restart_in_3_minutes.
4 19 * * 5 sudo service openttd say Game_will_restart_in_1_minute.
5 19 * * 5 sudo service openttd newgame

De eerste regel is verantwoordelijk voor het eens per kwartier adverteren van de website. Het tweede blok is verantwoordelijk voor het vooraankondigen van een server reset op vrijdag. Met als laatste regel de daadwerkelijke reset.
Let wel op met bovenstaande: “say” is geen standaard onderdeel van het init-script!

Na de wijzigingen kun je Nano weer afsluiten door op CTRL+X te drukken en YES te antwoorden. Bij een geslaagde wijziging is er te lezen “crontab: installing new crontab”. Indien je niet met YES antwoord zal er het volgende te lezen zijn: “No modification made”