コードスペランカー

ゲーム開発日誌など

ゲーム開発

当たり判定の処理

一言に当たり判定といっても、色々種類がある。 1、点と点の処理 点同士なのでお互いの座標を比較し完全に一致すれば当たっているという極単純なもの。これ以上簡単な処理はないが点であるので範囲を表せない。マス目にはまったタイプの処理をするゲームで…

Minecraftに学ぶ

Minecraftでは16×16マスの平面を1chunkという単位にして処理している。 キャラクタは確実に1chunkより小さいのでキャラクタのいるchunkとその周囲の処理をすれば確実に処理される。おそらくその仕様上1chunkより大きな処理を1度に行うことはできないだろうが…

ゲームデータ隠蔽の必要性

前回マップデータを暗号化してみるとか言ってみたが、ゲームデータやプログラムの隠蔽をする意味が、そもそもあるか?って疑問にぶちあたった。 想定している環境がPCである以上、俺が知っている限りの手法で隠蔽をしたとしても、ものの数日でクラックされる…

ダンジョンの作成と読み込み

しばらく前で自動作成したダンジョンを保存して読み込んだり、手作業で作成したダンジョンを読み込んだりするのに、ダンジョンローダーが必要だとおもったので、こいつの使用を決めないといけない。 現在、ダンジョンのマップチップとして存在しているのは、…

DXライブラリでのマルチスレッド

以前、DXライブラリを使ってのマルチスレッドプログラムは無理っぽいと書いたが、なんとかいけそうなので、メモしておく。 // マルチスレッドフラグ DX.SetMultiThreadFlag(DX.TRUE); // DXライブラリの初期化 DX.DxLib_Init(); という感じに書いておく…

壁との当たり判定

壁のように自分から動かないオブジェクトの当たり判定は、能動的に行う必要がない。なので、その他の動くオブジェクトと別の当たり判定として考えるのが妥当だと考えられる。 壁となるものが一定の大きさであると考えると、能動的に当たり判定を行うオブジェ…

大量の当たり判定(4分木空間分割)

内容的にはとっても多いあたり判定を少なくする方法の続きとなる。色々な大きさの当たり判定がごちゃ混ぜになっている状況で、比較的早く総当り判定が出来る方法があったので、メモしておく。 その名を4分木空間分割という方法で詳しくはここで紹介されてい…

自動ダンジョン作成

ローグ風のダンジョンものの定番、日本の有名どころだと「不思議なダンジョン」シリーズのあのダンジョンだが、いざ作ろうかと思うと結構面倒だったりする。 早速、参考になりそうなところをGoogle先生に聞いてみる、例えばこことかが候補になる。 この方法…

DXライブラリでジョイパッド状態の詳細な取得

ハットスイッチが使えねーじゃん!とか思っていたら、実は使えた話。 詳細はここ 概要を書いておくと 作り始めたときとコントローラーの想定仕様かわってるよ!なのでDirectInputから直接もらう方法作ったよ!ってことらしい。リファレンスにのってないって…

DQフォントの仕様

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

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

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

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

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での運用を考えてるのだけど、コントローラはプレステ方式が好きなわけだ。 かといって、…

XNAでの描画処理3

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

XNAでの描画処理2

前回での失敗を解決。 ゲーム内でポリゴンを作って使おうと思うと、設定の重複が激しそうなので、それっぽい板ポリゴンを用意して使うことにした。 これで、速度面は解決したと思う。これで、だいぶソースがすっきりした

なぞの境界線

ビルボードの実装をやってみて、うまくいっているみたいなので 透過PNG画像を張ったところ、透過部分と非透過部分の間に謎の境界線が発生した。この境界線はどうやらGraphicsDevice.Clearで塗りつぶしたときの色なようだが、なぜこんなことが発生するのかま…

XNAでの描画処理

3D関連は、やったことがないに等しい俺が挑戦!!XNAでの描画処理は一律Game1.Drawメソッドに記述することになる 3次元の処理を2次元に描画するためには、いくつかステップを踏む必要があって その中に、カメラの設定とか、材質の設定とかいろいろあって、…