はじめに
2015年3月、Epic Gamesはオープンソースコミュニティに目を向け、 Unreal Engineバージョン4への無料アクセスを提供しました(エンジンの使用による利益の制限を四半期あたり3,000ドルに設定)。 さらに、 2014年に、同社は無料のオペレーティングシステム、特にLinuxのサポートが優先課題の1つであると述べました。

これらの単語が空のフレーズにならなかったことは注目に値し、今日のエンジンはLinux環境で非常に自信を持って動作します。 このOSの環境にエンジンをインストールおよび構成する方法について説明する公式ドキュメントが十分にあります。
ただし、作業環境を展開するプロセスの透明性は明らかですが、ペンギンのファンにとって生活を困難にしている小さなが不快なニュアンスがいくつかあります。 カットの下で、著者が遭遇したエンジンのインストール機能の短い自由な説明は、初心者が遭遇するいくつかの困難を解決するように設計されています。
1.ソースデータ
そのため、オペレーティングシステムとしてArch Linuxディストリビューションを使用したコンピューター(CPU:Intel Core i7-2600K、RAM:16Gb、ビデオ:GeForce 580GTX)があります。
カスタムAURリポジトリにこのディストリビューション用のパッケージがあります。 パッケージに関するコメントから判断すると、パッケージは機能します。原則として、パッケージを使用してエンジンをインストールできます。 パッケージコレクターがリポジトリを長時間クローンするまで待ちます。 リリースブランチの合計サイズが1.5〜2 GBの場合、クローニングプロセスは81%フリーズし、ネットワークから約4ギガバイトを引き出します。 このプロセスの終了を待つ忍耐がありませんでした。
したがって、エンジンをパッケージにラップせずにソースから収集し、エンジンのインストールは通常必要ないという事実を動機付けて、別の方法で行います。 次のパッケージがシステムにインストールされていることを確認してください。
- clang-LLVMコンパイラのC / C ++フロントエンド
- python-Pythonインタープリター
- qt4-C / C ++開発用のクロスプラットフォームフレームワーク
- sdl2-マルチメディアを操作するためのクロスプラットフォームライブラリ
- icu-アプリケーションを国際化するためのUnicodeライブラリのコンポーネント
- mono-.Net Frameworkの無料実装
- xdg-user-dir-「ドキュメント」、「画像」などの「制御」ユーザーディレクトリ X Window Systemの一部として
- git-同じ名前のバージョン管理システムを操作するためのクライアント
2. Unreal Engineソースの取得
この手順は、Epic Gamesの公式Webサイトで詳しく説明されています。 エンジンのソースコードリポジトリはプライベートなので、最初にEpic Gamesアカウントを取得する必要があります。 さらに、 Githubでアカウントを作成する必要があります。このアカウントに対して、前述のオフィスがリポジトリへのアクセスを許可します。 ここで特にコメントすることはありません。手順は非常にシンプルで理解しやすいものです。
リポジトリへのアクセスを取得した後、エンジンが配置されるファイルシステムにディレクトリを作成し、そこに移動してスペルを言います
$ git clone https://github.com/EpicGames/UnrealEngine.git -b release
エンジンのリリースブランチがロードされるのを待ちます。 このプロセスは、Aurovsky PKGBUILDを使用するよりも高速ではありません。
3.エンジンアセンブリ:レーキレース
ソースを受け取ったら、ディレクトリに移動します
$ cd UnrealEngine
そのような写真を見て
$ ls -la
80
drwxr-xr-x 6 maisvendoo users 4096 4 18:02 .
drwxr-xr-x 27 maisvendoo users 4096 5 15:29 ..
-rw-r--r-- 1 maisvendoo users 382 4 17:50 .editorconfig
drwxr-xr-x 11 maisvendoo users 4096 4 17:50 Engine
-rw-r--r-- 1 maisvendoo users 418 4 17:50 GenerateProjectFiles.bat
-rwxr-xr-x 1 maisvendoo users 241 4 17:50 GenerateProjectFiles.command
-rwxr-xr-x 1 maisvendoo users 715 4 17:50 GenerateProjectFiles.sh
drwxr-xr-x 8 maisvendoo users 4096 4 18:01 .git
-rw-r--r-- 1 maisvendoo users 511 4 17:50 .gitattributes
-rw-r--r-- 1 maisvendoo users 3732 4 17:50 .gitignore
-rw-r--r-- 1 maisvendoo users 195 4 17:50 LICENSE.md
-rw-r--r-- 1 maisvendoo users 9472 4 17:50 README.md
drwxr-xr-x 4 maisvendoo users 4096 4 17:50 Samples
-rw-r--r-- 1 maisvendoo users 1304 4 17:50 Setup.bat
-rwxr-xr-x 1 maisvendoo users 208 4 17:50 Setup.command
-rwxr-xr-x 1 maisvendoo users 1345 4 17:50 Setup.sh
drwxr-xr-x 28 maisvendoo users 4096 4 17:50 Templates
-rw-r--r-- 1 maisvendoo users 269 4 17:50 UE4Games.uprojectdir
アセンブリの手順は、公式Webサイトのドキュメントと公式Wikiで提供されています 。 ただし、Arch Linuxの場合、Wikiには驚くべきレプリカがあるため、この指示に従うことを急がないでください。
Arch Linuxユーザーは、開発(デフォルト)が機能しない場合は、デバッグプロファイルを使用してエディターをビルドしてください。
エディタのデバッグバージョンのアセンブリの形式で厄介な松葉杖を使用するように公式に提供します。 同時に、エディターに加えて、シェーダーコンパイラーとエンジンに含まれる他のいくつかの補助ユーティリティも構築する必要があることを完全に忘れてしまいます。 開発者が提案したパラメータを使用してビルドしようとすると、次の形式のメッセージが表示されて中断されます。
/usr/bin/ld: /mnt/data/install/ue4-test/Engine/Source/ThirdParty/FreeType2/FreeType2-2.6/Lib/Linux/x86_64-unknown-linux-gnu/libfreetype.a(ftlzw.co): relocation R_X86_64_32S against `.text' can not be used when making a shared object; -fPIC
/usr/bin/ld: /mnt/data/install/ue4-test/Engine/Source/ThirdParty/zlib/v1.2.8//lib//Linux/x86_64-unknown-linux-gnu/libz.a(uncompr.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; -fPIC
/usr/bin/ld: final link failed: ,
clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
ERROR: UBT ERROR: Failed to produce item: /mnt/data/install/ue4-test/Engine/Binaries/Linux/CrashReportClient
Total build time: 196,17 seconds (Local executor: 0,00 seconds)
make: *** [Makefile:252: CrashReportClient-Linux-Shipping] 5
この問題はAURのunreal-engineパッケージのメンテナーに知られているので、ソースにこれを修正するパッチを適用することを提案します。 この問題は、Arch Linuxでのgccおよびclangビルドパラメーターの変更に関連しています。 例については、こちらをご覧ください
SSPおよびPIEは、安定リポジトリのgcc(コミット)およびclang(コミット)で有効になりました。
これらの変更により、これらのコンパイラでビルドされたバイナリの潜在的なセキュリティホールを悪用することが難しくなります。
これについてのいくつかの議論は、arch-dev-publicメーリングリストで見つけることができます(「コンパイルフラグの変更」をテーマに)。
Position Independent Executables(PIE)を有効にすると、コンパイルされたエンジンライブラリのABIレベルの互換性が失われ、上記のレイアウトエラーが発生します。 したがって、通常の組み立てでは、このオプションをオフにします。
設定を変更するには、 UBTスクリプトを選択する必要があります。 エンジンは独自のビルドシステムを使用し、そのスクリプトはC#で記述されています。 ファイルEngine / Source / Programs / UnrealBuildTool / Platform / Linux / LinuxToolChain.csを開き 、必要な設定を追加します。 変更を説明するために、git diffエキゾーストを指定します
--- a/Engine/Source/Programs/UnrealBuildTool/Platform/Linux/LinuxToolChain.cs
+++ b/Engine/Source/Programs/UnrealBuildTool/Platform/Linux/LinuxToolChain.cs
@@ -377,6 +377,9 @@ namespace UnrealBuildTool
Result += " -Wno-invalid-offsetof";
// we use this feature to allow static FNames.
Result += " -Wno-gnu-string-literal-operator-template";
+// disable unused result's warnings
+Result += " -Wno-unused-result";
-Wno-unused-resultオプションは、関数によって返される未使用の結果に関する警告をオフにします
@@ -402,6 +405,7 @@ namespace UnrealBuildTool
Result += " -fno-inline";
Result += " -fno-omit-frame-pointer";
Result += " -fstack-protector";
+ Result += " -fno-pie";
@@ -588,6 +592,8 @@ namespace UnrealBuildTool
Result += " -Wl,--disable-new-dtags";
+ Result += " -nopie";
+ Result += " -Wno-unused-command-line-argument";
-fno-pieおよび-nopieスイッチを使用して、コンパイラーとリンカーのPIEを無効にします。 -Wno-unused-command-line-argumentスイッチは、不明なコマンドラインパラメーターに関する警告を無効にします。
構築を開始する前に、シンボリックリンクを作成します
$ sudo ln -s /usr/include/locale.h /usr/include/xlocale.h
「xlocale.hが見つかりません」というエラーを警告します。
記載されている問題は、AURでソースに一連のパッチを重ねることで解決されます。原則として、読者がこのパスに従うことを禁止する人はいません。
説明した準備の後、スクリプトを実行します
$ ./Setup.sh
このスクリプトは、必要なサードパーティライブラリをダウンロードして収集します。 次に、スクリプトを実行します
$ ./GenerateProjectFiles.sh
Unrealビルドシステムをアクティブにし、make、cmake、qmake、MS Visual Studio、KDevelop、CodeLiteを使用してプロジェクトをビルドするためのファイルを生成します。 明確な良心を持ってスクリプトの最後に、コマンドを与えます
$ make
収集スレッドの数を指定するために-jスイッチを使用しないでください。 Makefileは、マシンで使用可能なすべてのスレッドでのアセンブリの並列化を考慮して生成されます。
ビルドプロセスはエラーなしで実行され、しばらく時間がかかります。私のシステムでは約40分です
[1367/1372] Link libUE4Editor-UE4Game.so
[1368/1372] Link libUE4Editor-Advertising.so
[1369/1372] Link libUE4Editor-BlankModule.so
[1370/1372] Link libUE4Editor-IPC.so
[1371/1372] Link libUE4Editor-BlankPlugin.so
[1372/1372] Link libUE4Editor-XGEController.so
Total build time: 2560,27 seconds (Local executor: 2481,53 seconds)
エンジンのデバッグバージョンも収集します
$ make DebugSet
4. Qt Creatorでクイックスタートを作成する
組み立てたUE4エディターを起動します
$ cd Engine/Binaries/Linux
$ ./UE4Editor
シェーダーがコンパイルされるまで辛抱強く待ちます(コンパイル結果はキャッシュされ、次の起動はより速くなります)。 コンパイルの最後に、C ++で新しいプロジェクトを作成します

プロジェクトのあるパスを選択し、QuickStartという名前を付けて、緑色のCreateProjectボタンを押します。 エディターがプロジェクトファイルを生成するまで待機します。 生成が終了すると、エディターが閉じます。 WindowsでMS Visual Studioを使用している場合は、この特定のIDEを開いて、コーディングを開始できます。 アルカでは何も起こりません。 したがって、プロジェクトの作成時に指定したパスに従い、そこで生成されたものを確認します
$ ls -l
4728
-rw-r--r-- 1 maisvendoo users 1999696 7 00:06 CMakeLists.txt
drwxr-xr-x 2 maisvendoo users 4096 7 00:05 Config
drwxr-xr-x 2 maisvendoo users 4096 7 00:05 Content
drwxr-xr-x 4 maisvendoo users 4096 7 00:06 Intermediate
-rw-r--r-- 1 maisvendoo users 16777 7 00:05 Makefile
-rw-r--r-- 1 maisvendoo users 350169 7 00:06 QuickStartCodeCompletionFolders.txt
-rw-r--r-- 1 maisvendoo users 14860 7 00:06 QuickStartCodeLitePreProcessor.txt
-rw-r--r-- 1 maisvendoo users 60261 7 00:06 QuickStartConfig.pri
-rw-r--r-- 1 maisvendoo users 22114 7 00:06 QuickStartDefines.pri
-rw-r--r-- 1 maisvendoo users 908626 7 00:06 QuickStartHeader.pri
-rw-r--r-- 1 maisvendoo users 220484 7 00:06 QuickStartIncludes.pri
-rw-r--r-- 1 maisvendoo users 59 7 00:05 QuickStart.kdev4
-rw-r--r-- 1 maisvendoo users 17091 7 00:06 QuickStart.pro
-rw-r--r-- 1 maisvendoo users 722630 7 00:06 QuickStartSource.pri
-rw-r--r-- 1 maisvendoo users 224 7 00:05 QuickStart.uproject
-rw-r--r-- 1 maisvendoo users 462378 7 00:06 QuickStart.workspace
drwxr-xr-x 3 maisvendoo users 4096 7 00:05 Source
OK、エディタはソース(ソースディレクトリ)と、qmakeの* .proスクリプトを含むいくつかのプロジェクトファイルを作成しました。 Qt Creatorを実行して、QuickStart.proを開きます。

表示されるウィンドウで、「プロジェクトの構成」をクリックします。 Qt Creatorのセットアップについては、エンジンの公式ドキュメントで詳しく説明されています。 設定のいくつかのポイントのみに焦点を当て、設定のスクリーンショットを提供します
ビルド設定のデバッグ

リリースビルドのカスタマイズ

起動セットアップ

すべての設定が完了したら、Ctrl + Rを押してプロジェクトを開始します。 質問に私たちに尋ねた

私たちは肯定で答えます。 エンジンはもう少し考え、シェーダーをコンパイルし、最終的にプロジェクトを取得し、公式ドキュメントからクイックスタート演習に取り組む準備が整います 。

結論の代わりに
プロジェクトを適切にセットアップすると、次のトリックが可能になります。 開いているプロジェクトで、F10をクリックします

ええ、エンジンのソースコードの可用性は、ゲームコードをデバッグするだけでなく、エラーの原因を特定するために必要なエンジン自体のコードをトレースする機会を与えてくれます。 このエピックゲームズでは、無料でエンジンを提供している他のオフィスよりも 、ユーザーにとって非常にフレンドリーに見えます。