SlideShare a Scribd company logo
2019/09/04 C++Mix #5 :akoto
自己紹介
 名前 : akoto
 Twiiter : _akoto_
 お仕事 : UE4エンジニア
 スマホのゲーム会社から
転職してアニメ会社に勤めて、
UE4がお仕事になりました。
今回は、そこの過程で躓いた事を、
共有します。
1
お品書き
 対象者説明
 Unreal C++とは
 Unreal C++扱うまでの経緯
 躓きTips①(情報収集)
 躓きTips②(ビルド)
 躓きTips③(バージョン)
 躓きTips④(.generated.h)
 躓きTips⑤(エディタ)
 躓きTips⑥(マクロ)
 まとめ
2
対象者説明
 Unreal Engine4は、扱えるがUnreal C++
を書いた事が無い
 C++は書けるので、Unreal Engine4で機
能拡張を色々やりたい
※ 資料は、後日アップロードする予定です
3
Unreal C++とは
 Unreal Engine4で、機能拡張を行う為の
C++を拡張した言語
 最新のリリースバージョンの4.22では、
Visual Studio 2019に対応しており、
C++17サポートされている
https://www.unrealengine.com/ja/blog/unre
al-engine-4-22-released
4
Unreal C++を扱うまでの経緯
 新しく務めた仕事先が、Unreal Engine
で映像コンテンツを作っていた
 しかし、実験的に使っている事もあり、
Unreal Engineの技術に明るい人が居な
い
 しかも、Unreal Engineが提供していな
い機能が必要になった(サポート/プラグ
イン)ので覚えないと!
5
躓きTips①(情報収集)
 断片的な情報しかない
 ピンポイントのプログラムの説明が見かけ
るが、ゼロからC++プログジェクトを作っ
ている情報は無かった為、知識の間を補間
するのに苦労した
解決
良本に出合った「C++でつくるUnreal
Engineアプリ開発 for Windows & macOS 〜
初歩からプラグイン開発まで〜」
6
躓きTips②(ビルド)
 ビルドが辛い
 Slateという記法を独特。エディタの機能拡
張する場合は、「ウィジットリフレクタ」
を使う
 作成した同名のクラスの「.h」「.cpp」を
作成すると思うが、cppで、クラス名の.h
が一番上じゃないとビルドエラーになる
解決
失敗をしつつお作法として学んだ
7
ウィジットリフレクタ
8
ヘッダのビルドエラー
9
躓きTips③(バージョン)
 UE4のバージョンによって、対応している
Visual Studioのバージョンも違う。コンパ
イラが違えば、ビルドエラーになる
 必要によって、2015のRuntimeも入れる必
要があった
 コンパイルが通らないと、UE4のプロジェ
クトも開けなくなる
解決
できるだけシンプルな形にして、問題を切り
分ける
10
躓きTips④(.generated.h)
 C++のクラスを追加すると「クラス
名.generated.h」というファイルが作成
される
 このファイルが、再生成される条件が解
り難く、名前の変更やディレクトリの変
更でビルドがこける
解決
作成時のディレクトリ構成のままにする
11
躓きTips⑤(エディタ)
 Visual Studioが使い難い
 デフォルトだと宣言や定義に飛べない事も
多く、コードを細部まで追えない
 また、grepでエンジンコードも引っかかる
事がある為、目的のコードに辿りつけない
解決
「VISUAL ASSIST」を導入した
https://www.wholetomato.com/
12
VISUAL ASSIST
13
躓きTips⑥(マクロ)
 追加したクラスをnodeとして使う為、
マクロが多い
 マクロを書く位置にも意味があり、
nodeとして使う場合は、書いたコード
の前の行に書く必要がある
解決
お作法として学んだ
14
ヘッダに書かれたマクロ
15
まとめ
 Unreal C++は、情報は少なく慣れるま
でも時間がかかった
 お作法も多い為、こちらの参考書がとっ
かかり易かった
C++でつくるUnreal Engineアプリ開発 for Windows & macOS 〜初
歩からプラグイン開発まで〜
 機能拡張を行う場合は、エンジンコード
を解析する事も多く、VISUAL ASSIST
を導入をおすすめ
16

More Related Content

Similar to C++mix#5

UE4でジェネレーティブ表現をしよう
UE4でジェネレーティブ表現をしようUE4でジェネレーティブ表現をしよう
UE4でジェネレーティブ表現をしよう
Tatsuya Yokota
 
Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)
Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)
Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)
エピック・ゲームズ・ジャパン Epic Games Japan
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
noldor
 
