1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

令和の時代に懐かしのYSFlight鯖を立てる

Posted at

前書き

皆さん、YSFlight Simulatorというソフトをご存知でしょうか。
Windows98レベルのPCでも動作する(※必ずしも快適であるとは言っていない)フリーのフライトシミュレーターです。

各種優れたアドオンを以てしても、けっしてリッチであるとは言えない描画ですが、フライトシミュレーターとして必要な要素はほぼ全て揃っています。
ネットワーク対戦機能さえ備え、その気になればMODを自作して突っ込める自由度の高さ。
ただ飛ばすも良し、空対空・空対地・空対艦任務をこなすも良し、何なら艦対艦・地対地もできなくはない。
最新鋭の重グラフィックボードを必要としない軽量性など、国内・海外を問わず根強いユーザーが存在するソフトウェアです。
今回、久し振りにYSFlightを飛ばしてみたくなり調べてみたところ、令和5年6月15日時点でQiitaには1つも記事がないことを知り(そもそもYSFlightの記事をQiitaに書こうという人種がアレすぎるきらいはありますが)、じゃあどうせならネットワーク鯖を構築してみるか!と思い、筆を取ってみた次第です。

仕様

今回はお家クラウドの仮想化基盤上に載せたUbuntuServer22.04LTSの上で、YSFlightのネットワーク鯖を動かし、これをVultrのVPSを介してインターネットに公開してネットワークプレイが出来る状態を目指します。

  • UbuntuServer22.04LTS(8vCPU、8GBメモリ、100GB SSD)
    on Hyper-V Server 2019(Xeon E5-2650L/64GB Dual Channel/2TB NVMe SSD)

ネットワークについては下掲記事にて構築したものを流用します。

環境整備

VultrのFirewallとVPSの双方でTCPポート7915を開放します。
VPSのUFWの場合は以下のようになるでしょう。

/etc/ufw/before.rules
-A PREROUTING -i enp1s0 -p tcp --dport 7915 -j DNAT --to-destination <<YSFlightサーバーのIP>>

続いて、UbuntuServer22.04LTSを普通にHyper-V上にインストールします。
インストールウィザードであらかじめ任意のIPを設定する他、SSHもインストールしましょう。
Windows Admin Center越しに設定するとキーボードの入力通りのパスワードが設定されないので、簡単なパスワードを設定の上で、SSHに切り替えた際に変更することをお勧めします。
再起動後、SSHでログインします。
Netplanを編集してIPアドレスや時刻設定やアップデートを適用して、UFWで以下のポートを開けておきます。

sudo ufw allow 7915/tcp

YSFlightを公式ミラーサイトからダウンロードします。

wget https://forum.ysfhq.com/download/file.php?id=499 ysflight.zip
sudo unzip ysflight.zip

インストールスクリプトがありますのでコマンドを叩きます。

sudo python3 ~/Ysflight/InstallInLinux.py

これで /root/YSFLIGHT.COM/ysflight にYSFlightがインストールされました。
YSFlightのサーバーは常駐させたいので、サービスファイルを作成します。

/etc/systemd/system/ysflight.service
[Unit]
Description=YSFlight Simulator
After=network.target

[Service]
Type=Simple
Restart=on-failure
ExecStart=/root/YSFLIGHT.COM/ysflight/ysflight64_nownd -server <<サーバー名>>

[Install]
WantedBy=multi-user.target

<<サーバー名>>、及びそれ以降の引数は任意の値に置き換えてください。
保存したら、

sudo systemctl enable ysflight.service

してサービスを有効化します。「 sudo systemctl status ysflight.service 」して値がFailedになっていなければ成功です。

動作確認

YSFlightをインストールしたPCを用意します。今回はその辺で埃を被っていたWindows10のPCを使います久しぶりに動かしたらSATA SSDがプチフリしまくりでやっぱSATA SSDはダメだなと思いました

  • Windows 10 Pro
    CPU:Core i7-2600
    MEM:DDR3 16GB
    SSD:SATA 1TB
    GPU:GeForce GTX 1050 2GB

公式ミラーサイトから最新版を拾ってきて解凍し、適当なフォルダに放り込みます(今回はProgram Files (x86)に放り込みましたが任意の場所で構いません)。
スクリーンショット 2023-06-17 17.41.21.png
中に入っているプログラム本体から、今回は「 ysflight32_gl2.exe 」を選択します。
スクリーンショット 2023-06-17 17.41.41.png
初回起動時の説明をサラッと流し読んで初期画面に到達したら、「ネットワーク(M)」 -> 「クライアント(C)」と進みます。
スクリーンショット 2023-06-17 17.42.11.png
左上にネットワークを指定するダイアログが出ますので、ユーザ名とサーバーホスト名(IPアドレス)を入力して「確定」をクリックします(特別にポート指定がある場合を除いて、通常はサーバーポート番号は変更しなくて大丈夫です)。
スクリーンショット 2023-06-17 17.43.10.png
するとIFF(敵味方識別装置)のコードや航空機、開始位置を選択する画面になります。
スクリーンショット 2023-06-17 17.43.21.png
今回は自由飛行を選択してありますので、IFFは特に触りません。「航空機選択」をクリックします。
スクリーンショット 2023-06-17 17.43.46.png
お好きな機種を選んで「確定」を押して前の画面に戻り、「飛行開始」をクリックします。
スクリーンショット 2023-06-17 17.44.14.png
初期位置が上空なのでいきなり空中に放り込まれます。通信量が少なくて大変心配になるのですが、この画面まで辿り着いたということはネットワーク戦モードがきちんと動いているということになります。
本当はジョイスティックで操作した方が本格感があるのですが、残念ながら処分してしまいましたのでマウスとキーボードで何とかしました(Escキー押しまくれば解脱できます)。

後書き

以上駆け足でしたが、令和の時代にYSFlight鯖を立てることが出来ました。
取り敢えず立ち上げまでということで、引数を何も細かく設定していませんが、色々触ってみると良いと思います。
至極あっさり「出来ました」と書いていますが、裏では丸一日ぐらいUFWの設定ミスと格闘していました。誰だDENYをポートレンジで指定したのは!!!!!(お前だ
この記事が誰かの参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?