読者です 読者をやめる 読者になる 読者になる

GameProgrammar's Night

ゲームプログラム系の覚え書き

UE4にSpineが来た

ja.esotericsoftware.com Spineとは、2Dアニメーションにもボーンを取り入れて、3Dアニメーションのように、2Dアニメーションを作れるようにするツールです。誤解を恐れずに言えばSpriteStudioの親戚のようなものです。 長らくUE4への対応は行われなかったの…

UE4 .15 preview1 RawInputのコードをざっと読んでみた

RawInputとは、PCにつながっている入力デバイスの生データを取得するAPIです。 UE4.15からサポートされることが決まり、DirectInputのみのゲームパッドもこれで動くかなと思いまして、少し該当部分のソースを読んでみました。 速報ということで、読み取れた…

UE4 イベント・関数・マクロ・インターフェイスの違いと使い分け

qiita.comこの記事は、UE4 AdventCalender 18日目の記事です。 BPには、イベント・関数・マクロ・インターフェイスと手続きの実装手段が豊富にあります。 BPはオブジェクト指向言語ではありますが、オブジェクトより手続きを重視した思想になっている現れだ…

UE4 FloatingPawnMovement を使う

FloatingPawnMovementとは、UE4が用意している移動を担うComponentの一つです。 CharacterMovementのように状態(歩き、ジャンプ、しゃがみ)があるわけでもなく、設定したパラメータ通りに位置を変化させるだけのシンプルな実装のMovementComponentです。 シ…

PlayStation4のコントーラをWindowsで使う時の開発側の注意点

PS4がアップデートされて、PCからリモートプレイができるようになりました。 それに合わせて、PS4コントローラをPCにUSB接続するだけで、ゲームパッドとして利用することができるようにもなりました。そのため、これからPCゲームをPS4コントローラで遊ぶ人が…

UE4 アクターの入力取得をコントロールする

docs.unrealengine.com docs.unrealengine.com この辺りに書いてあることと独自調査を元にキー/パッド/マウス入力(以下単に入力)で悩まないようにするためのまとめとなっています。 目次 目次 入力を取得できるようにする設定 詳細パネル BPノード 入力取得…

UE4 Navigationができない時に確認すること

何度もNavigationができたりできなかったりして、いい加減嫌になったので本腰をいれて調べてみました。 Navigation(static)が使えるのは以下の条件をすべて満たしている時になります。 AIControllerを持つPawn UE4が用意したMovementComponentを持つPawn Cha…

UE4 BPで2次元配列を実現する

BPは使えるデータ構造が少なく1次元配列しか使えません。1次元配列だけでも組むこと自体はもちろん可能ですが、せめて2次元配列ぐらいは欲しい所です。 というわけで、BPで2次元配列を扱うためのTIPSを紹介します。 1次元配列を2次元配列のように扱うインデ…

UE4 DistanceField フォントで遊ぶ

UE4は、DistanceFieldを使ったフォント描画に対応しています。うちのブログでもかなり前ですが扱った話題でもあり、ちょっといじってみました。 DistanceFieldを使ったフォントテクスチャの利点は、拡大に強かったり、ちょっとした文字装飾をシェーダーで書…

UE4 Configデータをお手軽に取得する

UE4には、起動時オプション*1を扱えるようになるコンフィギュレーションという仕組みがあります。docs.unrealengine.com 基本的にC++で使うことが想定されており、クラスにUPROPERTY(config)などと設定することで自動保存復元もしてくれます。 本当にちょっ…

UE4 C++でイベント/イベントディスパッチャーを作る

UE C++には、デリゲートが用意されています。デリゲートとは簡単に説明しますと、メソッド・関数などを変数に保存して、任意のタイミングで呼び出せる仕組みです。詳しくはググってください。docs.unrealengine.com このデリゲートの中に、BP上でイベント/イ…

UE4 UMGで入力を取得する

UMG(UMGのBP)では、各Widgetごとにマウスイベントを取得することはできますが、通常のキーイベントを取得するこはできません。 マウスイベント キーイベント そのため、UMGでメニューを作りキーで操作したい場合、いつも通りにはいきません。 UMG上でキーを…

UE4 Navigationの方向だけを取得したい!

Navigationとは、NavMeshに従ってPawnを指定した場所に最短距離で壁などにぶつかることなく、進ませてくるUE4の機能です。docs.unrealengine.com 敵のAIを作るのに重宝する機能ですが、現状ではPawnを移動させることにしか使えません。用途によっては、方向…

UMG用にテクスチャアトラスマテリアルを作る