Unreal engine4ビギナー勉強会補講
Unreal engine4ビギナー勉強会補講Unreal engine4ビギナー勉強会補講
Unreal engine4ビギナー勉強会補講
エピック・ゲームズ・ジャパン Epic Games Japan
 
エンタープライズ分野向けUE4最新機能のご紹介
エンタープライズ分野向けUE4最新機能のご紹介エンタープライズ分野向けUE4最新機能のご紹介
エンタープライズ分野向けUE4最新機能のご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
 
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについてゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
Tatsuya Iwama
 
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介![CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
 
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについてC++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
Masahiko Nakamura
 
Unity/CSharp 2
Unity/CSharp 2Unity/CSharp 2
Unity/CSharp 2
tagawakiyoshi
 
UE4制作におけるゲームデザイナーのやれること
UE4制作におけるゲームデザイナーのやれることUE4制作におけるゲームデザイナーのやれること
UE4制作におけるゲームデザイナーのやれること
キンアジ ちゃん
 
Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。
IndieusGames
 
Kinect Camp with TMCN / Kinect入門ハンズオン 2015.06.06
Kinect Camp with TMCN/ Kinect入門ハンズオン 2015.06.06Kinect Camp with TMCN/ Kinect入門ハンズオン 2015.06.06
Kinect Camp with TMCN / Kinect入門ハンズオン 2015.06.06
Akira Hatsune
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
tak9029
 
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
 
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
noldor
 
Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。
Manato KAMEYA
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
U1w共有会 21/10/09
U1w共有会 21/10/09U1w共有会 21/10/09
U1w共有会 21/10/09
yousan1
 
Oculus Rift with Unreal Engine 4 @ 第2回裏ocufes
Oculus Rift with Unreal Engine 4 @ 第2回裏ocufesOculus Rift with Unreal Engine 4 @ 第2回裏ocufes
Oculus Rift with Unreal Engine 4 @ 第2回裏ocufes
エピック・ゲームズ・ジャパン Epic Games Japan
 
第2回名古屋CV・PRML勉強会 「Kinectの導入」
第2回名古屋CV・PRML勉強会 「Kinectの導入」第2回名古屋CV・PRML勉強会 「Kinectの導入」
第2回名古屋CV・PRML勉強会 「Kinectの導入」
Tsukasa Sugiura
 

Similar to C++mix#5 (20)

UE4でジェネレーティブ表現をしよう
UE4でジェネレーティブ表現をしようUE4でジェネレーティブ表現をしよう
UE4でジェネレーティブ表現をしよう
 
Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)
Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)
Twinmotion 最新情報(初学者のためのTwinmotionオンラインセミナー 2020/6/13)
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
 
Unreal engine4ビギナー勉強会補講
Unreal engine4ビギナー勉強会補講Unreal engine4ビギナー勉強会補講
Unreal engine4ビギナー勉強会補講
 
エンタープライズ分野向けUE4最新機能のご紹介
エンタープライズ分野向けUE4最新機能のご紹介エンタープライズ分野向けUE4最新機能のご紹介
エンタープライズ分野向けUE4最新機能のご紹介
 
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについてゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
 
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介![CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
[CEDEC2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
 
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについてC++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
 
Unity/CSharp 2
Unity/CSharp 2Unity/CSharp 2
Unity/CSharp 2
 
UE4制作におけるゲームデザイナーのやれること
UE4制作におけるゲームデザイナーのやれることUE4制作におけるゲームデザイナーのやれること
UE4制作におけるゲームデザイナーのやれること
 
Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。
 
Kinect Camp with TMCN / Kinect入門ハンズオン 2015.06.06
Kinect Camp with TMCN/ Kinect入門ハンズオン 2015.06.06Kinect Camp with TMCN/ Kinect入門ハンズオン 2015.06.06
Kinect Camp with TMCN / Kinect入門ハンズオン 2015.06.06
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
 
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
 
Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
U1w共有会 21/10/09
U1w共有会 21/10/09U1w共有会 21/10/09
U1w共有会 21/10/09
 
Oculus Rift with Unreal Engine 4 @ 第2回裏ocufes
Oculus Rift with Unreal Engine 4 @ 第2回裏ocufesOculus Rift with Unreal Engine 4 @ 第2回裏ocufes
Oculus Rift with Unreal Engine 4 @ 第2回裏ocufes
 
第2回名古屋CV・PRML勉強会 「Kinectの導入」
第2回名古屋CV・PRML勉強会 「Kinectの導入」第2回名古屋CV・PRML勉強会 「Kinectの導入」
第2回名古屋CV・PRML勉強会 「Kinectの導入」
 

C++mix#5