C++ ときどき ごはん、わりとてぃーぶれいく☆

Wonder Rabbit Projectのなかのひとのブログ。主にC++。

UE4

UE4: UnrealWebServer Plugin が 1.4+ のバージョンアップで URL ハンドラーの path ワイルドカードと接続情報からの path の取得に対応

概要 プラグインのバージョン情報の定義は 1.4 のままですが、 UnrealWebServer が更新され、新機能が追加されました。今回追加された新機能は以前にバグレポートとパッチをなかのひとへ送った際に「ついでに将来的にこんな機能にも対応してくれたら嬉しいな…

CPP-QUIZ from Unreal 2017 ( part-2/2; 答え編 )

(この記事は前の投稿 CPP-QUIZ from Unreal 2017 ( part-2/2; 出題編 ) に対応する答え編です。) 2. こたえ Q1. float 型の [ 0.0 .. 1.0 ] の値を uint8 型の [ 0 .. 256 ) へ写像したかった 出題のソースコードでは、 "出力が 255 となる元の値の範囲" …

CPP-QUIZ from Unreal 2017 ( part-1/2; 出題編 )

0. はじめに この記事は C++ Advent Calendar 2017 の DAY 1 に寄稿したものです。 初日は楽しい記事が良いだろうと考え、クイズ形式で C++ コードを楽しむコンセプトで記事を書くことにしました。今年は UE4 の C++ 実装を眺める時間が業務でも多くなりまし…

Real Unreal Engine C++ 2017-12 (part-5/5)

(はてなブログの記事あたりの容量制限のため前の部分 §1.10. までは前の記事でどうぞ→Real Unreal Engine C++ 2017-12 (part-4/5) - C++ ときどき ごはん、わりとてぃーぶれいく☆) 1.11. UE4/C++ における入門的な「スレッド」ライブラリーの std 互換性 s…

Real Unreal Engine C++ 2017-12 (part-4/5)

