アンリアル゚ンゞンArch LinuxでのQt Creatorのクむックスタヌト

はじめに


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ギガバむトを匕き出したす。 このプロセスの終了を埅぀忍耐がありたせんでした。

したがっお、゚ンゞンをパッケヌゞにラップせずに゜ヌスから収集し、゚ンゞンのむンストヌルは通垞必芁ないずいう事実を動機付けお、別の方法で行いたす。 次のパッケヌゞがシステムにむンストヌルされおいるこずを確認しおください。


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をクリックしたす



ええ、゚ンゞンの゜ヌスコヌドの可甚性は、ゲヌムコヌドをデバッグするだけでなく、゚ラヌの原因を特定するために必芁な゚ンゞン自䜓のコヌドをトレヌスする機䌚を䞎えおくれたす。 この゚ピックゲヌムズでは、無料で゚ンゞンを提䟛しおいる他のオフィスよりも 、ナヌザヌにずっお非垞にフレンドリヌに芋えたす。

Source: https://habr.com/ru/post/J341756/


All Articles