Pomb記

おもにUE4での記録

Unreal C++でのプログラミング環境についての私的メモ

Event for Diverse Game Engineersでのalwei(@aizen76)さんによる「Unreal Engine 4とUnreal C++でのプログラミング環境について」のメモを載せます。

peatix.com

先に断わっておくと僕はC++どころかプログラミング全般に疎いことと、(メモを残すには)話のペースが早かったため、至らないところが多いと思います。スライドが公開されているので先にそちらを参照してください。

www.slideshare.net

以下、(実演等)スライドに書いていない部分を意識したメモ

 

○何故C++を使うのか

・パフォーマンス。BPに比べて、何倍の差が出る可能性もありうる。(聞き間違いでなければ十数倍)

・エンジンやエディター拡張。エンジンはフリーで全て読める。自分で拡張したものをgitに上げると採用されることも。

・外部ライブラリやSDKを動かしたい。

・独自デバイスにつなぎたい。例:Kinect

C++の勉強に。C++は今後の業界で絶対必要。

Unreal C++は素晴らしい。Unreal C++ is Awesome!

C++を初心者でも使いやすくし、独自の拡張でUnreal Editorとの親和性を高めている。

○ビルドシステム

Unreal Build Toolというものが全体の管理をしている。

・Mono C#が組み込まれている。管理やリンクなど、複雑な部分まで組み込まれているという。

最終的な情報をVSやXcodeに渡すことによってビルドを完了させている。

 

Unreal C++の特徴(ほとんどがスライドに有)

○比較的モダンC++

・近年のC++の特徴は大体取り組んでいる。

・ライブラリのコンテナはrange based forに対応。

・あくまでもC++を簡単に扱えるようにするためにC++の難解部分の仕様は避けられている。例:Template Programming

○コーディングルール

・公式ドキュメントにある。(コーディング標準 | Unreal Engine)

・UE4のプロジェクトはこれで統一すれば混乱は少ない。

・ルール自体はC#の標準にかなり近い

・ルールの例:中括弧の改行

○スタンダードライブラリー

C++のスタンダードライブラリーは使わない。ただし考え方は近い。

・ゲームに特化したライブラリーがある。

・無理にスタンダードライブラリーは使わない方がいい

○コンテナ

・約50種類ある。標準より圧倒的に多い。

・例:std::vector→TArray

C#のようなメソッドが追加されている。

○自動化されたコード生成環境

Unreal Editorが自動で行う。例:新規Actorに名前を付ける。

・追加も楽でミスが少ない。

○完全なメモリー管理とGC搭載

ガベージコレクション有。

・UObjectを継承したクラスであれば、自動的にUE4のガベージコレクタへ登録

○メモリーの可視化

スマホ上でも出来る(4本指→コンソールコマンド)

○スマートポインタ

・UObjectでないものはGC対象にならないのでスマートポインタを使う。

 

ここからはよりUnrealらしい話

○メタ情報

Unreal C++にとってメタ情報は無くてはならないコア機能。

・BPとの完全な連携も可能

C++の内容がBPへ追加される。

○ホットリロード

C++では実行中にコードの書き換え可能

・冗談ではない。

・モジュール化によって、書き換えた場所の部分的な読み直しが可能。

 

※ここで実演アリ surface Proで動かした。オンボードだが結構サクサク動くとのこと。

・ファイル?→新規C++の追加→新規Actorに名前を付ける。これでC++で書けるアクターを生成。

C++がエディター上でコンパイルされる。VSでは何もしていない。

Unrealでもヘッダーの書き換えは時間がかかるので避けた方がいい。

・実行前にマネキンのアクターをレベルに追加した。

コンパイル後にマネキンにコードを書いて、コンパイルせずに実行(ゲームを動かす)。

・そして実行→コンパイルで、実行中のまま変更が適用された。

・さらに実行中のまま、マネキンにコード追加。コンパイルに失敗した。

・エラー文をダブルクリックすれば問題のコードに飛べる。

C++コンパイル時間が長い。

 

・コードで追加した変数はBPにも反映されている。

・UE_LOGによって、ログに文字が表示された。いわゆるPrint

・VSを立ち上げずに、エディター上で書くことも出来る。書きにくいので非推奨。

・エディター上の変数等をダブルクリックするとVSのページに飛べる。