(はてなブログの記事あたりの容量制限のため前の部分 §1.9.4 までは前の記事でどうぞ→http://usagi.hatenablog.jp/entry/2017/12/01/ac_ue4_2_p3) 1.9.5 FMath に含まれる型 FMath には3次元の可視空間を扱う上で必要な形状や数値を扱うための型も定義され…

Real Unreal Engine C++ 2017-12 (part-3/5)

(はてなブログの記事あたりの容量制限のため前の部分 §1.9.3 までは前の記事でどうぞ→Real Unreal Engine C++ 2017-12 (part-2/5) - C++ ときどき ごはん、わりとてぃーぶれいく☆) 1.9.4. Fmath の真価 前項では FMath について少し残念な結果も見えたが、…

Real Unreal Engine C++ 2017-12 (part-2/5)

(はてなブログの記事あたりの容量制限のため前の部分 §1.8. までは前の記事でどうぞ→http://usagi.hatenablog.jp/entry/2017/12/01/ac_ue4_2) 1.9. UE4/C++ における入門的な「数学」ライブラリーの std 互換性と独自性 1.9.1. FMath における C++ CRT 互…

Real Unreal Engine C++ 2017-12 (part-1/5)

0. はじめに この記事は Unreal Engine 4 (UE4) その2 Advent Calendar 2017 の DAY 1 に寄稿したものです。 1. 概要 std 慣れしたプロフェッショナルとしてある程度の経験と知識のあるベテランの C++er でも UE4 フレームワークの C++ ソースコードと対峙す…

UE4: クラスファイルにたいてい仕込むログマクロの糖衣マクロ

UE4 に C++ コードファイルを追加する場合、特に UCLASS では規模がよほど小さくない限りたいてい定義するログマクロの定義と糖衣を紹介。 // MyHoge.h // コンパイラーオプションで MYHOGE_ENABLE_LOG=1 など明示的に渡されない場合でも // デバッグビルド…

UE4: UnrealWebServer-1.4 の GetData に文字列末尾が汚染されるバグを見つけたので応急対処法

1. UnrealWebServer Unreal Web Server – IsaraTech 2. 問題 UnrealWebServer-1.4 の GetData API の返り値の文字列の末尾がランダムな文字群で汚染されるバグに遭遇した。高頻度で汚染される。 GetData API は POST のリクエストボディー全体を一括取得する…

UE4: 4.17.2 -> 4.18.1 プロジェクトのアップデートで発生した Warning と Error と対処メモ

若干の調査は必要なものの何れも些細な単純な置き換えで済む問題だけで済んだ。 Warning 1. AddTorque は AddTorqueInRadians に置き換えよ warning C4996: 'UPrimitiveComponent::AddTorque': Use AddTorqueInRadians instead. Please update your code to …

UE4: Free Voxel Plugin の作者が Marketpalce にて $99.99 で売り出された Voxel Plugin に痛烈なコメントを付けている件

Marketplace に出品された問題のプラグインは↓の "Voxel Plugin" https://www.unrealengine.com/marketplace/voxel-plugin 知らずに一見すると素晴らしいボクセル地形のプラグインと錯覚してしまい、 $99.99 の価格にも "これくらいなら" とポチってしまうか…

UE4: コンポーネントをアタッチする状況により潜む罠

今回紹介する「コンポーネントのアタッチ状況により潜む罠」は3つ以上のコンポーネントを"縦"にアタッチ(†)する場合に生じる可能性のある罠です。 例として、2つの USceneComponent と1つの UStaticMeshComponent を"縦"にアタッチする状況を幾つか挙げま…

UE4: 4.18 で追加された VSCode プロジェクト生成に少しだけ追加すると便利な事

1. launch.json の <ProjectName>Editor (DebugGame) の args に -game を追加する UE4Editor に -game を追加して実行すると、 UE4Editor の IDE のユーザーインターフェース類を表示せずに擬似的に直接プロジェクトのバイナリーを実行したのと同様の状態でデバッグ実行</projectname>…

UE4: 4.18 で VSCode に UE4Editor が対応したのでロストテクノロジーをメモしておく

Note: この記事は UE4Editor の公式対応で VSCode では不要になるロストテクノロジーについてメモするものです。 UE4Editor の VSCode 対応については参考1、参考2をどうぞ。 私はこれまでもVSCodeに幾つかのコマンドラインをカスタム定義して与えてUE4のプ…

UE4: 4.18 で Static Mesh のコンテキストメニューから Create Destructible Mesh できなくなっていた件と解決方法

事象 4.17.2 ではコンテントブラウザーで任意の Static Mesh を右クリックして現れるコンテキストメニューにあった Create Destructible Mesh が 4.18.0 では消えてしまい、代わりに "Remove Vertex Colors" が出現しているように見える。 原因 4.18.0 から …

UE4: C++ クラスで実装したアクターのコンポーネントの OnComponentBeginOverlap.AddDynamic 等がうまく動作しない時に確認すること

「C++ でアクターを実装し、 StaticMeshComponent のオーバーラップイベントを受けたい、と思ったがなぜか StaticMeshComponent に OnComponentBeginOverlap.AddDynamic した this の TriggerEnter が呼ばれない。」 そんな時には UFUNCTION が TriggerEnter…

UE4: C++ コード から C++ クラスまたは Blueprint のアクターを FindObject して SpawnActor する方法

UE4/C++er も Blueprint クラスを C++ コードから使用する必要がある場合はまま生じます。C++で実装するよりも Blueprint で実装した方が都合の善いクラスを C++ で実装したクラスから扱いたい場合にどうするか、 SpawnActor する場合を例に、 C++ クラスを…

趣味のゲーム、作り始めました😃

うちのこ🐰 今日から作り始めたゲームのプレイヤーキャラクター😀 ちょっとまだぎこちない動きだけど、止まったり歩いたり跳ねたり匂い嗅いだり警戒したりできるようになりました😃 Usagi Itoさん(@usagi_wrp)がシェアした投稿 - 2017 10月 14 4:05午前 PDT

UE4のエンジンアップデートで調整済みのBPを消し飛ばしてしまった備忘録

UE4で開発中に編集するコンテントにはプロジェクトごとに管理されるユーザー定義のソースやブループリントやマテリアルの他に、エンジンのコンテントを参照するものが含まれる事があります。例えば、 BP_Sky_Sphere とか。 今回のやらかした記録はそのUE4の…

UE4: 4.16 から 4.17 へアップグレードした際に遭遇した諸問題と解決について

4.16で開発していたプロジェクトを4.17へアップグレードした際に遭遇した問題と解決方法を整理します。 問題と解決方法 1. 4.15 向けのプラグインがビルド不能に陥った レベル内の重力を器用に扱いたい場合に便利なプラグインとして CustomGravityPlugin (…

UE4/C++: アクターのメンバー関数内で AActor 派生の任意のユーザー定義型のオブジェクトを列挙する方法

// TActorIterator で AActor 派生の任意のユーザー定義型のオブジェクトを列挙 // AHogePawn は列挙したい AActor 派生のユーザー定義型 // GetWorld() は AActor のメンバー関数 { auto counter = 0; for ( TActorIterator< AHogePawn > i( GetWorld() ); …

UE4/C++: メッシュのマテリアルやテクスチャーをC++コードで制御する方法

要点を整理しようと思ったらソースの例示しかない記事になりました(ノω・)テヘ // マテリアルをロードしてメッシュへ設定する // mesh: UPrimitive またはその派生型( UStaticMeshComponent, UProceduralMeshComponent など)のポインターオブジェクト // elem…

UE4/C++ Tick が来ない!そんなときのトラブルシュート備忘録

「Tick が来ない!」、たまによくあるのは私だけでしょうか。 UHogeFugaComponent の TickComponent が来ない、 AHogeFugaActor の Tick が来ない、などなど。そんな場合の備忘録です。 疑い(1): bCanEverTick が false コンストラクター等で bCanEverTick …

UE4/C++ Interface の作り方

おさらい: ふつうの C++ の “インターフェース"(=抽象型) C++er 的には virtual なメンバー関数に =0; 定義を入れた Abstruct な class ( or struct ) を作れば広義のプログラミング言語の意味での Interface になるって思うじゃん・w・ // ふつうの C++…

UE4 の UCLASS の定義の基底クラスに名前空間を使っている子が居る場合の不幸と安直な回避策について

現状の UE4 で C++ の namespace を使おうと思っても面倒事が増えるだけなので、現実問題としてはわざわざ UE4 の C++ コードを記述するに当たっては namespace を用いないほうが賢い。少なくとも UE-4.16 現在は。 しかし、そうは言っても、世の中の素敵な …

UE4 における enum class の「フラグ」化

// ↓ブループリントで使わない場合はこの1行は不要 UENUM( BlueprintType, meta=( Bitflags ) ) enum class EHoge: uint8 { EV_Nothing = 0 , EV_Flag1 = 0x01 , EV_Flag2 = 0x02 , EV_Flag3 = 0x04 , EV_Flag4 = 0x08 , EV_FlagAll = EV_Flag1 | EV_Flag2 |…

UE4/C++ FORCEINLINE にしたいけど Debug ビルドの時は inline 最適化されたくない関数を定義する方法、あるいは UE_BUILD_xxxx シリーズのマクロについて。

UE4/C++ FORCEINLINE にしたいけど Debug ビルドの時は inline 最適化されたくない関数を定義する方法 #ifndef UE_BUILD_DEBUG FORCEINLINE #endif void hogehoge() { /* fugafuga */ } と、いうわけで #ifdef でOK。 Debug ビルドで定義される UE_BUILD_DEB…

VSCode で UE4/C++: デバッグ実行に必要な launch.json の設定の仕方

概要 VSCode で UE4/C++ を開発する際にデバッグ実行に必要な launch.json の設定方法を紹介。 ↑こんな感じで VSCode しか起動していない状態から"えせ"スタンドアローン風の実行もできる。もちろん、起動中の UE4Editor へのアタッチもできる。 VSCode の設…

曰く「Project.uproject を右クリックして Generate Visual Studio project files」・・・そんなのダルい!今すぐ端末でコマンドを撃たせろ!!って思ったらどうすれば良いか・w・

問題 UE4 C++er は .cpp を追加したりリネームするたびに「Project.uproject を右クリックして Generate Visual Studio project files」しなければならない、事になっている(目につくドキュメントや AnswerHub 的なスタンダードな回答によれば)。 だるい・…