GameProgrammar's Night

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

C++

UE4 見下ろし2Dゲームの移動処理(TopViewMovement)を作る

久々の2Dゲームネタです。タイトルの通り、見下ろしタイプの2Dゲームの移動処理を担うMovementComponentをつくってみます。 見下ろし移動とは? RPGや縦STGなどでよく見る真上からキャラクターやマップを見ていることを見下ろし視点と言います。 2Dゲームで…

UE4にSpineが来た

※ UE4.15の正式リリースに合わせて、UE4ランタイム実装が正式リリースとなりました。ja.esotericsoftware.com Spineとは、2Dアニメーションにもボーンを取り入れて、3Dアニメーションのように、2Dアニメーションを作れるようにするツールです。誤解を恐れず…

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

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

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

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

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

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

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

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

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インストーラーが用意さ…

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

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

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…

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

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

C++ Debugger Visualizers

VSのデバッガ強化拡張機能です。vectorやshared_ptrなど複雑なコンテナでも中身をちゃんと表示してくれるようになる優れものです。boostのコンテナにも大分対応してるのでboost使いにもオススメ。 VS2012ならば、[ツール]→[拡張機能と更新プログラム...]→[オ…

Boost.Property TreeでXML文字列を直接使う方法

std::stringstreamを使う read_xml関数には、第一引数にstd::istreamを受け取るオーバーロード関数が用意されていますので、そっちを使います。文字列のstream実装にはstd::stringstreamがあります。(lexical_castのバックエンドで動いてるやつです) #includ…

DirectX3D 9 でスクリーンショットを撮る方法

制作しているゲームのスクショを撮れると何かと便利です。開発中のデバッグから、ユーザーサポートの際に添付してもらったりなど。いろいろ使い出があります。 D3D9でスクショを撮る方法をいくつかメモしておきます。 D3DXSaveSurfaceToFile関数を使い出力す…

VS2012のIntelliSenseを確実に効かす方法

プリコンパイル対象ヘッダを全ソース共通ヘッダとして使わない 横着な自分はプリコンパイル対象ヘッダを全ソース共通ヘッダとして使っていたのですが、プリコンパイル対象ヘッダはIntelliSenseの解析対象外のようです。 なので、共通ヘッダは別に作って、共…