はじめに
simutransのサーバを提供することになったのですが、とにかく不安定。
このままだと一生張り付いてないとあかんってなったので、制御しやすいLinux版に移行することにした・・・というはなし。
え?Simutransって何・・・?って?
・・・
Steamで落とせるよ。タダで。(沼へのいざない。
今回構築するもの:Simutrans(OTRP版 v39)
補足:GUIなし
参考にしたサイト
公式フォーラム
Simutrans JAPAN Wiki
ArchLinuxでsimutransサーバを建てる
構成
OS
~# uname -v
#126-Ubuntu SMP Mon Jul 1 10:14:24 UTC 2024
root@hv-game-srv:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
SimutransのSource取得
今回のつまづきポイントの1つ。ソースを取得するところ。
最新版のOTRPを導入したい場合、Windows版では1220版のSimutransを持ってきてExeを入れ替えるだけで完了するがLinux版ではビルドが必要だ。
この時ソースは公式ではなく、OTRPから直接取得する。
OTRPで配布しているSourceにはベースとなるSimutrans1220版も含まれているため、OTRPをLinuxへ導入したい場合はOTRPのGitから直接持ってこよう。
手順としては次でOKだ。
#wget https://github.com/teamhimeh/simutrans/archive/refs/tags/v39.zip
config.defaultの編集
Wikiに乗っている手順で基本的にはOKだ。
今回はサーバ専用(ヘッドレス構成)で行いたいので以下の記載さえあればいい。
ここで記載されている「BACKEND」はシステムの描写を行うエンジンの指定になる。
Wikiや古の手順ではゲームプレイすることが目的になっているため当然「GDI」や「SLD」といった指定があるが、今回は画面は不要。
この場合「posix」を選択する。
当然SLDのソースコードの取得も不要なので手順的にはかなり楽といえるな!
BACKEND := posix
OSTYPE := linux
OPTIMISE := 1
MULTI_THREAD := 1
※Wikiではcolor depthの設定が記載されていたがこれは現在不要のようだ。
必要なライブラリ
必要なライブラリも世代を超え少し変化している。
Wikiそのままでやったら普通に失敗したぞ。
現在の令和最新版情報はSimutrans公式ページに丁寧にディストリビューションごとに記載されている。
やはり公式、公式ページはすべてを解決する・・・!
また、OTRPをビルドする際は別途zstdが必要だ。
OTRP公式サイトだと「zstdをソースからmake installしてね」とあったが、ubuntsuの場合以下で解決できた。
# apt install zstd
うーん、やっぱりaptなんすねぇ。
SimutransOTRP v39のmakeは筆者の10CPU/16Gmem攻勢で大体10分程度かかる。
make -j 4で大体2分くらいってところだな!
makeでエラーが起きたとき
大体「ライブラリがない」か「config.defaultの表記が誤っているか」のどちらかだConfig.defaultの文章が増えるほど必要になるライブラリが増えると思ってもらっていいぞ。
ビルド完了後の処理
正直こっちのが時間がかかった。
Simutrans君のファイル読み込みに癖がありすぎるっぴ・・・
初めての人向けにお話しするとまず、ビルドされた「build/default」配下のものは好きな場所に移動していい。
また、nettoolsが必要な場合は「simutrans本体のビルド→nettoolsのビルド→build/default配下の移動」とした方が間違いがない。
え?そのまま使う?・・・そう。
んでもって、ビルドしても生成されないものがこちら
・saveファイル
・simuconf.tab
・langデータ
・pakデータ
このうちsaveとsimuconf.tabはWindows版とか別のGUI付き環境で作ったものを移植してくる必要がある。
この仕様に気が付かずにかなり時間を要した。
んでもって、起動しようとすると「langファイルがないよ」的なエラーが出る。
FATAL ERROR: simmain::main() - Unable to load any language files
*** PLEASE INSTALL PROPER BASE FILES ***
either run ./get_lang_files.sh
or
download a complete simutrans archive and put the text/ folder here.
Aborting program execution ...
GUI版だとぽちぽちっと終わるのだけどヘッドレスの場合はダウンロードしてきたSource群の中に「./get_lang_files.s」があるのでこいつを実行する必要がある。
ただし、こいつがまたやっかいで「/home/<user/simutrans」配下で起動することが前提になっているっぽい。
そのくせ落としてきたテキストファイルは「<simutransの実行ファイルディレクトリ>/text」に置く必要があるから厄介だ。
実行場所を変更したい場合は中身を編集すれば簡単に変更できた。
pakも同様にget_pak_file.shで拾えるが正直Windows版や直接拾ってきたものをSCPでアップロードした方が楽だと思う。
最終的にディレクトリ構成はこうなるはずだ。
・/home/user/simutrans(自動的に作成される。rootの場合は/root/simutrans
└map
└save ←実行時、セーブのロードはここからのみ行う
└screenshot
・<ビルドしたsimutransの実行ファイルのディレクトリ>
└sim*(実行ファイル)
└pak~/(Pakディレクトリは実行ファイルと同じ階層に置く)
└nettools
└simuconf.tab←どこかから移植する
└その他もろもろ
なんでバラバラなんですかねぇ(困惑
おそらく実行ファイルをユーザディレクトリ配下の「simutrans」に配置することを前提としているからだろうけど、ネットにそんな情報もなかったしこのあたりの仕様にかなり困った。
ちなみにhelpを見て気が付いた。最初から見ろよ(自戒
# ./sim -h
---------------------------------------
Simutrans 122.0.1 Nightly
released Jul 24 2024
developed
by the Simutrans team.
Send feedback and questions to:
<markus@pristovsek.de>
Based on Simutrans 0.84.21.2
by Hansjörg Malthaner et. al.
---------------------------------------
command line parameters available:
-addons loads also addons (with -objects)
-async asynchronous images, only for SDL
-showoverlay show warning of overlaid addons
-borderless emulate fullscreen as borderless window
-use_hw hardware double buffering, only for SDL
-debug NUM enables debugging (1..5)
-easyserver set up every for server (query own IP, port forwarding)
-freeplay play with endless money
-fullscreen starts simutrans in fullscreen mode
-fps COUNT framerate (from 5 to 100)
-h | -help | --help displays this help
-lang CODE starts with specified language
-load NAME loads savegame with name 'NAME' from Simutrans 'save' directory
-log enables logging to file 'simu.log'
-mute mute all sounds
-noaddons does not load any addon (default)
-nomidi turns off background music
-nosound turns off ambient sounds
-objects DIR_NAME/ load the pakset in specified directory
-pause starts game with paused after loading
a server will pause if there are no clients
-res N starts in specified resolution:
1=640x480, 2=800x600, 3=1024x768, 4=1280x1024
-scenario NAME Load scenario NAME
-screensize WxH set screensize to width W and height H
-server [PORT] starts program as server (for network game)
without port specified uses 13353
-announce Enable server announcements
-autodpi Automatic screen scaling for high DPI screens
-screen_scale N Manual screen scaling to N percent (0=off)
Ignored when -autodpi is specified
-server_dns FQDN/IP FQDN or IP address of server for announcements
-server_name NAME Name of server for announcements
-server_admin_pw PW password for server administration
-set_workdir WD Use WD as directory containing all data.
-singleuser Save everything in data directory (portable version)
-startyear N start in year N
-theme N user directory containing theme files
-threads N use N threads if possible
-timeline enables timeline
-use_workdir use current dir as basedir
-snapshot x,y,z,f to make the snapshot like a commandline tool
(x,y,z) : center position, f : zoom_factor (from 0 to 9)
起動
起動はこれでいける。
/root/simutrans-otrp/sim -server 13353 -server_admin_pw <password> -objects <pakディレクトリ名> -lang ja -load client1-network.sve
このとき「なんのエラーも標準出力も出てなかった」ら起動できてない。
この子起動しないとエラーもはけないらしいので起動後の確認はこちらで行う。
# ps -aux | grep simu
root 3238 9.8 28.3 954072 322832 pts/1 Sl 04:23 20:25 /root/simutrans-otrp/sim -server 13353 -server_admin_pw <password> -objects <pakディレクトリ名> -lang ja -load client1-network.sve
起動するとSimutransなんちゃらほんちゃら!みたいなログが出るので目印にすればいいぞ。
ということでゲーム1本のインストールに意外と苦労したって話でした。
最後に
一緒にプレイしたい人はささつづ村役場Discordかszkに直リプくらさい。
以上です。
コメントを残す