Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
猫でも分かる UE4の新しいサンプル「Action RPG」について
エピック・ゲームズ・ジャパン Epic Games Japan
Online MultiPlay Game Design
エピック・ゲームズ・ジャパン Epic Games Japan
[UE4]自動テストでもっと楽したい!
com044
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
エピック・ゲームズ・ジャパン Epic Games Japan
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作について
Masahiko Nakamura
UE4.25 Update - Unreal Insights -
エピック・ゲームズ・ジャパン Epic Games Japan
UE4におけるレベル制作事例
エピック・ゲームズ・ジャパン Epic Games Japan
1
of
45
Top clipped slide
UE4とUnrealC++について
Sep. 20, 2015
•
0 likes
61 likes
×
Be the first to like this
Show More
•
39,136 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Engineering
Event for Diverse Game Engineersというイベントで喋った時のスライドです。 Unreal Engine 4のC++環境についての解説です。
Masahiko Nakamura
Follow
インディーゲームクリエイター at フリーランス
Advertisement
Advertisement
Advertisement
Recommended
猫でも分かるUE4.22から入ったSubsystem
エピック・ゲームズ・ジャパン Epic Games Japan
19.7K views
•
85 slides
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
エピック・ゲームズ・ジャパン Epic Games Japan
8.1K views
•
132 slides
UE4のためのより良いゲーム設計を理解しよう!
Masahiko Nakamura
26.8K views
•
77 slides
UE4で作成するUIと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
15.9K views
•
158 slides
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
56.3K views
•
120 slides
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
Tatsuya Iwama
22.1K views
•
68 slides
More Related Content
Slideshows for you
(20)
猫でも分かる UE4の新しいサンプル「Action RPG」について
エピック・ゲームズ・ジャパン Epic Games Japan
•
33.5K views
Online MultiPlay Game Design
エピック・ゲームズ・ジャパン Epic Games Japan
•
9.5K views
[UE4]自動テストでもっと楽したい!
com044
•
18.6K views
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
エピック・ゲームズ・ジャパン Epic Games Japan
•
5.2K views
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
•
19.9K views
モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作について
Masahiko Nakamura
•
18.9K views
UE4.25 Update - Unreal Insights -
エピック・ゲームズ・ジャパン Epic Games Japan
•
4K views
UE4におけるレベル制作事例
エピック・ゲームズ・ジャパン Epic Games Japan
•
36.5K views
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
•
21.5K views
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
com044
•
6.9K views
UE4でPerforceと連携するための手順
エピック・ゲームズ・ジャパン Epic Games Japan
•
9.3K views
UE4におけるキャラクタークラス設計
Masahiko Nakamura
•
16.9K views
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
Tatsuya Iwama
•
1.8K views
UE4を用いたTPS制作事例 EDF:IR レベル構成について
エピック・ゲームズ・ジャパン Epic Games Japan
•
13K views
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
エピック・ゲームズ・ジャパン Epic Games Japan
•
26.4K views
はじめてのAI~ 愛のあるAIを作ろう
Masahiko Nakamura
•
26.3K views
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
•
65.5K views
なぜなにFProperty - 対応方法と改善点 -
エピック・ゲームズ・ジャパン Epic Games Japan
•
9K views
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック・ゲームズ・ジャパン Epic Games Japan
•
19K views
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
•
43K views
Similar to UE4とUnrealC++について
(20)
第1回UE4名古屋勉強会
Masahiko Nakamura
•
67.5K views
第5回ue4ハンズオンセミナー
Masahiko Nakamura
•
140.4K views
あんりあるフレンズ ~あなた、アンリアルがとくいなけものなんだね~
Yuuki Ogino
•
1.1K views
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
Masahiko Nakamura
•
96.8K views
UE4映像制作ハンズオン@大阪
Masahiko Nakamura
•
10.2K views
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
エピック・ゲームズ・ジャパン Epic Games Japan
•
9.8K views
Unityは神,Unrealは現実
Linea319
•
91.3K views
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
•
21K views
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
Tatsuhiro Tanaka
•
32.7K views
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
•
28.2K views
C++mix#5
akoto
•
444 views
Unreal Engine MeetUp Saitama #10スライド資料
Yuuki Ogino
•
414 views
Unreal Engine MeetUp Saitama #11【UNREAL FEST WEST最速報告会】スライド資料
Yuuki Ogino
•
794 views
Unreal Engine MeetUp Saitama #15 & GUNMA #5スライド資料
Yuuki Ogino
•
172 views
脱Unity!?UE4でVR開発のここが変わった
COLOPL, Inc.
•
1.7K views
はじめてのUnreal Engine 4
Shun Sasaki
•
146.5K views
Unreal Engine MeetUp Saitama #9 スライド資料
Yuuki Ogino
•
238 views
ブループリントマニアックス
Masahiko Nakamura
•
20.4K views
エンタープライズ分野向けUE4最新機能のご紹介
エピック・ゲームズ・ジャパン Epic Games Japan
•
8.9K views
ゲームエンジンの違い
Hideki Koike
•
466 views
Advertisement
More from Masahiko Nakamura
(17)
UE4のコンポジット機能をもっと深く使ってみた
Masahiko Nakamura
•
12.8K views
映像制作者向け UE4で作る映像制作ワークショップ
Masahiko Nakamura
•
7.3K views
UE4の攻略方法を伝授! より効率よく楽しく学ぶ ための鉄則について
Masahiko Nakamura
•
14.6K views
ゲームエンジンを活用して同人ゲームを完成させるノウハウについて
Masahiko Nakamura
•
7.5K views
UE4でパノラマVRをやってみよう
Masahiko Nakamura
•
3.7K views
GGJ2017 事前勉強会 UE4編
Masahiko Nakamura
•
4.1K views
拳と筋肉とバーチャリアリズム
Masahiko Nakamura
•
2.1K views
絵心がなくてもわかるUE4絵作りのコツ
Masahiko Nakamura
•
13.5K views
Unreal engine 4でのリアルタイムセルルック3DCGアニメーション
Masahiko Nakamura
•
5.1K views
ブループリント+ビジュアルスクリプトと仲良くやる方法
Masahiko Nakamura
•
3.3K views
ゲームジャムでのチーム制作における大事なこと
Masahiko Nakamura
•
13.3K views
Bullet TrainとOculus Touchの衝撃
Masahiko Nakamura
•
3.1K views
Powerful of blueprint visual scripting
Masahiko Nakamura
•
17.3K views
Unity5とUE4の比較
Masahiko Nakamura
•
57.5K views
50分でわかるブループリントについて
Masahiko Nakamura
•
70.9K views
第一回 関西UE4ハンズオンセミナー
Masahiko Nakamura
•
3K views
ゲーム開発環境の自動化
Masahiko Nakamura
•
12.3K views
Recently uploaded
(20)
41布兰登大学.pdf
dsadasd17
•
2 views
★可查可存档〖制作温尼伯大学文凭证书毕业证〗
mmmm282537
•
3 views
★可查可存档〖制作巴黎第十二大大学文凭证书毕业证〗
tujjj
•
3 views
☀️《UIUC毕业证仿真》
hjhgg
•
2 views
68范莎学院.pdf
fdhrtf
•
2 views
办皇家墨尔本理工大学毕业证成绩单
JhhhfGffh
•
3 views
★可查可存档〖制作布克大学文凭证书毕业证〗
mmmm282537
•
2 views
AI予約サービスのMLOps事例紹介
Takashi Suzuki
•
4 views
174-田纳西大学.pdf
LorettaPrice2
•
2 views
#国外留学文凭购买Trent假毕业证书
fc2c0f2b1mymailol
•
2 views
28西澳.pdf
dsadasd17
•
2 views
103卡内基梅隆大学.pdf
LorettaPrice2
•
2 views
★可查可存档〖制作波恩大学文凭证书毕业证〗
tujjj
•
9 views
EchoyaGinhanazeSu_inoka.pptx
keink
•
2 views
12莫纳什.pdf
dsadasd17
•
3 views
☀️《Bournemouth毕业证仿真》
fggg13
•
2 views
ChatGPTをもっと使いたい.pptx
TokioMiyaoka
•
410 views
★可查可存档〖制作国立大学文凭证书毕业证〗
tujjj
•
2 views
办加拿大多伦多大学假文凭毕业证
JhhhfGffh
•
3 views
☀️《Ohio毕业证仿真》
DFFFFG
•
2 views
Advertisement
UE4とUnrealC++について
Unreal Engine 4と Unreal
C++での プログラミング環境について Event for Diverse Game Engineers by alwei
自己紹介 HN : alwei
(アルウェイ) 関西アンリアル勢 Twitterよくやっています → @aizen76 元々はゲームプログラマーを8年ほどやっていました。 今は独立してフリーになってゲーム制作に関連する お仕事を受けるようになり、ゲーム作りの何でも屋。 ゲームをやるのも作るのも大好き。 趣味でお絵描きやモデリングもやりながらゲーム制作。
Unreal Engine 4について 最近無料化したゲームエンジン。 3Dゲームから2Dゲームまで割りと何でも作れる。 最新作のドラクエ11のPS4版がUE4採用という事で話題に。 なんとドラマ版デスノートのリュークのCGもUE4だとか。 その他日本のゲームでも沢山採用されており、 業界内外から注目を集めている。 Epic
Games Launcherより
UE4でのロジック制作環境 先に断わっておくと、UE4ではC++コードを書くよりも ブループリントと呼ばれるビジュアルスクリプトシステムで ゲームは完全に制作可能です。 特にこだわりがなければ、 C++よりもブループリントを 使う事をおすすめします。 ブループリント超強力なんで!!
じゃあなんでC++を使うの?
なんでC++を使うの? 『パフォーマンスがもっと欲しい』 『エンジンやエディターを拡張したい』 『外部ライブラリーやSDKを使いたい』 『独自デバイスを繋ぎたい』 『C++の勉強に』 等々…ブループリントだけでは不可能なあらゆる事が 可能となるので、用法要領を守ってお使いください
早速ですが…
Unreal C++は素晴しい!
Unreal C++って何? C++を初心者でも使いやすくし、 更に沢山の独自拡張を施す事によって Unreal Editorとの親和性を高めている。 その独自拡張故に、既存のC++にはないメリットがある。 C#やJavaやJava
Scriptの特徴も取り込んでおり、 そういった言語を学んだプログラマーなら入りやすい。
ビルドアーキテクチャー
ビルドシステムについて Unreal Build Toolがプロジェクト全体を解析。 独自拡張されたC++部分のメタ情報も作りだす。 Mono
C#はクロスプラットフォームで動作する、 Unreal C++のモジュールシステムやライブラリーの 管理やリンクを行ない、プロジェクトデータを生成する。 最終的な情報をVisualStudioやXcodeに 渡す事によってビルドを完了させる。 実はWindows、MacだけではなくLinuxでも動作する。
Unreal C++の特徴 • 比較的モダンC++ •
エンジン全体で統一されたコーディングルール • C++11ベースでC#にも近いスタンダードライブラリー • 徹底的に自動化されたコード生成環境 • 完全なメモリー管理とガベージコレクション搭載 • メタ情報による独自リフレクションシステム • ブループリントとの完全な連携 • 実行中にC++コードを書き換えるホットリロード
比較的モダンC++ 近年のC++の特徴は大体取り込んでいる。 ライブラリーのコンテナはRange based forに対応。 同様にコンテナはムーブセマンティクスにも対応しており、 一時オブジェクトのコピーは発生しない。 コンテナのアルゴリズムには無名関数による、 ラムダ式での記述も可能。 autoキーワードや強い型付けのenumなどのC++11で 追加された機能の使用を推奨している。
比較的モダンC++ ただし全てのコンパイラーが対応していない機能には 慎重になっており全てがモダンというわけではない。 コンパイラーの対応により少しずつ機能が拡充されている。 しかしあくまでもC++を簡単に扱えるようにするために、 C++の難解部分の使用は避けられている。
コーディングルール
コーディングルール https://docs.unrealengine.com/latest/JPN/Programming /Development/CodingStandard/index.html エンジン全体で統一されたコーディングルールがあるため、 プロジェクトでもこれを採用すれば混乱が少ない。 コーディングルール自体はC#の標準にかなり近い。 読み易さ重視により、クセのない書き方になっている。 変な文化のルールに従うよりもこれを採用した方が良い。
コーディングルール
コードの宗教戦争はやめよう\(^o^)/
スタンダードライブラリー C++のスタンダードライブラリーは使いません。 Unreal C++ではゲーム用に特化したライブラリーが用意 されており、マルチプラットフォームで統一された動作、 メモリー管理、独自拡張が提供されます。 ベースはC++11になっており、その他の言語の特徴を ライブラリーに沢山取り入れている。
コンテナ
コンテナ C++標準よりも圧倒的に数が多い。 std::vector → TArray std::unordered_set
→ TSet std::unordered_map → TMap どれもベースはあるが、C#のようなメソッドが追加されて 更に使い勝手が良くなっている。 もちろんラムダ式やムーブセマンティクスにも対応。 イテレーターはRange based for形式で使用可能。
文字列 ■FString std::stringがベースであるものの、ほぼ別物。 使い勝手はC#のString型そのものに近い。 SplitやTrimなどの分割や豊富な文字列検索機能あり。 ■FText 文字列を実際に表示するためのシステム。 完全なマルチ言語対応になっていて、UE4の言語切り替えで 別の言語表示にネイティブ対応出来るようになっている。
文字列 ■FName データ上、完全に静的な扱いとなる文字列。 FStringやFTextと違い、ランタイム変更が出来ないので、 キーによる参照が圧倒的に速い。 アセットの名前などゲーム中に変わらない文字列に使う。 UE4の文字列は最初から多言語対応を前提としており、 エンコードシステムに従えばあらゆる言語に対応可能。 ネットワークを通じてのシリアライズ、デシリアライズにも しっかりと対応している。エンディアン変換もOK。
デリゲート C#にあるデリゲートのような機能を持ちながら、 std::functionのように完全に型安全な関数コールが可能。 MyDelegate.BindUObject(&MyClass::MyFunction); MyDelegate.Execute(true, 20); いくつでも関数を追加・削除、更に一度でブロードキャスト 呼び出し出来るマルチキャストデリゲートや、 シリアライズ可能なダイナミックデリゲートという 特殊なデリゲートもある。
自動化されたコード生成環境 プロジェクトファイルにコードを追加する際に、 IDEから直接追加せずにUnreal Editorが自動で行なう。 また生成されたコードの配置やテンプレートコードも 同時に作成されるため、追加も楽でミスも少ない。 .cppと.hを個別に作成する必要もなく、 ヘッダーのインクルードも同時に行なわれる。
自動化されたコード生成環境 手間のかかるコード生成はエディターのGUIから クラスウィザードでクラス名を入力するだけでOK!
完全なメモリー管理とGC搭載 C++だけど、ガベージコレクションあり。 全てのクラスのベースクラスである、 UnrealObject(UObject)を継承したクラスであれば、 自動的にUE4のガベージコレクターへ登録。 MyGCType* DoomedObject =NewObject<MyGCType>(); これで後は適切なタイミングで破棄してくれる。
GCの最適化 GCの制御も可能。 GCの呼び出し間隔や 強制的なGC呼び出しも可能。 更に並列化GCや、 一定サイズパーマネントの オブジェクトプール化も可能。
メモリーの可視化 当然全てのメモリーは トラッキングされているので 使用状況はいつでも確認可能! 使用状況だけでなく、 GCやオブジェクトプール 情報やメモリーによる負荷を 知る事が出来る。 より詳細は更に各々の プロファイラーで確認可能。
スマートポインター UObjectでないものはGC対象にならないので、 そういう場合にはスマートポインターを使う。 TSharedPtr(共有ポインター) TSharedRef(参照型の共有ポインター) TWeakPtr(弱参照ポインター) 基本はBoostやSTLにあるものと同様だが、 ゲームで使用する前提の設計になっている。
標準スマートポインターとの違い • コンソール、ハードウェアやコンパイラーを意識した実装 • BoostやSTLよりも高速に動作 •
デフォルトはスレッドセーフではない • スレッドセーフ版が存在(TThreadSafeSharedPtr等) • スレッドセーフ版はロック・フリー採用 • コピー時にメモリー割り当てを行なわない 基本的にパフォーマンスを優先。 無駄なメモリー確保をしない。 コンソールでの実用を考えて例外機構を使用しない。
メタ情報によるリフレクション C++にはリフレクション機能がない。 RTTI(実行時型情報)はあるが、無駄が多く機能が弱い。 Unreal Build Toolの中にUnreal
Header Toolというものが あり、コンパイラー実行前にヘッダーのメタ情報を解析する。 このメタ情報から自動的にリフレクション用のヘッダーを 生成する事が出来る。このヘッダーは自動生成でかつ クラス追加時に自動的にインクルードされるので、 何も意識しなくても使用する事が可能になっている。
メタ情報について
メタ情報について 通常のC++には存在しない書き方になっている。 クラスや変数や関数、構造体につける事が可能。 • UCLASS • UPROPERTY •
UFUNCTION • USTRUCT もし記法にミスがあるとUnreal Header Toolが エラーを表示してくれるようになっている。
リフレクション // イテレーターを使用して、クラスの名前を取得。 for (TObjectIterator<UObject>
It; It; ++It) { UObject* CurrentObject = *It; UE_LOG(LogTemp, Log, TEXT("Found UObject named: %s"), *CurrentObject.GetName()); }
更にメタ情報について メタ情報はリフレクションだけのためのものではない。 クラスや変数、関数に様々な機能を追加する事が出来る。 ブループリントへの情報、カテゴリー分け、 ローカライズ変数、セーブデータ変数、ネットワーク変数、 サーバー関数、クライアント関数などなど… Unreal C++にとってメタ情報は なくてはならないコア機能となっている。
ブループリントとの完全な連携 メタ情報を使いこなす事により、 ビジュアルスクリプトシステムと完全な連携が可能。 // プレイヤーのライフを宣言 UPROPERTY(BlueprintReadWrite, Category=“Player”) float
Life; // プレイヤーのライフを表示 UFUNCTION(BlueprintCallable, Category=“Player") void DisplayLife();
ブループリントへ公開 C++に書いた内容がブループリント上へと追加されています。
ホットリロード エディター、ゲーム実行中にC++コードを 書き換える事が可能です。
何言ってんの?
いやいや、冗談でしょ?
ホットリロード エディター、ゲーム実行中にC++コードを 書き換える事が可能です。 Unreal C++は完全なモジュールシステムを 採用しているため、実行時に書き換えた部分のみ、 DLLをリロードする事でC++コードを読み直す。 C++を使っている人には一番衝撃を受ける機能のひとつ。
ホットリロード実演
Unreal C++は素晴らしい! 以上でUnreal C++の基礎部分だけですが、 様々な事が判ったと思います。 ブループリントの凄さに隠れがちですが、 Unreal
C++はC++の煩わしさを軽減し、 C++をストレスフリーに使える機能が沢山あります。 ただし、C++を無理して使う必要はありません。 ブループリントだけでも十分にゲームを作れる ということは忘れないでください。
Unreal Fest 2015
横浜 エピック・ゲームズ・ジャパン公式の Unreal Engineセミナーイベント! 参加募集人数なんと1000人! 10/18(日)9:30~19:00 こちらでも登壇しますのでよろしくネ!
Advertisement