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
上記の手順で、無事サーバーを立ち上げることができました!大変だった...!
この記事が気に入ったらサポートをしてみませんか?