ゲームプログラミング

Category
ゲームにおけるMIDI再生についてあれこれ
SMFからMIDIを再生する方法についてのメモ書きです。 MIDIの再生方法には以下のようにいくつか方法があります。  ・MCIを使う  ・MIDIストリームを使う  ・自前でMIDIイベントのメッセージをデバイス側に送る 最初の方法は、高レベルなマルチメディアAPIを用いる方法でです。 簡単にMIDI再生ができますが...
1802 PV
当たり判定の高速化 ‐ スイープ&プルーンの使用
今回はスイープ&プルーンを用いた当たり判定の高速化手法についてのメモ書きです。 このスイープ&プルーンは多数のオブジェクト同士の当たり判定回数を減らす方法の一種です。 AABB木を用いた当たり判定高速化とは違い、このスイープ&プルーンを用いた方法は動的なオブジェクト同士の比較に有効です。 ただし、動的といってもランダム...
7269 PV
当たり判定の高速化 – AABB木の使用
以下の様に多数のオブジェクト同士の当たり判定を考えます。 ここで、赤色と青色のオブジェクトをそれぞれA、Bのグループに分類します。 当たり判定はグループA、B同士で行うこととします。 グループA、Bのオブジェクトの個数をそれぞれNa、Nbとすると、 当たり判定の総実行回数はNa×Nbとなります。 例えば、Na=100、...
12854 PV
点と三角形の当たり判定
今回は点と三角形の当たり判定の計算方法についてです。 基本的な考え方は、下図の様に点Pから三角形の各頂点ABCに向かうベクトル間のなす角を調べることで行います。 (ただし、) 上図の∠AB、∠BC、∠CAは三角形の内部に点Pがある限り180°以上になることは有り得ません。 もし180°以上の角が存在していたら、点Pは三...
7302 PV
当たり判定の高速化 ‐ ブロードフェーズとナローフェーズ
当たり判定処理の高速化についてのメモ書きです。 一般に、多数の物体同士との当たり判定を行うにつれ、当たり判定の計算処理が膨大になります。 M個のオブジェクトとN個のオブジェクト同士の当たり判定を行う場合、M×N回の当たり判定が必要になります。 矩形などの単純な図形同士の当たり判定の場合、そこまで計算負荷にはなりませんが...
7934 PV
円と長方形の当たり判定
今回は2Dゲームにおける円と長方形の当たり判定計算についてです。 基本的な考え方は、円が長方形と重なるような円の中心点の領域をチェックするイメージです。 これは以下の角丸長方形の領域となります。 円の中心点がこの領域に入っているかどうかをチェックします。 まず、以下の2つの領域で当たり判定します。 これは点と長方形の当...
23522 PV
2Dゲームにおける基本図形の当たり判定
2Dゲームでよく使用すると思われる図形の当たり判定計算のまとめです。 ■点と円 点と円の中心との距離が円の半径より小さくなると当たりとなります。 したがって、計算式は以下のようになります。 しかし、左辺には平方根を用いておりパフォーマンスが悪いので、通常は両辺を二乗した次式を用います。   ■円と円 2つの円...
2772 PV
ゲームのタスクシステム設計あれこれ
ゲームを進行させていくにあたって重要になるのが複数タスクの管理です。 俗にタスクシステムと呼ばれているものです。 タスクシステムの明確な定義はありませんが、たとえばキャラクタを移動させたり当たり判定させたり描画させたりといった処理の進行を管理するものだと解釈して差し支えないと思います。 これらのタスクを管理するためのク...
4309 PV
ゲームの当たり判定のクラス設計を考えてみる
アクション系やシューティングゲームを作っていく上でほぼ必ずといっていいほどぶち当たるのが当たり判定(コリジョン)です。 フィールドに複数のキャラクターが存在するときは、衝突し得るキャラクター同士すべてで当たり判定処理を行う必要があります。 しかしながら、この当たり判定処理はキャラクターの数が増えるほど重くなります。 し...
14485 PV