※ UE4.13から、Paper2DスプライトがUMGで使えるようになりましたので、このマテリアルは必要なくなりましたkatze.hatenablog.jp 上の記事の続きです。 前回は急ぎであまり検討できなかったので固定サイズからの切り出しまででしたが、ようやく任意サイズの切…

UnrealEngine4で2Dゲームを作ろう! 「2Dゲームを作るために必要なこと 機能編」

「UnrealEngine4で2Dゲームを作ろう!」の最終回。 2Dゲームにするための設定などを紹介した「基本編」の続きです。 UE4の幾多の機能が2Dゲームだと使えるのか使えないのかを紹介します。すべて検証しているわけではありませんので、自分が使った範囲での紹…

UnrealEngine4で2Dゲームを作ろう! 「2Dゲームを作るために必要なこと 基本編」

2Dゲームとは直接関係のない話題ばかりになっているので、いったん2Dについて一通りまとめて、「UnrealEngine4で2Dゲームを作ろう!」シリーズはいったん締めたいと思います。 UE4に関する話題の更新は、まだネタもあるので続けますのでご安心(?)を。 ドッ…

UnrealEngine4で2Dゲームを作ろう! その17 UMGでテクスチャアトラスを使う

※ 任意サイズに切り出すマテリアルが作れましたので、以下の記事も参照してみてください katze.hatenablog.jp UMGにおいて画像を使いUIを作るにはimageウィジェットを使います。 imageウィジェットは、グラフィックを表示するのにSlateBrushを利用しています…

UnrealEngine4で2Dゲームを作ろう! その16 CreateEventノード!

イベントディスパッチャーってやつがあります。 イベントディスパッチャーにイベントをBindするノードの仕様で、イベントを必ず同じEventGraph上に作らなければならず、イベントディスパッチャーを使い始めるとなかなかスパゲティなコードになってしまい困っ…

UnrealEngine4で2Dゲームを作ろう! その15 BehaviorTreeのDecorator/Task作ってみた

やっとザコのBTが出来た…… pic.twitter.com/Yuwt7GWw8x— katze (@katze_7514) December 26, 2015という感じで、BehaviorTree(以下BT)で敵AIを作ってみた時にわかったことを書きます。 BT全体 BT全体は上図の通りで、移動して攻撃したらちょっと待つを繰り返…

UE4の入力取得の仕組みとプラグインの作り方

「Unreal Engine 4 (UE4) 其の弐 Advent Calendar 2015」 3日目の記事になります。qiita.comUE4エディタ・BPなどが一切でません。C++のみのプログラマ向けの記事になります。ここで示すソースコードは「4.10.0-release」タグのものになります。 UE4の入力取…

UnrealEngine4用プラグイン DirectInputPadPluginの使い方

UE4(Windows)でDirectInputのゲームパッドを使えるようにするプラグインを作りました。github.com DirectInputPadPlugin Ver.0.9のものです。 これ以降、DirectInputのゲームパッドのことをDIパッド(DIPad)、XInputのゲームパッドのことをXIパッド(XIPad)、…

UnrealEngine4で2Dゲームを作ろう! その14 DirectInputプラグイン作った編

github.com前回紹介したJoystickPluginは問題が発覚したために、結局自作しました。ひとまず、katze.hatenablog.jpを参考にソースからビルドしてUE4に追加してください。 通常のゲームパッドイベントとして受け取れるようにしましたので、すぐに使えると思い…

UnrealEngine4で2Dゲームを作ろう! その13 DirectInputを使おう編

UE4でゲームパッドを使おう!(Windows)というお話です。※追記※ JoystickPluginを本採用するのはオススメできなくなりましたので、DirectInputのプラグインを作りました。こちらを見てみてください。 UE4のゲームパッド対応 UE4(4.10現在)が対応してるパッ…

UnrealEngine4で2Dゲームを作ろう! その12 プラグインをソースからビルドする

JoystickPluginについて書いていたんですが、その前章としてプラグインのビルド方法について書きます。 対応バージョンは、UE4.10です。 VS2015をインストールする まずは、UE4.10で対応となったVS2015をインストールする必要があります。 DL先は、「Visual …

UnrealEngine4で2Dゲームを作ろう! その11 見下ろしマップの回り込み処理

