コードスペランカー

ゲーム開発日誌など

DQフォントの仕様

DQフォントを縦32ドットで表示した場合、横幅は17ドットになる。枠線の上下は16ドットけずれる。

DXライブラリではマルチスレッドはつかわんほうがいい

お題のとおりに、DXライブラリを使うのなら、マルチスレッドは使わないほうが良いらしい。 具体的には、同時に実行してはいけない組み合わせというのがあるので、やめたほうがいいということです。 この辺参照 ってなわけで、シーンの初期化と更新の自動化…

Listの管理を失敗すると・・・・

Listの中身は配列なのだが、こいつの管理に失敗するとメモリの中身がクラッシュするらしい。クラッシュの規模は配列の中身だけじゃなく、その配列をもつオブジェクトにも影響を与えるようで、どこがどうなったのかよく分からんが、ついさっきまで参照してい…

シーンの初期化と更新の自動化

XNAモドキの話なのだがXNAの基本処理は ってな感じで行われている。オレのシステム設計としては、このプロセスが複数同時に動いて欲しい。しかも、後で追加したり、削除しながら動いて欲しいのだ。 「更新⇒描画」の部分だけなら「更新1、更新2、更新3、描…

テクスチャのアニメーション

DXライブラリを使ってポリゴンを表示させるために必要な頂点情報は下記のような形式の構造体に治まっている。 // 3D描画に使用する頂点データ型 struct VERTEX3D { // 座標 VECTOR pos ; // 法線 VECTOR norm ; // ディフューズカラー COLOR_U8 dif ; //…

とっても多いあたり判定を少なくする方法

画面いっぱいどころか、画面外にも大量に当たり判定が存在していたらどうだろうか?いまオレが使っているマシンだと、単純な短冊形の判定でも4000回ぐらいから1フレームに収まるかどうか怪しくなってくる。しかも相互干渉したりするとひどいことになるのは前…

当たり判定の多さ

最近流行の弾幕シューティング場合、画面中に1000個以上の当たり判定がうろうろしてるわけなのだが、当たる対象は自機1つのみなんで、1フレームに弾の数だけ判定すれば良い状態になる。実は最近のPCの性能を考えるとあまりたいした処理ではない。 では、敵A…

DXライブラリで好きなフォントを使いたい

DXライブラリを使ってると、システムにインストールされているフォントは使用可能なのだが、されてないフォントは当然使用できない。ユーザーが俺の使って欲しいフォントを持っているをは限らないし、添付したフォントファイルを一々インストールしろとも…

ってなわけで、ソートをすることにしたわけだが

DXライブラリの癖の続き ソートが必要になったので、適当にソートしてみることにした。 手始めに、Listを新たに作って、挿入していく形式だ。当然ながらむちゃくちゃ遅かった。Listは挿入可能だが、元が配列なだけに、むちゃくちゃ遅い、要素数が増えるとさ…

DXライブラリの癖

気がついたことをメモしておく DX.SetDrawBlendMode(DX.DX_BLENDMODE_ADD, 255); // なんか描画処理 DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0); 見たいな感じに加算ブレンドやらアルファブレンドをやるときには 描画順番に気をつけろ 2Dな処理だと…

そして3Dダンション作成へ

方針を決めたところで、実際にダンションを作ってみる。はじめは、立方体を複数並べてダンジョンを作ろうと思ったのだが・・・「なんかカメラの角度によって、隙間ができてないか?」ってことに気がついた。 隙間なく配置したはずの立方体の間が見える一瞬が…

だらだらゲーム開発

ダンジョン探索型のゲームを作ろうかと思い、ゲーム内にちょっとした立体感が欲しいと思ったオレは、クオータービューならいけるんじゃね?と考えマップチップを作って配置してみたわけだ。 こんな感じで1つ作ってみたわけだが、後ろのタイルが隠れて見えな…

XNA的なゲーム開発

なにが言いたいかっていうと、ゲームからゲームフレームを分離して使いまわそうってやつ。 XNAでの開発での問題点として、XBOX的な縛りがあって、俺的にはPCでの運用を考えてるのだけど、コントローラはプレステ方式が好きなわけだ。 かといって、…

複数オブジェクトの同時処理

複数のオブジェクトが互いに影響しあっている状況で同時に処理をしなければならない。 まぁ、それなりにあるシチュエーションだな。 厳密に行おうとするとCPUが1つしかない環境下では当然無理なわけだが、ごまかす手段はいくつかありそうなんで、思いついた…

XNAではどこまでポリゴン描けるの?その2

XNA

前回の様子をタスクマネージャで観察するとCPUは非常に暇なことがわかった。 稼働率6%ぐらいの状態・・・・・ つまり、GPU周りがボトルネック!!・・・・のはず・・・一応FF11で遊べる程度の性能があるPCなんだけどなぁ(涙)。 モノの試しにDXライブラリ…

