GameProgrammar's Night

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

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を指定すると、まったく…

enchant.js と MovieClip

enchant.js をちょこっと触って見たけど、良いなコレ。2Dライブラリとしてかなり綺麗にまとまってる。プログラミングを楽しんでもらうためのライブラリですってのがとてもうなずける2013-06-26 23:29:22 via web 作ってる2D描画システムの上位層は、enchant.…

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…

PSMのGameEngine2D TIPS

PlayStationMobileには2D描画の仕組みとしてGameEngine2Dが提供されています。が、触って見ると意外と曲者です。2D描画として直感的に使えるようにするためのTIPSを紹介します。 GameEngine2Dそのものについては、PSMのドキュメントを参照して下さい。 スク…

Effectファイルへの疑問とか

エフェクトファイルによるレンダーステート変更は、無条件で実行されるのかな。そうだとすると、レンダリングパスが確定するまでの実験としてはエフェクトファイルで変更した方が良いけど、レンダリングパスが確定したら、自前で変更部分だけ変更した方が良…

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

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