ネットワーク機能は110.0以降で使用できます。
現在、日本語でのゲームはBattle Simutrans(BS)のフォーラムで行われています。
参加を希望する方は、BSwikiの説明などを読んでください。
ネットワークゲームに参加するためには、あらかじめホストサーバーのIPアドレス/ホスト名を知っておく必要があります。
また、simutransのバージョン(リビジョン)とpakセットの種類、バージョンが一致する必要がありますので、これも事前に確認します。
pakフォルダにアドオンなどの余分なpakがあってもいけません。
通常のpakフォルダとは別に、ネットワークゲーム専用のpakフォルダを作っておくとよいかもしれません。
以下の説明では、日本語化ファイルにある翻訳ファイルを使用しています。
この「ゲームの情報」ウィンドウは、pak64では「n」キーに割り当てられています。「n」キーを押せば、いつでも表示できます。
表示できない場合には「(pakセット)\config\menuconf.tab」に以下の1行を追加してください。
dialog_tool[28]=,n
pakファイルが一致しなかった場合には、「ネットゲームに参加」(join game)ボタンは有効になりません。「差異を表示」(find mismatch)をクリックして、違いを表示します。
条件によって非常に長い時間がかかる場合があります。
pakの変更はsimutransの再起動後に有効になります。
接続に成功し、無事にゲームがスタートしたら「ライバル会社一覧」ウィンドウを開いてみましょう。
パスワードはプレイヤーのロックが解除されている状態であれば、あとからいつでも変更できます。上の場合と同様に■緑の四角ボタンをクリックし、パスワードウィンドウで新しいパスワードを入力し、[Enter/Return]を押します。
パスワードを変更する意図がない場合には、一般プレイヤーに変更してから操作するほうが安全です。
「メッセージ表」からログイン中の参加者全員(傍観者を含む)にメッセージを送信することができます。特定の個人のみに送信することはできません。
メッセージは「【会社名】メッセージ本文」のように表示されますが、会社名の表示/非表示は、simuconf.tabまたは「高度な設定」の「add_player_name_to_message」で設定を変更することができます。
メッセージの表示設定
このメッセージは「メッセージ設定」では「チャット」に分類されます。表示しない設定にしているとメッセージを受け取ることができません。「メッセージ設定」を適切に変更しておくといいでしょう。
翻訳ファイルが古い場合には、「名所旧跡」と表示されています。
別途IMやチャットを用意し、それを併用したほうが、円滑なコミュニケーションが取れるかもしれません。
何らかの原因で通信エラーが出ると、ゲームサーバーから切断されてしまいます。
切断されるとステータスバーのオンラインアイコンは消えます。
再接続できない場合は、時間をおいてみるとできるかもしれません。
ユーザーインターフェイスは日本語を選択できますが、一部の機能はサーバー側の言語設定によって制限を受けます。日本語以外のゲームサーバーに参加する場合には注意が必要です。(以下の説明の例はサーバー側が英語、クライアント側が日本語の場合です)
クライアント | サーバー |
本家フォーラム参照先: https://forum.simutrans.com/index.php/topic,8230.0.html
Simutransをサーバーモードで起動するには、コマンドラインに「-server」をつけて起動します。(メモ/ショートカットの作り方)
書式
-server [TCPポート番号]
ポート番号は省略できます。省略した場合のデフォルトは13353です。
起動後は新規マップを作成するか、既存のゲームを読み込みます。
なお「server13353-network.sve」というファイルがすでに存在する場合は、このゲームファイルが自動的に読み込まれます。
(13353はポート番号です。使用しているポートごとに名前が異なります。)
ゲームは新規マップの作成時とプレイヤーのログイン時のみに自動保存されます。(ユーザーディレクトリのルートに「server13353-network.sve」というような名前で保存されます。13353はポート番号です。)
新規ゲーム作成前の注意
ゲーム開始直後にすること
ゲームは一人もプレイヤーがログインしていない状態でも常に進行しています。OpenTTDのように一時停止状態で待機させることはできません。
111.0以降でできるようになりました。simuconf.tabで「pause_server_no_clients=1」と指定します。
ゲームの情報ウィンドウでサーバー側のリビジョン情報を表示させるためには、ソースコードのコンパイル時に指定する必要があります。
リビジョン情報はサーバーを立てる場合に必ずしも必要なものではありません。参加プレイヤーがサーバーと同じリビジョンのゲームエンジン本体とpakセットが入手できれば、それで問題ありません。
svnのリビジョン番号(数値のみ)です。gitのハッシュなどは利用できません。
フラグにREVISIONをつけて、コンパイルします。
FLAGS = -DREVISION="3991"
svnを使用している場合は
WITH_REVISION = 1
で自動的に付加してくれるらしいです。
詳しくは「config.template」ファイル内に記述されています。
pakセットの場合は、.datファイルで「ground.Outside.pak」のcopyrightに、識別するための文字列を設定します。
obj=ground name=Outside copyright=pak64 r333M # hangtyp * animation image[0][0]=outside.0.0
ネットワークゲームの情報は http://servers.simutrans.org/list でアナウンスすることができます.サーバーをアナウンスすると,世界中のSimutransプレイヤーにサーバーの存在を知らせることができます.
ネットワークゲームをアナウンスする方法はいくつかあります.アナウンスされたサーバー情報は日本国外の人々も参照することを考え,アナウンスする情報は英語で設定すると良いでしょう.
以下のコマンドで起動すると,servers.simutrans.org にネットワークゲームをアナウンスできます.(my.domain.comにMy Server Nameという名前のサーバーが建ったという意味)
simutrans -server -announce -server_dns my.domain.com -server_name "My Server Name"
server_dns は接続先アドレスを表すので,IPアドレスでもOKです.server_nameの設定は任意です(が,名前ぐらいはつけたほうがよいでしょう).
サーバーアナウンスに関する項目は,simuconf.tabから設定できます.各項目についてはsimuconf.tabのページを参照してください.サーバーアナウンスについて以下の項目を設定できます.なお,接続先およびON/OFF以外の設定は任意です.
※Ubuntuの使用を想定、本体バージョンは編集時点の最新(124.2.2)を使用
サーバー向けのビルド方法はLinuxでのビルド方法(posix版/サーバー用)をご参照いただきたい。
simutrans-master ┣ build ┃┗ default ┃ ┣ nettool ┃ ┃ ┗ nettool ┃ ┗ sim ┣ simutrans ┃┣ text ┃┗ config ┣ Makefile ┗ config.default
simutrans-master ┣ simutrans ┃┣ text ┃┣ config ┃┣ nettool ┃┃ ┗ nettool ┃┗ sim ┣ Makefile ┗ config.default
./sim -server (ポート番号) -objects (pakフォルダ名) -lang ja -set_userdir . -load (sveファイル).sve -server_admin_pw XXXX
./sim -server (ポート番号) -objects (pakフォルダ名) -lang ja -load (sveファイル).sve -server_admin_pw XXXX
上記の方法で起動したSimutransサーバーは、クライアント側のSSH接続を切ると一緒にサーバーも落ちてしまうので、systemdに登録しバックグラウンドで常時稼働するようにします。
(実行ファイルへのフルパス)/sim -server (ポート番号) -objects (pakフォルダ名) -lang ja -load server(ポート番号)-network.sve -server_admin_pw XXXX
[Unit] Description=Simutrans [Service] User=(ユーザー名) ExecStart=/bin/bash (start.shへのフルパス)/start.sh
上述の通り、Simutransサーバーはユーザーが参加/退出する度にゲームが保存されますが、ゲームがクラッシュすると場合によってはセーブデータが破損し、読み込めなくなる恐れがあります(それでも参加者からclient(ポート番号)-network.sveを貰ってくれば済む話ですが)。
そこで、nettoolとcronを使い定期的にサーバー側でゲームを保存することで万一のクラッシュに備えます。
#!/bin/sh (nettoolへのフルパス)nettool -p XXXX force-sync wait sleep 10 cp -f /home/(ユーザー名)/simutrans/server(ポート番号)-network.sve (任意のフォルダ)/`date '+%Y%m%d-%H%M'`.sve
crontab -e
0 */2 * * * bash (autosave.shへのフルパス)autosave.sh
参考リンク
サーバーリストに表示されているgift.physik.tu-berlin.deは、simutransの開発者がデバッグ目的に公開しているテストサーバーです。pak64を使用しています。
デバッグ目的ですので、定期的にリセットされたり、本体やpakセットのリビジョンが最新のものに変更されたりする可能性がありますが、本体やpakセットはナイトリーサイトで入手できる可能性が高いです。
ただし言語にドイツ語が設定されていますので、車庫ウィンドウや乗り物の名前などで、ちょっと戸惑うかもしれません。
このサーバーの最新情報は、英語フォーラム:5877にあります。
2011/05/06追記
gift.physik.tu-berlin.deでのゲーム提供は終了したそうです。