SlideShare a Scribd company logo
「Press Button, Drink Coffee」
UE4における
ビルドパイプラインとメンテナンスの全体像
#UE4 | @UNREALENGINE
自己紹介
Axel Riffard アクセル リファール
Epic Games Japan / Support Engineer
● Twitter : @AxRiff
● 趣味はPerfume、ベイスターズ、ウイスキー
● 今プレイしてるゲーム: Control (Remedy大好き)
#UE4 | @UNREALENGINE
序文
ゲームを作るのはもちろん楽しいですが、自動化と最適化はさらに楽しいと思い
ます。
幸せといえば、書いたスクリプトのロードバーの進行を見ることです。(変なフェチかも)
UE4における、毎日の作業を楽にする機能を紹介します。
#UE4 | @UNREALENGINE
免責条項
完璧なパイプラインなんて存在しない。
会社の文化、チームのスキル、社内のインフラ、プロジェクトの予算、使いたい
技術、ターゲットプラットフォームによって、一番良い選択が変わってしまう。
一番頼れるのは、今までの経験です。これから紹介する技術と伝えるアドバイス
は、個人の経験のまとめとエピック内のワークフローだけです。自分の経験を信
用するのが一番です。
#UE4 | @UNREALENGINE
目次
●CIとは
●UnrealAutomationTool
●エンジンとプロジェクトビルドの作業
●その他のビルド作業
●The Unreal Way
#UE4 | @UNREALENGINE
目次
●CIとは
●UnrealAutomationTool
●エンジンとプロジェクトビルドの作業
●その他のビルド作業
●The Unreal Way
#UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
どうしてこんな恐ろしいことが起きるのか
Dev
2
Dev
1
Dev
3
バージョン管理
しすてむ
#UE4 | @UNREALENGINE
● 更新したら、ローカルでエラーが出ていてビルド出来ない
● そのエラーを解決しようとしたら、遡りづらい
● 喧嘩したり、チーム内のコミュニケーションが複雑になる
● コミットすることでビルドを壊すかどうか不安になる
● ゲームのビルドを作ろうとしたら、時間かかって、その間は仕事できない
どうしてこんな恐ろしいことが起きるのか
#UE4 | @UNREALENGINE
CIソフトウェア
CI = Continuous Integration、継続実装
ソフトウエアとハードウエアの組み合わせで、
毎日のソースとアセットの実装と更新を管理してくれるソリューション
#UE4 | @UNREALENGINE
どうしてこんな恐ろしいことが起きるのか
Dev
2
Dev
1
Dev
3
バージョン管理
しすてむ
#UE4 | @UNREALENGINE
ソフトウェア
#UE4 | @UNREALENGINE
CIソフトウェア
今の世代で、悪い選択がないでしょう。
過去に、TeamCityとJenkinsも利用したことがあって、どっちも満足しました。
#UE4 | @UNREALENGINE
CIソフトウェア
Jenkins TeamCity
#UE4 | @UNREALENGINE
Jenkins
#UE4 | @UNREALENGINE
Jenkins
メリット:
● Free Open Source
● ドキュメンテーションとプラグインがいっぱい
● コミュニティーがデカい
デメリット:
● 公式サポートがない
● プラグインのクオリティはバラバラ
#UE4 | @UNREALENGINE
TeamCity
#UE4 | @UNREALENGINE
TeamCity
メリット
● パイプラインを作るの速い
● 公式サポートがある
デメリット
● 無料版だと機能が限られている
#UE4 | @UNREALENGINE
CIソフトウエア
日本のゲーム業界でジェンキンスが一番人気があると思うから、これからの話は
ジェンキンス中心になる。
ただ、全アドバイスとコマンドはどんなCIソフトウエアでも使える。
似てるから、ジェンキンスおじさんの変わりに、この猫を使わせていただきます。
#UE4 | @UNREALENGINE
ハードウェア
#UE4 | @UNREALENGINE
ビルドマシン
マスター → 作業を管理しているマシン、サーバー
スレーブ → 実際の作業を行うマシン
#UE4 | @UNREALENGINE
ビルドマシン
バージョン
管理DEV PC
CI Server
Master
Slack
Commit
Slave 1 Slave 2 Slave 3
Company
Server
Poll
Distribute
バージョン
管理
#UE4 | @UNREALENGINE
ビルドマシン - マシン数
プロトタイプ中:
マスターのみに1台
開発中:
マスター1台
リリースプラットフォームごとにスレーブが1台
#UE4 | @UNREALENGINE
ビルドマシン - OS
マスター:Win64かLinux
スレーブ:Win64(プラットフォームのSDKのため)、りんご系の場合はMacOS
#UE4 | @UNREALENGINE
ビルドマシン - Windows
ストレージ:SSD
メモリ:32GB~
CPU:AMD Threadripperはライセンシーにおすすめされた。
15分でフルリコンパイルできる。
#UE4 | @UNREALENGINE
ビルドマシン - MacOS
Macでコンパイルの分散が出来ないので、
シェーダーのコンパイルを考えると、
できるだけCPUのコアを多く。そろそろ発売するMacプロがいいかもしれない。
予算があまりなければ、個人的には6コアのMacミニで行けると思います。
#UE4 | @UNREALENGINE
目次
●CIとは
●UnrealAutomationTool
●エンジンとプロジェクトビルドの作業
●その他のビルド作業
●The Unreal Way
#UE4 | @UNREALENGINE
UE4のビルド
● エンジンとエンジンエディター
● ゲームのソース
● ゲームのアセット(ライト、シェーダー、etc)
● ツール
#UE4 | @UNREALENGINE
ビルドコマンド
これからCI用のビルドコマンドをいくつか紹介する。
メモしづらいと思うから、gitHubでも公開するぞ!
https://github.com/AxRiff/UnrealEngineJenkins
#UE4 | @UNREALENGINE
UnrealAutomationTool
UnrealAutomationToolは、ゲームのテストやビルドなどのプロセスを自動化す
るために使用される一般的なシステム。
UE4は主にC++で作られているが、UnrealAutomationToolは主にC#。
UnrealAutomationToolを使って、CIソフトウエアでコマンドラインをビルドす
ることができる。
#UE4 | @UNREALENGINE
UnrealAutomationTool
会社、プロジェクトの種類、そしてワークフローによって、ビルドする選択肢が
三つある。
● BuildGraphのカスタムスクリプト
● BuildGraphのInstalledBuildScript
● BuildCookRunのコマンドラインツール
#UE4 | @UNREALENGINE
BuildGraph
#UE4 | @UNREALENGINE
BuildGraph
BuildGraphはUnrealAutomationToolの中のスクリプトベースのビルド自動化シ
ステム。
● XMLでビルドスクリプトを書く
● 日本語のドキュメンテーションがちゃんとしてる
● エピックのプロジェクトのためにエピックが作ったツール。今でもよく使って
おる
● 他のビルド ツールとは異なり、BuildGraphはmakefileのようなスクリプティン
グ言語とビルドマシンのコンフィギュレーション スクリプトとを合わせたアプ
ローチ
#UE4 | @UNREALENGINE
BuildGraph
サンプルコードがいっぱいで、分かりやすい
Engine/Build/Graph/Examples/
#UE4 | @UNREALENGINE
BuildGraph
メリット
● CIフレームワークへの依存を減らす。
● ローカルでテストと編集可能 → CI達人に頼らなくてもいい
● XMLベースなので読みやすい
● プラットフォームに不可知的
● いろんなプロジェクトで共有できる
デメリット
● なれるまで時間がかかる
#UE4 | @UNREALENGINE
BuildGraph
● Agents: 同じマシンで実行される複数のノードのグループ
● Nodes: タスクのシーケンス
● Tasks: ビルド プロセスの一部として実行されるアクション (コンパイル、
クックなど)
#UE4 | @UNREALENGINE
BuildGraph
<Agent Name="Default Agent" Type="CompileWin64">
<!-- Update the engine version files -->
<Node Name="Update Version Files">
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" Licensee="$(Licensee)" If="$(Versioned)"/>
</Node>
<!-- Compile the tool executables -->
<Node Name="Compile Tools Win64" Requires="Update Version Files" Produces="#ToolBinaries">
<Compile Target="UnrealHeaderTool" Platform="Win64" Configuration="Development" Tag="#ToolBinaries"/>
</Node>
<!-- Compile the editor executable -->
<Node Name="Compile $(EditorTarget) Win64" Requires="Compile Tools Win64" Produces="#EditorBinaries">
<Compile Target="$(EditorTarget)" Platform="Win64" Configuration="Development" Tag="#EditorBinaries"/>
</Node>
<!-- Compile the game targets -->
<Property Name="GameBinaries" Value=""/>
<ForEach Name="GameTarget" Values="$(GameTargets)">
<ForEach Name="TargetPlatform" Values="$(TargetPlatforms)">
<Node Name="Compile $(GameTarget) $(TargetPlatform)" Requires="Compile Tools Win64" Produces="#GameBinaries_$(GameTarget)_$(TargetPlatform)">
<Compile Target="$(GameTarget)" Platform="$(TargetPlatform)" Configuration="Development" Tag="#GameBinaries_$(GameTarget)_$(TargetPlatform)"/>
</Node>
<Property Name="GameBinaries" Value="$(GameBinaries)#GameBinaries_$(GameTarget)_$(TargetPlatform);"/>
</ForEach>
</ForEach>
</Agent>
#UE4 | @UNREALENGINE
BuildGraph
<Agent Name="Default Agent" Type="CompileWin64">
<!-- Update the engine version files -->
<Node Name="Update Version Files">
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" Licensee="$(Licensee)" If="$(Versioned)"/>
</Node>
<!-- Compile the tool executables -->
<Node Name="Compile Tools Win64" Requires="Update Version Files" Produces="#ToolBinaries">
<Compile Target="UnrealHeaderTool" Platform="Win64" Configuration="Development" Tag="#ToolBinaries"/>
</Node>
<!-- Compile the editor executable -->
<Node Name="Compile $(EditorTarget) Win64" Requires="Compile Tools Win64" Produces="#EditorBinaries">
<Compile Target="$(EditorTarget)" Platform="Win64" Configuration="Development" Tag="#EditorBinaries"/>
</Node>
<!-- Compile the game targets -->
<Property Name="GameBinaries" Value=""/>
<ForEach Name="GameTarget" Values="$(GameTargets)">
<ForEach Name="TargetPlatform" Values="$(TargetPlatforms)">
<Node Name="Compile $(GameTarget) $(TargetPlatform)" Requires="Compile Tools Win64"
Produces="#GameBinaries_$(GameTarget)_$(TargetPlatform)">
<Compile Target="$(GameTarget)" Platform="$(TargetPlatform)"
Configuration="Development" Tag="#GameBinaries_$(GameTarget)_$(TargetPlatform)"/>
</Node>
<Property Name="GameBinaries" Value="$(GameBinaries)#GameBinaries_$(GameTarget)_$(TargetPlatform);"/>
</ForEach>
</ForEach>
</Agent>
<Agent Name="Default Agent" Type="CompileWin64">
#UE4 | @UNREALENGINE
BuildGraph
<Agent Name="Default Agent" Type="CompileWin64">
<!-- Update the engine version files -->
<Node Name="Update Version Files">
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" Licensee="$(Licensee)" If="$(Versioned)"/>
</Node>
<!-- Compile the tool executables -->
<Node Name="Compile Tools Win64" Requires="Update Version Files" Produces="#ToolBinaries">
<Compile Target="UnrealHeaderTool" Platform="Win64" Configuration="Development" Tag="#ToolBinaries"/>
</Node>
<!-- Compile the editor executable -->
<Node Name="Compile $(EditorTarget) Win64" Requires="Compile Tools Win64" Produces="#EditorBinaries">
<Compile Target="$(EditorTarget)" Platform="Win64" Configuration="Development" Tag="#EditorBinaries"/>
</Node>
<!-- Compile the game targets -->
<Property Name="GameBinaries" Value=""/>
<ForEach Name="GameTarget" Values="$(GameTargets)">
<ForEach Name="TargetPlatform" Values="$(TargetPlatforms)">
<Node Name="Compile $(GameTarget) $(TargetPlatform)" Requires="Compile Tools Win64"
Produces="#GameBinaries_$(GameTarget)_$(TargetPlatform)">
<Compile Target="$(GameTarget)" Platform="$(TargetPlatform)"
Configuration="Development" Tag="#GameBinaries_$(GameTarget)_$(TargetPlatform)"/>
</Node>
<Property Name="GameBinaries" Value="$(GameBinaries)#GameBinaries_$(GameTarget)_$(TargetPlatform);"/>
</ForEach>
</ForEach>
</Agent>
<!-- Update the engine version files -->
<Node Name="Update Version Files">
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)"
Licensee="$(Licensee)" If="$(Versioned)"/>
</Node>
#UE4 | @UNREALENGINE
BuildGraph
<Agent Name="Default Agent" Type="CompileWin64">
<!-- Update the engine version files -->
<Node Name="Update Version Files">
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" Licensee="$(Licensee)" If="$(Versioned)"/>
</Node>
<!-- Compile the tool executables -->
<Node Name="Compile Tools Win64" Requires="Update Version Files" Produces="#ToolBinaries">
<Compile Target="UnrealHeaderTool" Platform="Win64" Configuration="Development" Tag="#ToolBinaries"/>
</Node>
<!-- Compile the editor executable -->
<Node Name="Compile $(EditorTarget) Win64" Requires="Compile Tools Win64" Produces="#EditorBinaries">
<Compile Target="$(EditorTarget)" Platform="Win64" Configuration="Development" Tag="#EditorBinaries"/>
</Node>
<!-- Compile the game targets -->
<Property Name="GameBinaries" Value=""/>
<ForEach Name="GameTarget" Values="$(GameTargets)">
<ForEach Name="TargetPlatform" Values="$(TargetPlatforms)">
<Node Name="Compile $(GameTarget) $(TargetPlatform)" Requires="Compile Tools Win64"
Produces="#GameBinaries_$(GameTarget)_$(TargetPlatform)">
<Compile Target="$(GameTarget)" Platform="$(TargetPlatform)"
Configuration="Development" Tag="#GameBinaries_$(GameTarget)_$(TargetPlatform)"/>
</Node>
<Property Name="GameBinaries" Value="$(GameBinaries)#GameBinaries_$(GameTarget)_$(TargetPlatform);"/>
</ForEach>
</ForEach>
</Agent>
<!-- Compile the tool executables -->
<Node Name="Compile Tools Win64" Requires="Update Version Files"
Produces="#ToolBinaries">
<Compile Target="UnrealHeaderTool" Platform="Win64"
Configuration="Development" Tag="#ToolBinaries"/>
</Node>
#UE4 | @UNREALENGINE
BuildGraph
<Agent Name="Default Agent" Type="CompileWin64">
<!-- Update the engine version files -->
<Node Name="Update Version Files">
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" Licensee="$(Licensee)" If="$(Versioned)"/>
</Node>
<!-- Compile the tool executables -->
<Node Name="Compile Tools Win64" Requires="Update Version Files" Produces="#ToolBinaries">
<Compile Target="UnrealHeaderTool" Platform="Win64" Configuration="Development" Tag="#ToolBinaries"/>
</Node>
<!-- Compile the editor executable -->
<Node Name="Compile $(EditorTarget) Win64" Requires="Compile Tools Win64" Produces="#EditorBinaries">
<Compile Target="$(EditorTarget)" Platform="Win64" Configuration="Development" Tag="#EditorBinaries"/>
</Node>
<!-- Compile the game targets -->
<Property Name="GameBinaries" Value=""/>
<ForEach Name="GameTarget" Values="$(GameTargets)">
<ForEach Name="TargetPlatform" Values="$(TargetPlatforms)">
<Node Name="Compile $(GameTarget) $(TargetPlatform)" Requires="Compile Tools Win64"
Produces="#GameBinaries_$(GameTarget)_$(TargetPlatform)">
<Compile Target="$(GameTarget)" Platform="$(TargetPlatform)"
Configuration="Development" Tag="#GameBinaries_$(GameTarget)_$(TargetPlatform)"/>
</Node>
<Property Name="GameBinaries" Value="$(GameBinaries)#GameBinaries_$(GameTarget)_$(TargetPlatform);"/>
</ForEach>
</ForEach>
</Agent>
<!-- Compile the editor executable -->
<Node Name="Compile $(EditorTarget) Win64" Requires="Compile Tools Win64"
Produces="#EditorBinaries">
<Compile Target="$(EditorTarget)" Platform="Win64"
Configuration="Development" Tag="#EditorBinaries"/>
</Node>
#UE4 | @UNREALENGINE
BuildGraph
<Agent Name="Default Agent" Type="CompileWin64">
<!-- Update the engine version files -->
<Node Name="Update Version Files">
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" Licensee="$(Licensee)" If="$(Versioned)"/>
</Node>
<!-- Compile the tool executables -->
<Node Name="Compile Tools Win64" Requires="Update Version Files" Produces="#ToolBinaries">
<Compile Target="UnrealHeaderTool" Platform="Win64" Configuration="Development" Tag="#ToolBinaries"/>
</Node>
<!-- Compile the editor executable -->
<Node Name="Compile $(EditorTarget) Win64" Requires="Compile Tools Win64" Produces="#EditorBinaries">
<Compile Target="$(EditorTarget)" Platform="Win64" Configuration="Development" Tag="#EditorBinaries"/>
</Node>
<!-- Compile the game targets -->
<Property Name="GameBinaries" Value=""/>
<ForEach Name="GameTarget" Values="$(GameTargets)">
<ForEach Name="TargetPlatform" Values="$(TargetPlatforms)">
<Node Name="Compile $(GameTarget) $(TargetPlatform)" Requires="Compile Tools Win64"
Produces="#GameBinaries_$(GameTarget)_$(TargetPlatform)">
<Compile Target="$(GameTarget)" Platform="$(TargetPlatform)"
Configuration="Development" Tag="#GameBinaries_$(GameTarget)_$(TargetPlatform)"/>
</Node>
<Property Name="GameBinaries" Value="$(GameBinaries)#GameBinaries_$(GameTarget)_$(TargetPlatform);"/>
</ForEach>
</ForEach>
</Agent>
<!-- Compile the game targets -->
<Property Name="GameBinaries" Value=""/>
<ForEach Name="GameTarget" Values="$(GameTargets)">
<ForEach Name="TargetPlatform" Values="$(TargetPlatforms)">
<Node Name="Compile $(GameTarget) $(TargetPlatform)"
Requires="Compile Tools Win64"
Produces="#GameBinaries_$(GameTarget)_$(TargetPlatform)">
<Compile Target="$(GameTarget)" Platform="$(TargetPlatform)"
Configuration="Development"
Tag="#GameBinaries_$(GameTarget)_$(TargetPlatform)"/>
</Node>
<Property Name="GameBinaries"
Value="$(GameBinaries)#GameBinaries_$(GameTarget)_$(TargetPlatform);"/>
</ForEach>
</ForEach>
#UE4 | @UNREALENGINE
InstalledBuild
#UE4 | @UNREALENGINE
InstalledBuild
● 皆様の会社のアンリアルランチャーだと思って下さい
● エンジンを提供するためエピックが作ったBuildGraphのスクリプト
Engine/Build/InstalledEngineBuild.xml
● デザイナーとアーティストに優しい
● エンジンビルドのみ。プロジェクトをビルドしない
#UE4 | @UNREALENGINE
Installed Build
Installed Buildの主なステップ
1. Update Version File
2. Compile UnrealHeaderTool Win64
3. Compile UE4Editor Win64
4. Compile UE4Game Win64
5. Compile UE4Game (Platform)
6. Build Tools Win64
7. Build Tools CS
8. Make Feature Packs
9. Build DDC Win64
#UE4 | @UNREALENGINE
InstalledBuild
Engine/Build/BatchFiles/RunUAT.bat BuildGraph
-target”Make Installed Build Win64”
-script=/Engine/Build/InstalledEngineBuild.xml
-clean
#UE4 | @UNREALENGINE
InstalledBuild
Engine/Build/BatchFiles/RunUAT.bat BuildGraph
-target”Make Installed Build Win64”
-script=/Engine/Build/InstalledEngineBuild.xml
-clean
#UE4 | @UNREALENGINE
InstalledBuild
Engine/Build/BatchFiles/RunUAT.bat BuildGraph
-target”Make Installed Build Win64”
-script=/Engine/Build/InstalledEngineBuild.xml
-clean
#UE4 | @UNREALENGINE
InstalledBuild
Engine/Build/BatchFiles/RunUAT.bat BuildGraph
-target”Make Installed Build Win64”
-script=/Engine/Build/InstalledEngineBuild.xml
-clean
#UE4 | @UNREALENGINE
BuildCookRun
#UE4 | @UNREALENGINE
BuildCookRun
#UE4 | @UNREALENGINE
BuildCookRun
● /Engine/Build/BatchFiles/ にあるスクリプト
● ビルドから、パッケージまで、何でもできる
● カスタムしやすい
● 使用の際にLinux/UNIX感の懐かしくて温かい気持ちになる
#UE4 | @UNREALENGINE
BuildCookRun, BuildGraph, InstalledBuild
● 状況によって、一番合ってるやり方が変わる
● 個人的に、ゲーム開発の場合は、柔軟性と変更可能な技術が重要かと思うか
ら、BuildCookRunが一番仕事しやすい
● これから紹介するコマンドラインでBuildCookRunで実行する。でも全ての
コマンドがBuildGraphでもできる
#UE4 | @UNREALENGINE
目次
●CIとは
●UnrealAutomationTool
●エンジンとプロジェクトビルドの作業
●その他のビルド作業
●The Unreal Way
#UE4 | @UNREALENGINE
コマンドライン
#UE4 | @UNREALENGINE
エンジンDLLビルド
エンジンの編集が少なかったら、手動でビルドするCIの作業
多かったら、一日一回でいいと思います。ただそれは夜ではなく、朝か昼にす
るのがおすすめ
#UE4 | @UNREALENGINE
ビルドマシン
Jenkins Build
Commit to
Source Control
Update
Notify
#UE4 | @UNREALENGINE
ビルドコマンド
%ENGINE_ROOT%/Engine/Build/BatchFiles/RunUAT.bat BuildCookRun -
project=Samples/StarterContent/StarterContent.uproject -
platform=%ENGINE_PLATFORM_TARGET% -
clientconfig=%ENGINE_COMPILATION_TARGET% -build
ENGINE_ROOT=EngineRoot
ENGINE_COMPILATION_TARGET=Development
ENGINE_PLATFORM_TARGET=Win64
大分読みづらいにゃ、ちょっと読
みやすくしよう
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=Samples/StarterContent/StarterContent.uproject
-platform=Win64
-clientconfig=Development
-build
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=Samples/StarterContent/StarterContent.uproject
-platform=Win64
-clientconfig=Development
-build
RunUATを使うには、uprojectファイルが必要
なので、テンプレートか空っぽのプロジェクト
にしにゃしょう。
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=Samples/StarterContent/StarterContent.uproject
-platform=Win64
-clientconfig=Development
-build
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=Samples/StarterContent/StarterContent.uproject
-platform=Win64
-clientconfig=Development
-build
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=Samples/StarterContent/StarterContent.uproject
-platform=Win64
-clientconfig=Development
-build
#UE4 | @UNREALENGINE
プロジェクトDLLビルド
10分ごとにバージョン管理しすてむを確認して、自動でビルド。
Jenkins Build
Commit to
Source Control
Update
Notify
#UE4 | @UNREALENGINE
ビルドコマンド
%ENGINE_ROOT%/Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project= project=%GAME_SUB_PATH%/%GAME_NAME%.uproject -
platform=%ENGINE_PLATFORM_TARGET% -
clientconfig=%ENGINE_COMPILATION_TARGET% -build
ENGINE_ROOT=EngineRoot
ENGINE_COMPILATION_TARGET=Development
ENGINE_PLATFORM_TARGET=Win64
GAME_SUB_PATH=C:/GamePath
GAME_NAME=GameName
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=C:/PathToTheGame/GameName.uproject
-platform=Win64
-clientconfig=Development
-build
#UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
パッケージ
#UE4 | @UNREALENGINE
Nightly Build
● 毎晩走らせるパッケージ
● Development、Test(プロファイルとるため)、そしてShipping (販売版に近い
バージョン)、ターゲットごとに作る
時間がかかっても大丈夫なので、クリーン、フルリビルドがおすすめ
#UE4 | @UNREALENGINE
Nightly Build フロー
ZipJenkins Build
Copy to
Shared Folder
Update
Notify
#UE4 | @UNREALENGINE
ビルドコマンド
%ENGINE_ROOT%/Engine/Build/BatchFiles/RunUAT.bat BuildCookRun -
project=%GAME_SUB_PATH%/%GAME_NAME%.uproject -noP4 -
platform=%ENGINE_PLATFORM_TARGET% -
clientconfig=%ENGINE_COMPILATION_TARGET% -cook -allmaps -build -stage
-pak -archive -archivedirectory=%TEMP_DIR%
ENGINE_ROOT=PathToYourEngine
GAME_SUB_PATH=PathToYourProject
GAME_NAME=UprojectFileWithoutTheExtension
ENGINE_COMPILATION_TARGET=Development|Shipping|etc
ENGINE_PLATFORM_TARGET=Win64|etc
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
各ファイル全てをコピーする代わりに、全アセットを単一「.pak」フ
ァイルに格納する。プロジェクトにたくさんのアセットファイルがあ
る場合、Pak ファイルを使用した方が配布が容易になる場合がある。
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-archivedirectory=C:/TempDirectory/
#UE4 | @UNREALENGINE
ビルドコマンド
robocopy %ARCHIVE_DIR%/latest %ARCHIVE_DIR%/%ENGINE_PLATF
ORM_TARGET%/archive /E /IS /MOV
set PATH=%PATH%;C:/Program Files/7-Zip/
7z.exe a -tzip -mmt -
mx1 %ARCHIVE_DIR%/latest/%BUILD_NUMBER%.zip %TEMP_DIR%/
exit 0
#UE4 | @UNREALENGINE
ビルドコマンド
ちょっと待ったにゃ!!
#UE4 | @UNREALENGINE
ビルドコマンド
https://github.com/electronicarts/EACopy
Twitter : @honk_dice
EAさんのhigh endスタジオ、DICEが、robocopyよりさらに速い、ビルドマ
シン用のコピーツールをオープンソースにした!
EACopy
ちょっとしか試していないけど、凄く速いです!
#UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
Incremental Build
● 手動起動
● 「ごめん、一時間後パブリッシャー/社長に会議でビルドを見せなきゃいけな
いから、何とかして」というときに
● Nightly Buildと違って、時間がないから…
● -partialgcを付ける
● クリーンビルドじゃなくてもいい
#UE4 | @UNREALENGINE
Incremental Build フロー
Jenkins Build
Send to
DevKit
Update
Notify
開発機までの接続は、各メーカーのSDKを確認してください。
また、エディターからdeployするときにエンジン内でも同じことするので、
/Engine/Source/Programs/AutomationTool/PlatformName/PlatformNamePlatfo
rm.Automation.csを見てね
#UE4 | @UNREALENGINE
ビルドコマンド
Engine/Build/BatchFiles/RunUAT.bat BuildCookRun
-project=GamePath/GameName.uproject
-noP4
-platform=Win64
-clientconfig=Development
-cook
-allmaps
-build
-stage
-pak
-archive
-partialgc
-archivedirectory=C:/TempDirectory/
クック中に、メモリがなくなったときにすべてをクリーンするのではなく、
パッケージで完了したときにクリーンアップする。
#UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
Jenkins Plugins
#UE4 | @UNREALENGINE
Plugins
Build Pipeline Plugin
https://wiki.jenkins.io/display/JENKINS/Build+Pipeline+Plugin
#UE4 | @UNREALENGINE
Plugins
Jenkins Slack Plugin
https://github.com/jenkinsci/slack-plugin
#UE4 | @UNREALENGINE
Plugins
Retaliation
https://github.com/codedance/Retaliation
#UE4 | @UNREALENGINE
目次
●CIとは
●UnrealAutomationTool
●エンジンとプロジェクトビルドの作業
●その他のビルド作業
●The Unreal Way
#UE4 | @UNREALENGINE
その他のビルドCI Jobs
#UE4 | @UNREALENGINE
Commandlet
Command Line Applet → コマンドレットとは、Unreal Engineの環境内で
作動するコマンドラインプログラム
#UE4 | @UNREALENGINE
Shared DDC
Derived Data Cache (DDC) は、エンジンとターゲットプラットフォームが使
用するフォーマットでアセットのバージョンを保存する機能
簡単にいうと、みんなが利用しているアセットをキャッシュする
#UE4 | @UNREALENGINE
Shared DDC
Shared
FolderDev PC 1
Copy Built Asset
Build Assets on
1st launch
#UE4 | @UNREALENGINE
Shared DDC
Shared
Folder
Dev PC 5Dev PC 4
Dev PC 3Dev PC 2
Copy Built Asset
#UE4 | @UNREALENGINE
Shared DDC
Shared
FolderDev PC 4
Modify / Add
Asset
Copy Built Asset
#UE4 | @UNREALENGINE
Shared DDC
https://docs.unrealengine.com/en-
US/Engine/Basics/DerivedDataCache/index.html
BaseEngine.ini
[InstalledDerivedDataBackendGraph]
MinimumDaysToKeepFile=7
Root=(Type=KeyLength, Length=120, Inner=AsyncPut)
AsyncPut=(Type=AsyncPut, Inner=Hierarchy)
Hierarchy=(Type=Hierarchical, Inner=Boot, Inner=Pak, Inner=EnginePak, Inner=Local, Inner=Shared)
Boot=(Type=Boot, Filename=%GAMEDIR%DerivedDataCache/Boot.ddc, MaxCacheSize=256)
Local=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, PurgeTransient=true, DeleteUnused=true,
UnusedFileAge=17, FoldersToClean=-1, Path=../../../Engine/DerivedDataCache)
Shared=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=19,
FoldersToClean=-1, Path=//mystudio.net/DDC, EnvPathOverride=UE-SharedDataCachePath)
AltShared=(Type=FileSystem, ReadOnly=true, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=19,
FoldersToClean=-1, Path=//mystudio.net/DDC2, EnvPathOverride=UE-SharedDataCachePath2)
Pak=(Type=ReadPak, Filename=%GAMEDIR%DerivedDataCache/DDC.ddp)
EnginePak=(Type=ReadPak, Filename=../../../Engine/DerivedDataCache/DDC.ddp)
#UE4 | @UNREALENGINE
Shared DDC
#UE4 | @UNREALENGINE
Shared DDC
// Flush and Clean argument DerivedDataBackends.cpp:553
if( bFlush )
{
IFileManager::Get().DeleteDirectory( *(Path / TEXT(“”)), false, true );
}
else if( bClean )
{
DeleteOldFiles( *Path );
}
/** Delete the old files in a directory **/
void DeleteOldFiles(const TCHAR* Directory)
{
float MinimumDaysToKeepFile = 7;
GConfig->GetFloat( *GraphName, TEXT("MinimumDaysToKeepFile"), MinimumDaysToKeepFile, GEngineIni );
check(MinimumDaysToKeepFile > 0.0f); // sanity
//@todo
}
#UE4 | @UNREALENGINE
Shared DDC
//@todo
#UE4 | @UNREALENGINE
Shared DDC
UE4Editor-cmd.exe ProjectName –run=DerivedDataCache -fill
del /s /q c:/ServerShareDDCPath/*
#UE4 | @UNREALENGINE
Lighting Build
● リアルタイムライト以外の照明は、クックしなきゃいけない。
● もちろん、エピックがクックするためのツールを提供している。
ただ…
#UE4 | @UNREALENGINE
Lighting Build
#UE4 | @UNREALENGINE
遅い。とても
なので夜間にCIソフトウエアに任せるのが正しい
毎晩、自動で、このJobを走らせましょう
Lighting Build
#UE4 | @UNREALENGINE
Lighting Build
UE4Editor-cmd.exe ProjectName -run=resavepackages
-buildlighting -allowcommandletrendering
#UE4 | @UNREALENGINE
Lighting Build
Editorで作業して、ライトを確認したいときに、
ローカルでライトビルドするのは現実的
そのプロセスを早くするため、Swarmがある
#UE4 | @UNREALENGINE
Lighting Build - Swarm
Swarmは、UE4の高品質なスタティック グローバル イ
ルミネーション ソルバである Unreal のライトマスを
含むタスク分散システム
Coordinatorは、ジェンキンスマスターでいいと思う
https://wiki.unrealengine.com/Swarm_Agent_Trou
bleshooting
#UE4 | @UNREALENGINE
Lighting Build - Swarm
Engine/Binaries/DotNET/SwarmCoordinator.exe
Engine/Binaries/DotNET/SwarmAgent.exe
Startupに追加する :
ショートカットを作成して、
%APPDATA%/Microsoft/Windows/Start Menu/Programs/Startupまでコピーする
#UE4 | @UNREALENGINE
Lighting Build - Swarm
#UE4 | @UNREALENGINE
Redirectors
● Redirectorは、UE4 でアセットを移動したり名前の変更をするとき、変更先を検
出するためのもので、元の位置に‘Redirector’が残される
● 残し方によっては、バグりやすくなるから、綺麗にする必要がある
● 大体、月一回でいいと思います。危ないとき(エンジンのマージあと、アルファ版
かベータ版のリリースの後)、週一回にしましょう!
https://docs.unrealengine.com/en-US/Engine/Basics/Redirectors/index.html
#UE4 | @UNREALENGINE
Redirectors
UE4Editor-cmd.exe ProjectName -run=fixupredirects
#UE4 | @UNREALENGINE
目次
●CIとは
●UnrealAutomationTool
●エンジンとプロジェクトビルドの作業
●その他のビルド作業
●The Unreal Way
#UE4 | @UNREALENGINE
The Unreal Way :
Fortnite
#UE4 | @UNREALENGINE
Fortnite
● エンジニアしかVisualStudioを持たない
● ElectricCommanderとBuildGraphを利用している
● UnrealGameSyncを使用している
#UE4 | @UNREALENGINE
イテレーション
VSがなかったら、難しそうですね?
実は、そうでもない。覚悟が必要ですけど
● PIEを出来るだけ使おう
● CIソフトウエアのビルドを上手く使おう
#UE4 | @UNREALENGINE
デバイスで今のレベルを試したいときに…
キャラクターの髪の毛の色を変更して、コミットする前に端末のディスプレイ
で確認したいけど、VSがないから、ビルド出来ないというシナリオだと…
まずは、
CIソフトウエアでincremental buildの作業を作って、
Project/Binaries/各プラットフォームのフォルダーでビルドマシンにコミット
させる
#UE4 | @UNREALENGINE
Custom Launch Profile
そしてエディターのLaunchボタンの右の三角形
をクリック、
Project LauncherのCustom Launch Profileが
追加されたファイルを編集する
プロファイルはプロジェクト側ではなく、
/Engine/Programs/UnrealFrontend/Profiles
に保存される
プロファイルからBuildのステップを外してパソ
コンに繋がっているデバイスにdeployしたら、
誰でもいつでも、VisualStudioを持たずに、タ
ーゲットプラットフォームでプレイが出来る
#UE4 | @UNREALENGINE
ビルドマシンまとめ
UE4のパイプラインにあるはずのJobs :
● エンジンビルド
● プロジェクトビルド
● 夜プロジェクトパッケージ
● Incrementalプロジェクトパッケージ
● InstalledBuildを使わない場合は、Project Launcher用ビルド
● ライトマップビルド
● Fixup Redirectorsコマンドレット
● SharedDDCクリーンアップ
● SharedDDCのfill
#UE4 | @UNREALENGINE
バージョン管理しすてむ
● エピックはPerforceを使用しているため、使ったらエピック環境に一番近く
なるが、有料ソフトウエアである
● SVNがちょっとだけ遅いかもしれないが、長く使われていて頼れる
● GITは無料で、モバイルとソシャゲで良く使われている
SVNとPerforceはエディターでサポートします!GITにも対応しているけど、ま
だExperimental!
#UE4 | @UNREALENGINE
UnrealGameSync
Fortniteなどのエピック内のプロジェクトのためにエピックが作ったツール
Perforceのみだが、P4Vの代わりに使えるUI。ノンテクニカルの開発者におすすめ
#UE4 | @UNREALENGINE
UnrealGameSync
#UE4 | @UNREALENGINE
UnrealGameSync
P4サーバー
Sync
Get
Engine
(コードあり)
Local Builds
(Binary Engine)
生成
ビルドマシン
#UE4 | @UNREALENGINE
UnrealGameSync
最新版はPerforceとGitHubでいつでも。
UE4と関係がないので、エンジンのバージョンにロックをかけていてもUGSの最
新版をゲットしよう
https://docs.unrealengine.com/latest/ja/Programming/Deployment/Unrea
lGameSync/Reference/
#UE4 | @UNREALENGINE
https://github.com/gpageot/JenkinsUE4
Twitter : @GregoryPAGEOT
https://github.com/AxRiff/UnrealEngineJenkins
Twitter : @AxRiff
https://github.com/electronicarts/EACopy
Twitter : @honk_dice
Manga by @shiba_zushi。まいど!
Links
#UE4 | @UNREALENGINE
Unreal Fes t Eas t 2019
2019 / 10 / 6
パシフィコ横浜
#UE4 | @UNREALENGINE
Merci !

More Related Content

PDF
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
【UE4.25 新機能】ロードの高速化機能「IOStore」について
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
 
PDF
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
エピック・ゲームズ・ジャパン Epic Games Japan
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
エピック・ゲームズ・ジャパン Epic Games Japan
 
【UE4.25 新機能】ロードの高速化機能「IOStore」について
エピック・ゲームズ・ジャパン Epic Games Japan
 
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
エピック・ゲームズ・ジャパン Epic Games Japan
 

What's hot (20)

PDF
猫でも分かる UE4の新しいサンプル「Action RPG」について
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
[CEDEC2018] UE4アニメーションシステム総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
猫でも分かる UE4のAnimation Blueprintの運用について
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
猫でも分かるUE4のポストプロセスを使った演出・絵作り
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4における大規模背景制作事例 最適化ワークフロー編
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
出張ヒストリア ブループリントを書くにあたって大切なこと
historia_Inc
 
PDF
猫でも分かるUE4.22から入ったSubsystem
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4でTranslucencyやUnlitに影を落としたい!
com044
 
PDF
UE4 Volumetric Fogで 空間を演出する!
com044
 
PDF
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Editor Utility Widgetで色々便利にしてみた。
IndieusGames
 
PDF
60fpsアクションを実現する秘訣を伝授 解析編
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
なぜなにFProperty - 対応方法と改善点 -
エピック・ゲームズ・ジャパン Epic Games Japan
 
猫でも分かる UE4の新しいサンプル「Action RPG」について
エピック・ゲームズ・ジャパン Epic Games Japan
 
[CEDEC2018] UE4アニメーションシステム総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
 
猫でも分かる UE4のAnimation Blueprintの運用について
エピック・ゲームズ・ジャパン Epic Games Japan
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
エピック・ゲームズ・ジャパン Epic Games Japan
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
 
猫でも分かるUE4のポストプロセスを使った演出・絵作り
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4における大規模背景制作事例 最適化ワークフロー編
エピック・ゲームズ・ジャパン Epic Games Japan
 
出張ヒストリア ブループリントを書くにあたって大切なこと
historia_Inc
 
猫でも分かるUE4.22から入ったSubsystem
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4でTranslucencyやUnlitに影を落としたい!
com044
 
UE4 Volumetric Fogで 空間を演出する!
com044
 
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
エピック・ゲームズ・ジャパン Epic Games Japan
 
Editor Utility Widgetで色々便利にしてみた。
IndieusGames
 
60fpsアクションを実現する秘訣を伝授 解析編
エピック・ゲームズ・ジャパン Epic Games Japan
 
なぜなにFProperty - 対応方法と改善点 -
エピック・ゲームズ・ジャパン Epic Games Japan
 
Ad

Similar to 「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像 (20)

PDF
Unreal Studio+機械CADのワークフロー
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Unreal Engine 4の2019年上半期アップデート情報まとめ / GTMF 2019
Game Tools & Middleware Forum
 
PPTX
[GTMF2019]Unreal Engine 4の2019年上半期 アップデート情報まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
日本一詳しい人が教えるUE4
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
Unreal Engine 4 勉強会 福岡 2014/05/25
Daisuke Nakamura
 
PDF
Unreal Engine 4 Powering Independent Game Developers
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Unreal Studio+プロダクトデザインのワークフロー
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Unreal Studio+建築CADのワークフロー
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
CEDEC2014: アンリアル・エンジン4を技術者が活用するための最新ノウハウ
エピック・ゲームズ・ジャパン Epic Games Japan
 
PPTX
Unreal Engine でアプリ開発~ MRTK UXTools for Unreal V0.9.0 ~
Takahiro Miyaura
 
PDF
UE4とUnrealC++について
Masahiko Nakamura
 
PDF
UnrealEngine の VR 事情
Masaaki Suga
 
PDF
Epic Online Services でできること
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
第5回ue4ハンズオンセミナー
Masahiko Nakamura
 
PDF
Unity&unreal engineハンズオン資料 unreal_4.8
Seiki Okude
 
PPTX
BIMBraSto3 UnrealEngine4のすすめ(+Unreal Engine Pixel Streaming)
Tatsuya Sumisaki
 
ODP
Unityは神,Unrealは現実
Linea319
 
PDF
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
 
PDF
UE4.17で入る新機能を一気に紹介・解説!
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Studio+機械CADのワークフロー
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine 4の2019年上半期アップデート情報まとめ / GTMF 2019
Game Tools & Middleware Forum
 
[GTMF2019]Unreal Engine 4の2019年上半期 アップデート情報まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine 4 勉強会 福岡 2014/05/25
Daisuke Nakamura
 
Unreal Engine 4 Powering Independent Game Developers
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Studio+プロダクトデザインのワークフロー
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Studio+建築CADのワークフロー
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engineでのコンフィギュレーター制作と映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
CEDEC2014: アンリアル・エンジン4を技術者が活用するための最新ノウハウ
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine でアプリ開発~ MRTK UXTools for Unreal V0.9.0 ~
Takahiro Miyaura
 
UE4とUnrealC++について
Masahiko Nakamura
 
UnrealEngine の VR 事情
Masaaki Suga
 
Epic Online Services でできること
エピック・ゲームズ・ジャパン Epic Games Japan
 
第5回ue4ハンズオンセミナー
Masahiko Nakamura
 
Unity&unreal engineハンズオン資料 unreal_4.8
Seiki Okude
 
BIMBraSto3 UnrealEngine4のすすめ(+Unreal Engine Pixel Streaming)
Tatsuya Sumisaki
 
Unityは神,Unrealは現実
Linea319
 
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
 
UE4.17で入る新機能を一気に紹介・解説!
エピック・ゲームズ・ジャパン Epic Games Japan
 
Ad

More from エピック・ゲームズ・ジャパン Epic Games Japan (20)

PDF
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4を使った映像制作 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Hair Groom入門 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
Twinmotion 2021とAEC分野向けソリューションのご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
エピック・ゲームズ・ジャパン Epic Games Japan
 
PDF
猫でもわかる Epic MegaGrants 応募への道
エピック・ゲームズ・ジャパン Epic Games Japan
 
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
エピック・ゲームズ・ジャパン Epic Games Japan
 
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4を使った映像制作 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
 
Hair Groom入門 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
 
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
バレンシアガ『Afterworld: The Age of Tomorrow』の舞台裏 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
SAMURAI JACK開発事例:海外むけアクションゲームをオーソドックスに作ってみた UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
『ガールズ&パンツァー 最終章』第3話 アニメとゲームエンジンの融合(ジャングル完結編) UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
Twinmotion 2021とAEC分野向けソリューションのご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4.26 レンダリング新機能(CEDEC+KYUSHU 2020)
エピック・ゲームズ・ジャパン Epic Games Japan
 
猫でもわかる Epic MegaGrants 応募への道
エピック・ゲームズ・ジャパン Epic Games Japan
 

Recently uploaded (10)

PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 

「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像