2020-09-29追記: この記事は稀にアクセスがあるため念のため残してますが、情報が古いため現在でも使用可能かは未確認です。
今の時代ならDocker使えばもっと楽に運用できるんじゃないかなと思ったり。追記終わり。
Simutransでマルチプレイするために、サーバーを構築する方法です。
今回はConohaVPS上でUbuntu 16.04を使いました。
構築方法
作業用ユーザーの作成
作業用のユーザーを作成します。rootで作業をするのはよろしくないらしい。
今回はsimuという名前のユーザーを作り、管理者権限を付与しました。
|
|
作成したらsimuでログインできるか、管理者権限を取得できるかを確認します。
以降の作業は作業用ユーザーで行います。
Simutransのダウンロード
作業用ディレクトリ「tmp」を作成。
|
|
Simutransのソースコードをダウンロードします。現時点(2017年3月)での最新版は120.2.1でした。
|
|
ダウンロードした、download という名前のzipファイルを解凍します。
|
|
unzipしようとしたら以下のエラーが出てしまいました。
|
|
ConohaVPS上のUbuntuには、デフォルトでunzipが入っていないので、unzipのインストールを行います。
|
|
インストールが終わったらzipファイルを解凍します。
ビルド
Linuxサーバー上で動かすためにビルドを行います。 tmpディレクトリに移動します。
|
|
config.default
を開き、下記の項目を設定します。
|
|
configure.sh に実行権限をつけ実行します。
|
|
configure.sh: error: no acceptable C compiler found in $PATH
と言われるので、Cコンパイラをインストールします。
|
|
今度は configure.sh: error: C++ preprocessor "/lib/cpp" fails sanity check
と言われるのでg++をインストールします。
|
|
このままmakeすると、 descriptor/reader/image_reader.cc:12:18: fatal error: zlib.h: No such file or directory #include <zlib.h>
といわれるので zlib1g-dev をインストールします。
|
|
また dataobj/loadsave.cc:20:19: fatal error: bzlib.h: No such file or directory #include <bzlib.h>
も言われるので、 libbz2-dev
をインストールします。
|
|
インストールが終わったらビルドします。
|
|
get_pak.shの作成
他のサイトには get_pak.sh を実行すると書いてありますが、自分の環境ではなぜか生成されてなかったので、下記のgithubからファイルを持ってきます。 https://github.com/aburch/simutrans/blob/master/get_pak.sh
get_pak.shはtmpディレクトリの中に設置します。
get_pak.shに実行権限を付け実行し必要なpakファイルをダウンロードします。
|
|
get_lang_files.shの作成
get_lang_files.shも作成します。下記サイトからファイルを持ってきて、tmpディレクトリ内に設置します。
https://github.com/aburch/simutrans/blob/master/get_lang_files.sh
get_lang_files.shを実行します。
|
|
初期マップの設置
サーバーは自力でマップの生成を行ってくれないので、クライアント側で用意したファイルをサーバーのsaveディレクトリに保存します。
ファイルの設置など
私はhome階層のSimutransフォルダとtmpフォルダ内のSimutransフォルダとsimファイルを統合しました。
動作確認
サーバーモードで起動できるか確認します。
|
|
運用開始
正常に起動できたら、運用を開始します。
|
|
※ロードするセーブファイルに初期マップを指定してしまうと、サーバー側のSimutransを再起動した際にこれまでのデータが消えてしまうらしいので気を付けましょう。
ネットワーク対戦を開始すると作成される、 server13353-network.sve
(13353の部分はポート番号?)が最新のマップデータだと思われます。
systemdに登録する
このままだと、SSH接続を切るたびにSimutransが終了してしまうのでデーモン化します。
Simutransを起動するためのスクリプトを書きます。
|
|
start.shの中身は下記の通りです。
|
|
次に /etc/systemd/system/へ移動し、sim.serviceというファイルを作成します。
|
|
sim.serviceの中身は下記の通り
|
|
これでSimutransを起動するときは下記のコマンドを入力するだけで済むようになりました。
|
|