LinuxでTerraria v1.4サーバを立てる

僕史上最高の2Dアクションゲーム、Terrariaが遂にv1.4 - The Journey’s Endにアップデートされました。
となると、​当然やらねばならないのです。友達とMagic Mirrorを取りに行かなければならないのです。サーバを立てなければならないのです。

この記事には、僕がVPSでTerraria v1.4 サーバを立てた時の手順を備忘録として残しておきます。結構詰まった。

VPSを借りる

まずはサーバを立てるためにVPSを借りる必要があります。もしかしたら専用サーバを貸し出してるところもあるかもですが、Mod入れたりするなら柔軟性の高いVPSを借りたほうがいいと思います。分かんないけど。

僕はVultrの2GBプランを借りました。2, 3人でやるつもりだったので2GBにしましたが、もっと大人数でやる or Modモリモリでやるなら4GBにしたほうがいいかもです。Vultr、あんまり有名じゃないんですけど、Tokyoリージョンもあるし、コンソールのUIもイケてるし、価格も安いしで最強なんじゃないかと思ってます。(2GBは10$/月!)
興味のある方はこちらのリンクから登録すれば100$分無料で使えるので是非。

OSはUbuntu 20.04 x64を選択しましたが、CentOSとかでも大丈夫なはず。Windowsは価格が倍になるのでオススメしません。でも、TerrariaのサーバはWindowsで動くようにできているので、煩わしい作業が嫌いならWindowsサーバを借りるのもアリかもしれません。

SSH、ファイアーウォールの設定などは一旦飛ばします。本題ではないので。

サーバーの立ち上げ

上記のページに詳しくかいてありますので、その手順をそのまま行います。

1. 準備
まず、これからの手順で必要になるパッケージをインストールしておきます。これはUbuntu用なので、他の環境であれば、適した手順でインストールしておいてください。

sudo apt update && sudo apt install -y wget tmux unzip

2. サーバーファイルを落としてくる
立てたいバージョンのファイルを落としてきます。例はv1.4.0.3の時です。

wget https://terraria.org/system/dedicated_servers/archives/000/000/037/original/terraria-server-1403.zip

3. zipを解凍する

unzip terraria-server*

4. ディレクトリを移動
v1.4.0.3の時は1403ですが、バージョンが変われば多分ここも変わります。

cd 1403
cd Linux

5. サーバーファイルに実行権限を与える
デフォルトだとバイナリが実行できないので、権限を与えます。

sudo chmod +x TerrariaServer.bin.x86*

6. 実行!

./TerrariaServer.bin.x86_64

海外wikiに載っている手順では、この後にバックグラウンド実行の方法などを載せていますが、今回は割愛します。
何はともあれ、ここまでの手順でサーバーが立ち上がるはずです。はずですが...僕は立ち上がりませんでした。エラーログの羅列が現れ、サーバーはクラッシュしてしまいます。僕は泣きました。

エラーが出たら

[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'Microsoft.Xna.Framework.FNAPlatform' threw an exception. ---> System.TypeIni
tializationException: The type initializer for 'System.Console' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.ConsoleDriver'
threw an exception. ---> System.Exception: Magic number is wrong: 542

サーバーを立ち上げたあと、上記のエラーが表示され、クラッシュしてしまいました。ググってみると、環境変数を設定してあげればいいだけのようでした。

export TERM=xterm
echo $TERM

環境変数を設定後、再度サーバの立ち上げを試みると、先程とは違うエラーが表示されて、またしてもクラッシュしてしまいました。

System.MissingMethodException: Method not found: int System.Collections.HashHelpers.GetMinPrime()
at System.Collections.Generic.HashSet`1[T]..ctor (System.Collections.Generic.IEnumerable`1[T] collection) [0x00007] in <5f01f5aacbb346938d6f9b4e69d4383a>:0
...

結論からいうと、落としてきたzipの中にあるmono周りの設定が間違っているらしく、自分らで設定してあげる必要があるようです。Redditに詳しく書いている方がいたので、そちらを試してみます。

1. monoをインストール/アップデート
https://www.mono-project.com/download/stable/#download-lin-ubuntu に載っている手順で、monoをインストールします。
Redditのコメント主さんはmono-completeをインストールしているようなので、僕もそちらをインストールしました。

sudo apt install mono-complete

2. ファイル削除

zipの解凍先に移動し、

> pwd
pathto/1403/Linux

以下のようにして、ファイルを削除します。

rm System*
rm Mono*
rm monoconfig
rm mscorelib.dll

削除後、ディレクトリ内は以下のようになっているはずです。

changelog.txt
client-crashlog.txt
FNA.dll
FNA.dll.config
lib
lib64
monomachineconfig
open-folder
Terraria.png
TerrariaServer
TerrariaServer.bin.x86
TerrariaServer.bin.x86_64
TerrariaServer.exe
WindowsBase.dll

確認後、サーバーを立ち上げます。

mono --server --gc=sgen -O=all ./TerrariaServer.exe

上記の手順で、無事サーバーを立ち上げることができました!大変だった...!

この記事が気に入ったらサポートをしてみませんか?