たまには「2Dゲーム作ろう!」らしいネタで、キャラクターとマップ上のオブジェクトとの描画順をどうするのかというお話です。 回り込み 回り込みという表現はサークルローカルかもしれないので、実例のgifアニメが下の通り。(マチネででっち上げたので歩き…

DirectXゲームの動画キャプチャ事情

このデモをUE4上で作り終わったあとに動画キャプチャをしようと思ったのですが、愛用していたFrapsがまともに動かなくて困ったんですよねー。1分ぐらい録画すると途中から見られない動画ができ上がる始末。 Fraps自体は大分前に更新が止まっていて、Win7 DX1…

UnrealEngine4で2Dゲームを作ろう! その10 マチネでデモ

まずは、こちらをご覧下さい。現在制作中のゲームのデモになります。 10/25のイベント向けに作ったもので、マチネを利用して作りました。 マチネ マチネは、UE4上でカットシーンを作るための機能でタイムラインを使ってActorに動きをつけることができます。 …

UnrealEngine4で2Dゲームを作ろう! その9 BPでのインスタンス(オブジェクト)生成

BPで各種インスタンス(オブジェクト)の生成についてのまとめです。 newとかプログラマになじみのある用語は使われておらず、調べるのにちょっと苦労したので備忘かねてます。 リテラルや構造体は「Make ***」 即値や構造体は、Makeではじまるノードです。 Ac…

UnrealEngine4で2Dゲームを作ろう! その8 UE4でゲームを実装していく方法

作ってるゲームの最低限の検証が大体終わったので、その辺りから来るお話。 さて、ゲームとして成立させていくにはキャラが表示されて動くだけではダメで、敵を認識して攻撃できたり、HPが0になったらゲームオーバーにしたりしないといけません。 今回は、そ…

UnrealEngine4で2Dゲームを作ろう! その7 NavMeshでナビゲーション!

Pawnを任意場所に良い感じに移動するために、NavigationというシステムがUE4にはあります。 ドキュメントとしては、ビヘイビアツリーの所にまとめてらていますが、あまりちゃんと書かれて無いです。一応、このへん。 いわゆるナビゲーションメッシュを計算し…

UnrealEngine4で2Dゲームを作ろう! その6 C++でデバッグプリント

使い方は、ドキュメントの以下の場所にあります。デバッグメッセージドキュメントへの補足です。 UE_LOG/UE_CLOGマクロ printf/coutやOutputDebugPrint的に使えるデバッグプリントマクロです。このマクロで出力した文字列は、UE4エディタの出力ログパネルに…

UnrealEngine4で2Dゲームを作ろう! その5 C++ と Blueprint連携

今回は、ただの備忘録です。 UnrealVSをインストールする UEのVS拡張です。ドキュメントにもありますが、あった方が便利そうなので、インストールします。 C++/BP連携は、C++主導で C++とBlueprintを連携させる場合、やりとりする列挙型や構造体などはC++で…

UnrealEngine4で2Dゲームを作ろう! その4 キーコンフィグ

今回はキーコンフィグについてです。 キーマッピング UE4には、アクションキーマッピング・軸マッピングという入力にエイリアスを付けられる機能があります。ゲーム中での入力の扱いと実キー入力を分離できるとても便利なものです。 [プロジェクト設定]→[入…

UnrealEngine4で2Dゲームを作ろう! その3 2Dアクターと移動のさせ方

※ 最新の情報で2Dゲーム制作についてまとめ直しましたので、「UnrealEngine4で2Dゲームを作ろう! 「2Dゲームを作るために必要なこと 基本編」 - GameProgrammar's Night」をご覧ください UE4で2Dゲームを作るのに参考になるプロジェクトを公開しているフォ…

UnrealEngine4で2Dゲームを作ろう! その2 カメラの設定

※ 最新の情報で2Dゲーム制作についてまとめ直しましたので、「UnrealEngine4で2Dゲームを作ろう! 「2Dゲームを作るために必要なこと 基本編」 - GameProgrammar's Night」をご覧ください 2Dグラフィックの描画 2Dグラフィックの描画は簡単です。適当に画像…

UnrealEngine4で2Dゲームを作ろう! その1 FPSと解像度

※ 最新の情報で2Dゲーム制作についてまとめ直しましたので、「UnrealEngine4で2Dゲームを作ろう! 「2Dゲームを作るために必要なこと 基本編」 - GameProgrammar's Night」をご覧ください UE4が無料化されたので、ソースを落として読んでみた所昨日UE4のコー…

WPtouchプラグインでスマホデザインにするリンクの貼り方

WPtouchを使ってる時、スマホでデスクトップ表示させた後、スマホ表示に戻すリンクが出ない時の対処方です。 wptouch_show_desktop_switch_link関数 wptouch_show_desktop_switch_link関数をリンク挿入したい場所に記述します。 wptouch_show_desktop_switch…

Werkとして一番最初にコミケで頒布したゲーム「くらっしゅ大戦」体験版

昨日夜TLに東方以前(QoHとかその辺) の同人ゲー事情は今のうちにまとめないと危険な気はずっとしてる— へっぽこ (@heppoko) 2014, 4月 21 なんて話が湧いたので、ひとまず、自分のとこぐらい書いて見ようかなと思って、少し前に発掘された処女作を引っ張り出…

Esenthal Engine についてメモ

Esenthal Engineとは 最近、話題のゲームエンジン。HPは、http://www.esenthel.com/ C++で書けて、マルチプラットフォームでわりと安価ということで、緩く調べたメモ この辺とかも参照「C++ - Esenthel Engineというゲームエンジンが予想外に面白かったので…

ClangのWindowsネイティブ版clang-cl

ねんがんの ウインドウズClang をてにいれたぞ!http://isocpp.org/blog/2014/01/llvm-3.4clang3.4からWindowsネイティブを吐くバイナリが作れるようになりました。 ダウンロード http://llvm.org/releases/download.html#3.4Windowsインストーラーが用意さ…

Direct3D9でウインドウモード・フルスクリーンの動的切り替え手順

そろそろXPのサポートも終わるのに今更DX9かよって感じですが……。 手順 Direct3DのDEFAULT_POOLで作成した各種バッファをRelease(頂点とかテクスチャとか) D3DPRESENT_PARAMSを適切に設定する ウインドウ/フルスクに合わせて、WindowedのTRUE/FALSE ウインド…

ウインドウスタイルの動的変更

ゲーム動作中に、ウインドウモードとフルスクリーンモードの切り替えを実装しておくとユーザーフレンドリーです。 フルスクリーンというのは、ようは画面全体にウインドウを広げる処理です。ただし、この時、キャプションやウインドウの枠などを消す必要があ…

C++ でローカル関数

C++

「関数やメソッド内でメモリを確保し、エラーになったらメモリを解放してエラーを返す」みたいな処理ってまま書くと思います。 data* create_data() { data* p = new data(); /*** 処理 ***/ if(/*** エラー1 ***/) { std::cerr << "エラー1" << endl; delet…

FreeType2でフォントテクスチャ作る際のコツ。ピクセルサイズで作るのと文字送り量の取得

ピクセルサイズ指定で作る 公式チュートリアルにもある通りFT_Set_Pixel_Sizes関数を使うのですが、フォントによっては指定サイズを超えることがあるようです。指定サイズより少し小さい値を入れることである程度抑制することができます。 // 少し小さい値を…

libpng Simplified API 解説

ver.1.6から、簡単にpngデータの読み書きができるように追加されたAPI群です。試しに使って見たら、ほんとに簡単だったので紹介したいと思います。 Simplified APIで出来ること 画像サイズやピクセルフォーマット、ベタデータ(解凍済み)になったデータ部を扱…

FreeType2 の FT_Render_Glyph で得られるビットマップバッファの並び

FT_Bitmap FT_Render_Glyphで得られるビットマップデータの構造体。こいつを使ってビットマップフォーマットに起こして、ファイルに保存することでビットマップファイルが得られます。 FT_BitmapとBITMAPINFOHEADERの対応 FT_Bitmap BITMAPINFOHEADER 意味 w…

DistanceFieldTextureのDistance

さらにツールの実装を見つけまして、ソースを読んだ結果、DistanceFieldTextureに書き込む距離に関して勘違いしていたことに気づきました。修正した所、オレオレツールでもSDFツールと同等のクオリティが出るようになりました。オレオレツールのソースも更新…

DistanceFieldTexture実験結果

オレオレツールのアルゴリズムのミスを発見したので、現在はSDFツールと同等のクオリティが出るようになっています。 というわけで、自作DistanceFieldTexture作成ツール(以下オレオレツール)を作って実験してみました。ツール比較用にgamedev.netのここで…

DistanceFieldTextureメモ

これ→ http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf 2007年の論文なのですが、今更知りましたとさ。ちょうざっくり言うと「テキストなどの境界線くっきりしてるものを拡大描画する時でも綺麗な境界線が出るよ…

DirectSoundの音量とプチノイズ対策

音量の比率とdB変換 DirectSoundの音量は、0~-100dBのデシベル単位です。より正確には100倍したDSBVOLUME_MAX(0)~DSBVOLUME_MIN(-10000)の範囲で指定します。 デシベルだということを忘れて、音量を最大の半分にしようと思って-5000を指定すると、まったく…