LoginSignup
3
1

More than 1 year has passed since last update.

UE4でビルドしたLinux用DedicatedServerのビルドをWindows Subsystem for Linuxで起動してみる

Last updated at Posted at 2022-02-11

初めに

この記事では、UE4でLinux用のパッケージ化できる状態から、Linux DedicatedServerをWSLを用いてLocalで起動して、Windows Clientアプリで接続するまでについて説明します。

クラウドや実際にホスティングをする前に、手元でデバックや挙動を確かめておきたいことがよくあると思います。ここでは、Windows上で、簡単にLinuxのサブシステムを動かすことができるWSLを用いて、サーバーでの挙動の確認を行っていきます。

前提

  • ソースからUE4のビルドができている。

  • Linux用のパッケージ化がEditorからできるようになっている。

開発環境

Setup

まず初めに、パッケージ化したいプロジェクトファイルのDefaultEngine.iniファイルに、Linuxのターゲット設定を追記します。

[/Script/LinuxTargetPlatform.LinuxTargetSettings]
TargetArchitecture=X86_64UnknownLinuxGnu

image (20).png
(この追加作業は、現場のUE4.27では必要ないかもしれません。)

DefaultEngine.iniファイルは、[ProjectRoot]/Config/DefaultEngine.iniにあります。

さらに、[ProjectRoot]/SourceにServerとClientのターゲットファイルを追加します。

image (21).png

例えば、Server用のターゲットファイルには、

using UnrealBuildTool;
using System.Collections.Generic;

public class LinuxSampleServerTarget : TargetRules
{
	public LinuxSampleServerTarget(TargetInfo Target) : base(Target)
	{
		Type = TargetType.Server;
		DefaultBuildSettings = BuildSettingsVersion.V2;
		ExtraModuleNames.Add("LinuxSample");
	}
}

のように、プロジェクトファイル生成時に生成されるLinuxSmapleEditorファイルをコピーした内容から、Editor部分をServerやClientという文字列に置き換えたファイルを追加します。この設定を行い、再度プロジェクトファイルを右クリックから、Generate Visual Studio project filesをすると、

image (22).png

パッケージする設定から、どのビルドターゲットにするかを選択できるようになります。

image (30).png

Build

ここまでの設定が完了したら、プロジェクトファイルを開き、Package ProjectからBuild ConfigurationをDevelopmentに、先ほどのBuild TargetをServerにした状態で、Linuxのビルドを行います。

image (23).png

今回は、パッケージ化したファイルをプロジェクトフォルダー内のPackagesフォルダーに保存します。例えば、以下のようにプロジェクトファイル名 + Serverというファイルが、以下のパスにあることが確認できるともいます。

image (31).png

この作業は、VSからも以下のようにターゲットをServer、プラットフォームをLinuxに設定してビルドすることでも必要なファイルを手に入れることができます。

image (26).png

同じ手順で、windowsのclientアプリに関してもビルドしておきます。

image (28).png

Usage

これまでで必要なパーツが揃ったので、実際にWSLを用いてLinux 上で先ほどのビルドを立ち上げていきます。

今回は、Microsoft StoreにあるUbuntu 18.04 LTSを利用します。WSL2からlocal hostへのアクセスがそのままではできないので、WSL上のIPを

ip -4 addr show eth0

で取得します。

can't access 127.0.0.1:80 outside of WSL2 / Ubuntu 20.04

このIPにWindowsのClientアプリからアクセスすることで、サーバーにアクセスできるように、先ほどのビルドを起動します。

Linuxのビルドは、私の場合は、 /mnt/c/UE/MySample/LinuxSample/Packages/LinuxServer/LinuxSample/Binaries/Linux/

にあるので、

cd /mnt/c/UE/MySample/LinuxSample/Packages/LinuxServer/LinuxSample/Binaries/Linux/
./LinuxSampleServer xxx.xx.xxx.xxx -log

で起動します。-logをつけることで、Serverのlogを見ながら接続が可能になります。また、xxx.xx.xxx.xxxには、先ほどip addr showで取得したIPを入力してください。

この状態で、今度は、Windowsのcmdなどで、Clientアプリを起動します。起動は、

{Clientアプリ実行ファイルまでのpath}/LinuxSampleClient -log xxx.xx.xxx.xxx -windowed resx=720 resy=480

とすることで、適当なサイズのwindowでサーバーへ接続するwindowsのアプリケーションを立ち上げることができます。

image (32).png

#Reference

3
1
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
3
1