XNAではどこまでポリゴン描けるの?

ってわけで、実験 新規プロジェクトを作成して フィールドに変数を追加 BasicEffect effect; //デバグ用FPS表示 private SpriteFont _font; private double _fps; private double _updateInterval = 1.0; private double _timeSinceLastUpdate = 0.0; privat…

同一メッシュへのテクスチャの重ね貼

描画とEffect(HLSLについて)で同一メッシュに複数枚のテクスチャを重ねて貼るには、自分でシェーダー作るしかないぜ!見たいな事を言ったが、全然そんなことはなかった。 同じ場所に同じメッシュを違うテクスチャで重ねれば良いだけだった。

HLSL入門

基礎的なところから・・・ technique MyTechnique { pass MyPass { //ここに利用するパスを書く } }まずはテクニックの定義。 おおさっぱに言うと、こんなことするぞっていう定義になるだろうか? techniqueの中にあるpassっていうのが、具体的な手段の塊を…

描画とEffect(HLSLについて)

ポリゴンなんかを描画するために使っていたBasicEffectやAlphaTestEffectが何者なのかわかったっぽいのでメモする。 あれはシェーダーを使うためのインタフェースらしい。 そのシェーダーっていうのは、GPUにこんな感じで画面に書くんだぞっていうプログラム…

XNA4.0でのポリゴン描画その4

3.1でポリゴンを書くのに使っていたGraphicsDevice.RenderStateだが、がらりと変更されていて、4つのプロパティに分けられている。・BlendState アルファブレンド等の半透明処理に関する項目 ・DepthStencilState 深度バッファなどに関する項目 ・Rasterizer…

XNA4.0でのポリゴン描画その5

XNA4.0でのポリゴン描画その2で解決してなかった部分が解決したのでメモ3.1→4.0にあたって、3.1のBasicEffectをそのまま使えると思っていたのが間違えのようで、アルファテストの機能が丸ごと削除になり、代わりにアルファテストが使えるEffectであるAlphaT…

作り捨てても大丈夫そうなオブジェクト

int、floatといった基礎的なオブジェクトは大丈夫っぽい listとかはけっこう気を使う必要がありそう

XNAでの重たい処理

XNAというかC#全般でもいえるのかもしれないが newとガベージコレクションは結構重いのではと重いはじめてる 処理中にnewのあるメソッドを呼ぶと1回や2回ではそうでもないが DrawやUpdete内部で100回ぐらい呼ぶと、確実にFPSが下がるnewで作った領域をガベー…

ゲーム内でのテクスチャの作成

4.0への移行が面倒になったので3.1でやっとります。 テクスチャのアルファ問題まだ解決しないってわけで、3.1でやり始めて、問題が起きたのでメモしておくゲーム内でテクスチャを作るのに便利な RenderTarget2Dクラス これで新たなターゲットを作って Graphi…

XNA4.0でのポリゴン描画その2

今回は、被写界深度にちょっと癖があるようで 変なところでつまずいたのでメモする この二つの画像は、板ポリゴンにアルファ付テクスチャを張ったものを描画したがそうなのだが。 表示の順番を変えることで、アルファの反映が違うらしい。 両方とも深度バッ…

XNA4.0でのポリゴン描画その3

気がついたのでメモ ”new BasicEffect(_graphics.GraphicsDevice)”の処理はすごく重たいので使い回しをするべし。

XNA4.0でのポリゴン描画

とりあえず、単純にポリゴンを描画できるところまで来たのでメモする //頂点データの定義 VertexBuffer vb = new VertexBuffer (_graphics.GraphicsDevice, typeof(VertexPositionColor), _vatexData.Length, BufferUsage.None); //エフェクト宣言 BasicEffe…

XNA4.0

10月21日にXNA4.0の日本語化パックがMSから公開されたので、早速触ってみた。まあ、日本語化といっても、リファレンスやら、コメントやらが日本語になるだけで、本体は当然英語版と一緒のもの。 現在停滞中のゲームの見直しをするのにも、早速移植作業を…

描画の重さ

処理の方法や手順をいろいろ変えてみた結果 「表示する」という処理そのものの重さであるような印象を受けるたとえば、4頂点しかもたないビルボード1枚の描画と50頂点ほどのメッシュでも1つを描画する処理にかかる時間的なコストがあまり変わらない印象…

XNAでの描画処理3

前回の続き 前々回で誤解していた部分が判明 重たくなっている原因の処理は、プリミティブを利用したポリゴン描画部分であることが判明。具体的には、ポリゴンを描画するためのエフェクトを宣言している BasicEffect effect = new BasicEffect(Game1.graphic…