日本一詳しい人が教えるue4
DESCRIPTION
2014/10/13 パシフィコ横浜で開催されたアンリアルフェス2014で講演しました「日本一詳しい人が教えるUE4」のスライドです。 ビデオはこちら → youtu.be/yua_WAEhZdM トゥーンのテスト動画はこちら → http://youtu.be/oLzpDRGzSFETRANSCRIPT
October 13
Unreal Fest 2014
日本一詳しい人が教えるUE4
シモダジュンヤ Jun Shimoda
Support Manager, Epic Games Japan
October 13
Unreal Fest 2014
自己紹介
シモダジュンヤ(@junyash)
• アンリアル・エンジンの利用経験をきっかけとして2010年2月からエピック・ゲームズ・ジャパンでサポート・マネージャーとしてアンリアル・エンジンの普及・サポート活動を行っています。
October 13
Unreal Fest 2014
UE4最新ニュース
October 13
Unreal Fest 2014
UE4最新ニュース
• 高等教育機関向けのライセンスが無料になりました!! – 大学・専門学校・専修学校・高専等で教育目的の利用は無料です
• 学内のPCへのインストール
• Update: 教員や学生の個人所有のPCへのインストールも可! – 有料のバージョンとアカウントの管理方法が変わりましたのでご連絡ください
• 学生さん向けに、もう1つの選択肢が登場! – GitHub の Student Developer Pack
https://education.github.com/pack • 13歳以上の学生さんは学生の間UE4を無料でご利用いただけます
• 他にも様々な便利なツールがパッケージングされています
• 有料のアプリケーション販売には5%のロイヤリティがかかります – ただし四半期ごとに3,000以下の売上の場合ロイヤリティがかかりません
October 13
Unreal Fest 2014
UE4最新ニュース
• アセットの販売・購入のためのマーケットプレイスが始まりました!
– コンテンツも増加中!
– ぜひみなさんの作品の 出品も検討してみてください!
– プラグインも今後対応予定
• Trelloで投票受付中 https://trello.com/b/x2AEJP0x/ue4-marketplace-submissions
October 13
Unreal Fest 2014
UE4最新ニュース
• Apple社のMetal APIに対応しました!
– iOS8+A7以上のiOSデバイスで、OpenGL等の汎用APIより オーバーヘッドの少ないMetal APIが利用できるようになりました。
– Zen Gardenデモだけでなく、みなさんのアプリでも使えるようになります
October 13
Unreal Fest 2014
UE4最新ニュース
October 13
Unreal Fest 2014
UE4最新ニュース
• Android対応の範囲も広げています
– Epic内でテスト済みのリストhttps://docs.unrealengine.com/latest/INT/Platforms/Android/DeviceCompatibility/index.html
– Communityでテスト済みのリストhttps://wiki.unrealengine.com/Android_Device_Compatibility
• NVIDIAのSHIELD Tabletにも対応!
October 13
Unreal Fest 2014
UE4最新ニュース
October 13
Unreal Fest 2014
UE4最新ニュース
• NVIDIAが最新GPU技術で証明、アポロ11号の「月面着陸は事実」
– WIREDの記事 http://wired.jp/2014/10/01/nvidia-moon/
– VXGIの実装・活用環境としてUE4が使われています。
October 13
Unreal Fest 2014
UE4最新ニュース
• スクリーンスペースサブサーフェーススキャッタリング(SSSSS) が実装されました!
– 人肌やロウソク、ゼリーのようなサーフェース内部で光の拡散があるような表現が豊かになります。
October 13
Unreal Fest 2014
ここから本題
October 13
Unreal Fest 2014
本日持ち帰っていただきたいモノ!
• UE4のプログラミング・レンダリング環境への理解 – それらのより深い機能を使う方法
– さらに独自のプロジェクトへとカスタマイズしていく方法
– UE4っぽくないゲームもどんどん創れるようになる!
• UE4の1ヶ月無料プロモーションコードもお持ち帰りいただきますが… – コードは1回しか使えないのでTweetして使われちゃうと
その後は使えなくなるので注意!(^_^;)
– もちろんコード以外でしたら 今日の内容はぜひ撮影やtweetしてください!
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの基礎
ブループリント
C++を使いたい!
ブループリントノードの追加
プラグインの制作
独自の描画機能の実装
UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの基礎 ブループリント
C++を使いたい!
ブループリントノードの追加
プラグインの制作
独自の描画機能の実装
UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
UE4プログラミングの基礎
• UE4で使われるプログラミング言語
– UE3のUnrealScriptとは決別
• 独自言語は教育コストとメンテナンスコストが高い
• ビジュアル言語のKismetは、新たにブループリントとして大幅に進化
– ブループリント • UE3のKismetの良い所は踏襲しつつも欠点を克服
– Kismetはレベルに属していて、全ての制御をここで行わなければならなかった
– C++ • エンジンの本体はC++で制作
• UE3の一般公開版のUDKではC++側のコードは非公開でC++も利用不可
• UE4ではエンジン本体のC++コードも含めて全てを開発者と共有
October 13
Unreal Fest 2014
UE4プログラミングの基礎
• 皆さんが制作されたコンテンツをスマホに送ることもできます
– iOSデバイス
• こちらの手順でデプロイできます (C++コードの使われているプロジェクトではMacが必要です) https://docs.unrealengine.com/latest/JPN/Platforms/iOS/GettingStarted/index.html
– Androidデバイス
• こちらの手順でデプロイできます (Mac環境は現在検討中) https://docs.unrealengine.com/latest/JPN/Platforms/Android/GettingStarted/index.html
– ちなみに4本指スワイプでコンソールコマンドを入力できます
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの基礎
ブループリント C++を使いたい!
ブループリントノードの追加
プラグインの制作
独自の描画機能の実装
UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
ブループリント
• ブループリントの特徴 https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/index.html
– ビジュアルスクリプティング
– コンポーネントといっしょにライブラリ化
– デバッグ環境ももちろんサポート https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/UserGuide/Debugging/index.html
October 13
Unreal Fest 2014
ブループリント
• ブループリントはオブジェクト指向
–オブジェクトの挙動を記述するビジュアルスクリプティング
(UE3のKismetはレベルに付随して全てを詰め込む必要があった)
– カプセル化も対応
– 継承による効率的な実装
• 敵キャラのベースで、プレイヤーを追いかける、ダメージを受ける、やられる
• 敵キャラのベース機能を継承して、ボスや敵キャラのバリエーションを作成
– さらにさらにポリモーフィズムにまで対応
October 13
Unreal Fest 2014
ブループリントオフィス
• ブループリントオフィスのサンプルで 実際のブループリントを見てみましょう!
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの
ブループリント
C++を使いたい! ブループリントノードの追加
プラグインの制作
独自の描画機能の実装
UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
C++を使いたい!
• C++の特徴 https://docs.unrealengine.com/latest/JPN/Programming/index.html
– 扱える開発者が多い
– パフォーマンス重視のコンソール系においてはメイン言語
• UE4におけるC++の特徴
– エディタとの連携
– ホットリロード
– C++11をサポート
– ウィーザードでテンプレートから選択
– ソースの追加・削除も簡単
– Code Viewはプラグインで有効に
– エディタに抜けるキーがF8に…
October 13
Unreal Fest 2014
C++を使いたい!
• UE4でC++のプロジェクト作成
– ウィーザードで新規プロジェクトの C++タブのテンプレートから選択
– Visual Studio 2013(もしくはXcode 5.1) どちらも無料で入手可能
October 13
Unreal Fest 2014
C++を使いたい!
• コードの追加
– コードの追加・削除もUE4のエディタから簡単にできます
October 13
Unreal Fest 2014
C++を使いたい!
• 追加したクラスを利用しよう
– MyCppProjectGameMode.cppに #include "MyCharacter.h"
AMyCppProjectGameMode::AMyCppProjectGameMode(const class
FPostConstructInitializeProperties& PCIP) : Super(PCIP)
{
DefaultPawnClass = AMyCharacter::StaticClass();
}
– ちなみにブループリントのクラスを登録したい場合は static ConstructorHelpers::FClassFinder<APawn> PlayerPawnClassFinder(TEXT("/Game/Blueprints/MyCharacter"));
DefaultPawnClass = PlayerPawnClassFinder.Class;
– でOK
October 13
Unreal Fest 2014
C++を使いたい!
• 追加したクラスにコードを書いてみよう – MyCharacter.hに
UCLASS()
class MYCPPPROJECT_API AMyCharacter : public Acharacter
{
GENERATED_UCLASS_BODY()
virtual void BeginPlay(); };
– MyCharacter.cppに void AMyCharacter::BeginPlay()
{
Super::BeginPlay();
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("We
are using MyCharacter!"));
}
}
– でOK!
October 13
Unreal Fest 2014
C++を使いたい!
• 参考資料
– ゲームプレイとプログラミングのリファレンス https://docs.unrealengine.com/latest/JPN/Programming/UnrealArchitecture/Reference/index.html UCLASS(), UFUNCTION(), UPROPERTY(), UINTERFACE() マクロの情報とかもあります
– ざっと機能を実装したい場合は以下のチュートリアルが参考になります First Person Shooter C++ Tutorial https://wiki.unrealengine.com/First_Person_Shooter_C%2B%2B_Tutorial
– 等に一度目を通しておくと理解しやすいと思います
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの
ブループリント
C++を使いたい!
ブループリントノードの追加 プラグインの制作
独自の描画機能の実装
UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
ブループリントノードの追加
• ブループリントノードを追加する方法 – Wikiに詳しくあります
https://wiki.unrealengine.com/Custom_Blueprint_Node_Creation
– ブループリントノードの中身はC++の関数 – もちろんHelloWorldだって可能!
• コードはこのくらい UFUNCTION(BlueprintPure, meta = (FriendlyName = "Hello World", CompactNodeTitle = "HelloWorld", Keywords = "String Hello World"), Category = Game) static FText HelloWorld(); FText UCreateNewObject::HelloWorld() { return FText::FromString("Hello World"); }
– こちらも https://wiki.unrealengine.com/Blueprints,_Creating_C%2B%2B_Functions_as_new_Blueprint_Nodes
• /** Activate Fancy New Project-Specific System Created in C++ ! */
UFUNCTION(BlueprintCallable, Category="SunShine") void ActivateSunShine();
• /** What is the current Sun Shine Rotation? ! */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="SunShine") FRotator GetSunShineRotation();
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの
ブループリント
C++を使いたい!
ブループリントノードの追加
プラグインの制作 独自の描画機能の実装
UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
プラグインの制作
• UE4はプラグインの制作も勿論サポートしています https://docs.unrealengine.com/latest/INT/Programming/Plugins/index.html https://wiki.unrealengine.com/Category:Plug-ins https://wiki.unrealengine.com/An_Introduction_to_UE4_Plugins
– 既にSVN(Subversion)等のプラグインが入っています
– 独自に拡張可能!
– さらにマーケットプレイスにも登場予定!
• 日本語ではヒストリアさんのブログで プラグイン等エディタの拡張方法が 紹介されています
– [UE4] プラグインによるエディタ拡張 http://historia.co.jp/archives/367
October 13
Unreal Fest 2014
プラグインの制作
• 現在は独自に公開されている方々がいます
– 例えばLeap Motion用プラグイン(開発中) https://github.com/wieser-m/UE4-LeapMotionPlugin
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの
ブループリント
C++を使いたい!
ブループリントノードの追加
プラグインの制作
独自の描画機能の実装 UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
独自の描画機能の実装
• 独自の描画機能のお話の前に先日のCEDECのおさらい http://www.slideshare.net/EpicGamesJapan/ue4-38802897
• UE4には物理ベースのレンダリングシステムが実装されている
– 物理ベースのライティング
– 物理ベースのマテリアル(シェーダー)
• ディファードシェーディングで実装されている
– これらのリッチなライトをシーン全体に沢山配置してリアルな表現が可能
– 特殊なライティングを部分的に適用することが難しい
• 特殊なライティングとは、例えば…
– トゥーンシェーディング(セルルックシェーディング)はUE4で難しい?
• 輪郭を描画する処理
• セルルックな塗り
October 13
Unreal Fest 2014
独自の描画機能の実装
• スタイライズドデモ
– 既存の機能でもこれくらいはできちゃいます
October 13
Unreal Fest 2014
スタイライズドデモ
• スタイライズドデモを見てみましょう
October 13
Unreal Fest 2014
独自の描画機能の実装
• 標準機能でも独自の描画、というかセルシェーディングできます
October 13
Unreal Fest 2014
独自の描画機能の実装
October 13
Unreal Fest 2014
独自の描画機能の実装
October 13
Unreal Fest 2014
独自の描画機能の実装
• さらに、ディファードシェーディングの苦手な点を克服して 独自の描画機能が実装しやすくなりました
– ShaderModel(LightingModel)が2ビット(4種)から8ビット(256種)へ
– 独自のシェーダーの実装(usfファイル)
– UE4のバージョン4.4から入ったClear Coat Shadingはこれらにより実現
– 冒頭でご紹介したSSSSSもバージョン4.5でこれらの機能により実現
October 13
Unreal Fest 2014
独自の描画機能の実装
• ShadingModelの追加によるメリット
– ポストプロセスでは参照できないパラメータの定義・参照ができるので 凝った描画機能を実装する事が可能
– ポストプロセスより高速な実装も可能
• グラフィックスプログラミング
– こちらのドキュメントが参考になります https://docs.unrealengine.com/latest/JPN/Programming/Rendering/index.html
• コード量もある程度あるので… 本日は実際にコーディングする所はお見せできませんが 後日コードを公開させていただきます
October 13
Unreal Fest 2014
独自の描画機能の実装
• UE4/Engine/Source/Runtime/Engine/Classes/Engine/EngineTypes.h(133) enum EMaterialShadingModel { → MSM_CellLooke UMETA(DisplayName="Cell Look"),
• UE4/Engine/Source/Runtime/Engine/Private/Materials/MaterialShader.cpp(44) FString GetShadingModelString(EMaterialShadingModel ShadingModel) { FString ShadingModelName; switch(ShadingModel) { → case MSM_CellLook: ShadingModelName = TEXT("MSM_CellLook"); break;
• UE4/Engine/Source/Runtime/Engine/Private/Materials/MaterialShader.cpp(88) void UpdateMaterialShaderCompilingStats(const FMaterial* Material) { → case MSM_CellLook:
• UE4/Engine/Source/Runtime/Engine/Private/Materials/MaterialShader.cpp(1184) void FMaterial::SetupMaterialEnvironment() → case MSM_CellLook: OutEnvironment.SetDefine(TEXT("MATERIAL_SHADINGMODEL_CELL_LOOK"), TEXT("1")); break;
October 13
Unreal Fest 2014
独自の描画機能の実装
• シェーダー側にもCellLook対応コードを記述
– ClearCoat や
• DeferredLightingCommon.usf
• PostProcessAmbient.usf
– CLEAR_COAT の文字列で
• BasePassPixelShader.usf
• ReflectionEnvironmentComputeShaders.usf
• ScreenSpaceReflections.usf
– の文字列で検索して出てくる対応コードに CellLook対応コードを追加していくのがわかり易いと思います
• シェーダーのコンパイルはShift+Ctrl+ピリオドで可能です
October 13
Unreal Fest 2014
UE4独自描画機能といえば・・・
• 先日の東京ゲームショーでMorpheusの体験ができましたね
– そこでSCEさんとサテライトさん制作の、AKB0048になってアクエリオンの世界に入る体験ができたのをご存知でしょうか?
– サテライト様ニュースリリース http://www.satelight.co.jp/news/category/post_002407.php
• サテライト様ニュースリリースより引用 「エンターテインメントの世界に、また劇的な変化が起こる可能性を感じています。長年ずっとやりたかった濃密な空間表現を試す事が出来て、新しいアイデアが次々に浮かんできます。360度の新世界は、実際に没入してみないと言葉では伝えきれないのがもどかしい。是非多くの皆さんに体験してほしいですね。」 (アニメーション監督 メカデザイナー 河森正治様)
「今回の映像は、ゲーム開発会社ヒストリア様の協力により、ゲーム開発とアニメ制作のお互いの経験やノウハウの相乗効果で生み出されました。まだまだ、技術共有で新しいことが実現できると感じています。」 (株式会社サテライト デジタル部 部長 CGプロデューサー 橋本トミサブロウ様)
October 13
Unreal Fest 2014
UE4独自描画機能といえば・・・
• サテライト様ニュースリリースより引用 「エンターテインメントの世界に、また劇的な変化が起こる可能性を感じています。長年ずっとやりたかった濃密な空間表現を試す事が出来て、新しいアイデアが次々に浮かんできます。360度の新世界は、実際に没入してみないと言葉では伝えきれないのがもどかしい。是非多くの皆さんに体験してほしいですね。」 (アニメーション監督 メカデザイナー 河森正治様)
「今回の映像は、ゲーム開発会社ヒストリア様の協力により、ゲーム開発とアニメ制作のお互いの経験やノウハウの相乗効果で生み出されました。まだまだ、技術共有で新しいことが実現できると感じています。」 (株式会社サテライト デジタル部 部長 CGプロデューサー 橋本トミサブロウ様)
October 13
Unreal Fest 2014
UE4の映像分野への活用も期待
• 映像分野へのUE4の導入で得られるメリット
– ハイエンドCGアニメーションをリアルタイムで再現
• リアルタイム動作することによる制作時の速度向上・再現性向上
• リアルタイム動作するコンテンツをユーザーがプレイできる
– 再現するだけでなくインタラクティブなコンテンツも実現可能
• ユーザーの操作とインタラクトできるコンテンツの実現
– MorpheusやOculus等でコンテンツの中に実際に入って体験する事も可能
• 外から眺めるのではなく実際に中に入っている感覚を与えられる
• リアルなCGだけでなくアニメやマンガ、絵画調等のノンフォトリアルも!
October 13
Unreal Fest 2014
UE4映像の中に入ってみましょう
• Showdown
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの
ブループリント
C++を使いたい!
ブループリントノードの追加
プラグインの制作
独自の描画機能の実装
UE4プログラミングのあれこれ Q&A
October 13
Unreal Fest 2014
UE4プログラミングのあれこれ
• UE4には技術者の皆さんをサポートする様々な機能があります
– 各種プロファイラ
• 独自のstatやグラフの追加も簡単です
– 弊社のJoeは最適化も得意なのでぜひ声をかけてください
October 13
Unreal Fest 2014
UE4プログラミングのあれこれ
• オートメーション https://docs.unrealengine.com/latest/JPN/Engine/Deployment/UnrealFrontend/index.html
– ビルドの自動化から、ユニットテスト、スモークテスト等…
– 様々なテストを積極的に支援!
– 技術的な情報はこちらをご確認ください https://docs.unrealengine.com/latest/JPN/Programming/Automation/TechnicalGuide/index.html
October 13
Unreal Fest 2014
UE4プログラミングのあれこれ
• 外部デバイスやサーバとの連携 – Leap Motionのプラグインは先ほどご紹介しましたが
Kinect等外部デバイスとの連携も既にできるようになっています
– CSVデータやJSONのパースは標準のブループリントやC++からできます
– さらに世界中の開発者さんがプラグイン開発を始めています https://wiki.unrealengine.com/Category:Plug-ins • 例えばRESTサーバと通信して
JSONクエリーを処理したり
• UE4とKinectといえば…
https://forums.unrealengine.com/showthread.php?389-Kinect-4-Windows-v2-0-Plugin
• 第2回ぷちコン(http://historia.co.jp/archives/920) で既に投稿されている方がっ! https://www.youtube.com/watch?v=lbkRGQ_gSFQ
October 13
Unreal Fest 2014
UE4+Kinect
October 13
Unreal Fest 2014
まとめ
• もちろんゲーム制作にはこれまでにないレベルの能力を持っています – エンジン・エディタを再構築してとことん創造性・生産性を向上
• ハイクオリティなコンテンツをマルチプラットフォームで制作可能
• ブループリントによるラピッド開発 • C++とブループリントの親和性
• エディタ側からC++のコードへの参照
• C++もホットリロードによりイテレーション時間を大幅に向上
• 深い所までカスタマイズ・拡張・最適化が可能
– コミュニティによるさらなる発展
• マーケットプレイスでのアセット等の販売・購入
• C++のエンジンコードもGitHub上でフル公開、コミットも可能
October 13
Unreal Fest 2014
本日のメニュー
UE4プログラミングの
ブループリント
C++を使いたい!
ブループリントノードの追加
プラグインの制作
独自の描画機能の実装
UE4プログラミングのあれこれ
Q&A
October 13
Unreal Fest 2014
Q&A
ありがとうございました 本日最後にまとめご質問タイムを設けてありますが、今ご質問がある方?
初めての方もぜひUE4を触ってみてください!