diary主にゲーム開発関連についての記事を書きます。Settings等のメモ随時更新していきます。基本はWindowsPC向けの内容。VR)でも役立つ内容も含みます。各項目には確認時のバージョンを記載しています。バージョンが古かったり新しかったりすると項目がなくなったり、場所や名前が変わったりしている可能性があります。SettingsWindowタイトルの変更方法(UE4.17.2)WindowタイトルとはPC向けに作成した際のWidnowの左上に出るタイトルです。何も指定していない場合はProject名が表示されます。Title」から変更できます。Name"と入れてみました。Application名の変更方法(UE4.17.2)上記のWindowsタイトルとよく間違えやすいのがこれです。Name」から変更できます。デフォルトではUE4Gameと入っています。Windowタイトルを変更しようとしますが、ここを変えても上手くいきません。この名前はタスクマネージャー等で表示されるアプリの名前です。Nameがあって、その下にWindowTitleがくるようになっています。編集をしていない場合だと、UE4Gameの下にProject名がくるようになっています。RHIs」から変更できます。DX11が有効になっています。これをDX11(ShaderModel5)のみにすることで不要なシェーダーが減り、パッケージ容量を削減できます。ThirdPersonTemplate等で試してみてもほぼ全く変わらないのですが規模が大きく、マテリアルが増えるほど効果が現れやすい部分です。11だと242KBのシェーダーDX11のみだと124KBと約半分の容量になりました。このように数百KB程度だと微々たる差ですが、これが数百、数千のマテリアルとなると話が変わってきます。シェーダーも1つで数百MBだと半分ほどの容量になるのは大きな変化ですね。項目が多いので、細かく分けます。Packaging以下のものになります。File」にチェックを入れると有効になります。説明の前に図で見てもらうと分かりやすいと思います。中には.pakの形式でContent以下のAssetが1つのデータに圧縮されています。Fileを使用しない場合Pakファイルの使用は容量の削減になり転送ファイル数が減るので配布時のダウンロードも早くなりロードも早くなるため使用することを推奨します。容量の参考までに自分のプロジェクトで使用した場合の容量を載せておきます。packages」にチェックを入れると有効になります。Fileにチェックを入れておく必要があります。容量の参考までに自分のプロジェクトで使用した場合の容量を載せておきます。一部プラットフォームは注意が必要です。サイズは減らずにロード時間が長くなってしまいます。Switchの場合ロード時間が早くなる場合と遅くなる場合があります。詳しくは下部の参考資料のリンクを見てください。PreferenceBlutilityの有効化(UE4.17.2)BlutilitはBlueprintをEditor上で呼び出すことでお手軽にEditor拡張が出来る機能です。UE4.17.2現在は実験的な機能として提供されています。この機能に関しては不安定というよりは、機能がまだ足りないため実験的な機能なのだと思います。Blueprints(Blutility)」から有効に出来ます。有効にした際のEditorの再起動は不要です。System)の有効化(UE4.17.2)EQSはAIが目的に応じた位置を探す時に使われる機能です。この位置は動的に生成され、その中から最もスコアの高い位置を選択します。Recall」でも採用されており、信頼性は高いです。System」から有効に出来ます。有効にした際のEditorの再起動は不要です。参考資料シェーダーモデルの制限によるメモリ容量削減バイキング様のスライド63ページ付近に該当箇所の説明があります。#UE4DDパッケージング関連パッケージの圧縮によるプラットフォームごとの注意点等詳しくはドキュメントに載っています。30選」です資料はslideshareとgithubにアップしました。公開した資料はslideshareでは標準でgifが動作しないため、githubにgif版をアップしました。gif版の方がより正確に内容が伝わりやすくなっていると思います。登壇内容を考えたのですが、初心者向けにBlueprintの操作についてまとめた資料を目標に作成しました。登壇時間が5分しかないということがすっぽり抜けており、当日は10個も紹介できませんでしたが。登壇の0-5分前にgithubとslideshareに公開できると勉強会が終わってからの作業もスムーズだと感じました。機会があればどこかで何かを話そうと思います。2019の22日目の投稿記事です。最初に結論だけを書きます。library)の使用方法について書きます。使用するライブラリは自作した簡単なライブラリを使用します。ExampleDllこの2つを用意しました。ライブラリ化する意味は全くありませんが、使用方法の参考例として用意しました。ライブラリの作成方法についてはUE4の話から逸れるため、作成方法などについては省略します。下記ドキュメントを参考にしてください。設定等は大幅に省いてざっくりとコードだけ載せます。libraryの作成こちらも設定等は省いてコードだけ。UE4でのLibraryの使用方法ようやくUE4の話に戻ります。新規にUE4プロジェクトを作成します。続いて使用するライブラリをそれぞれプロジェクトに紐付けるために適切なディレクトリに移します。以下にファイルを置くのが一般的でしょう。ThirdPartyというフォルダは存在しないため、新規作成します。:(ProjectRoot)\ThirdParty\(LibraryName)\include\(ProjectRoot)\ThirdParty\(LibraryName)\lib\(PlatformName)\今回は以下のように配置しました。filesでプロジェクトを再生成しています。これが正しいフローなのかどうかは疑問が残りますが、これでライブラリの更新は反映されます。ライブラリのリンクについて編集するのは基本的に下記のファイルのみです。(ProjectRoot)\Source\LibrarySandbox\LibrarySandbox.Build.csコメント等を削除して、初期の記述状態は下記になります。}}ライブラリの使用準備にあたってThirdPartyへのFullPath取得のPropertyを追加します。追加、ライブラリの追加です今回の例では下記のようになります。PublicAdditionalLibraries.Add("ExampleLib.lib");...}では実際に使用できるかコードを書いて確かめてみます。GameModeのctorから呼び出してみます。2));#endif}実行してみると無事に動作することが確認できました。PublicAdditionalLibrariesに設定を記述するだけでプロジェクトから使用できるため比較的お手軽です。今回の例では下記のようになります。RuntimeDependencies.Add(exampleDllFullPath);...}実際に使用できるかコードを書いて確かめてみます。GameModeのctorから呼び出してみます。1));#endif}実行してみるとエラーが出ます。中でKernelBase.dllで例外が発生したと表示されます。存在せずEditorから実行できません。Binaries/(Platforms)/以下にコピーするコードを追加します。}}これで無事に動作することが確認できました。RuntimeDependenciesが追加されました。RuntimeDependenciesは記述がなくとも動作しますがこれを設定していないとプロジェクトのパッケージング時にそのフォルダにDLLがコピーされないためDLLがなくて動作しないという問題を避けることができます。PC向けパッケージでは下記のようになります。使用例を全文載せておきます。docだとC++14と記載されています。ドキュメントしかし、現在はC++17以降も使用できるようになっています。2015のサポートを(基本的には)終了した頃からでしょうか。※基本的にはと書いたのはtarget.csにCompilerの指定を書けばVS2015でも動作するためです。おさらいとして、UE4で使用するIDEの変更方法についての記事も載せておきます。papersloth.hatenablog.comUE4のC++のバージョン指定方法UE4で使用されるC++のバージョン指定はProjectのtarget.cs内に記述をすることで変更が可能です。}}C++のバージョン指定は下記を追記するだけで行なえます。0番のみが使用されており、特に意識する必要はありません。Channelsを使うと独特で面白い絵作りや広いワールドに対してエリアごとに全く異なるライティングの絵作りなど特徴的な表現ができるようになります。パフォーマンスにも影響を与えるためプロファイリングをとって注意して扱ってください。Light上記4つになります。Channels」にあります。デフォルトでは0のみが使用されています。Channelは単一でも組み合わせでも設定が可能です。Channelを設定しても画面上で特に変化は起きないと思います。Channels」です。1点注意が必要なのが「影」です。Castするのは同一のChannelのメッシュ同士のみです。Lightを3つ配置しました。言葉にすると分かりにくいので、下図をご覧ください。1と書かれたキャラクターの影のみが落ちます。1と書かれたキャラクターと床は1の赤いライトのみが適用され2と書かれたキャラクターと床には2の青いライトのみが適用されるようになっています。以上の特性に気をつけて、色々な絵作りをやってみてください!以上です。Projectから直接参照されていないuassetをパッケージに含める方法UE4環境UE4.23.1登録方法と概要Project内では通常使用されないが、特殊なケースで使用したい場合に使えると思います。例:ロードしたいアセットがパッケージに上手く紐付かずやむを得ず暫定対応でロードさせたい場合...etcなんにせよ通常の開発では使わないものと思いますしずっと登録したままだと無駄にパッケージサイズが肥大化するため注意が必要です。注意点として、この方法が使えるのはContentフォルダ以下に配置された.uassetに限ります。以下に参照先のディレクトリを登録するだけです。DispatcherにBindする際に使用するEvent等があります。DIspatcherを使用した場合でも同様にBindすることが可能です。関数やMacroからは通常delegateを引数に追加することができません。MacroでDelegateを使用する方法MacroにはWildcardという型があり、それを引数にすることで使用できます。C++でいうところのTemplateのようなものだと理解してもらえればと思います。WildcardはBlueprintのforeachloopノード等で使用されています。1秒後にEventを実行するようなMacroを組む場合は下記のような形になります。あとはEventをWildcardに接続すると下図のようにWildcard型がDelegateとして認識されます。Eventで1.0を設定したときと同じ結果を得ることができました。Eventノードを呼び出します。PinをInputに接続することでDelegateを入力引数として登録することができます。動画ではMacroで説明を行いましたが、関数の場合でも同様の操作でDelegateの登録が可能です。動作についても問題なく行えます。以上、UE4のちょっとしたハック的なテクニックでした。実は過去記事でもこちらをサラッと紹介していました。Libraryにdelegateを登録しています。Blueprintでdelegateを引数で使用する方法Tweet広告を非表示にするもっと読むコメントを書く次のページプロフィールid:PaperSloth主にゲーム開発関連についての記事を書きます。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。