3DダンジョンRPGエディタを作るスレ (579レス)
前次1-
抽出解除 レス栞

533
(1): 520 [sage] 2016/01/16(土) 10:06:51.12 ID:nb4XakV3(2/3) AAS
3Dダンジョンに関する要求については、>>525-526で書いているが、
このプログラムを作成するに際して、より詳細な検討を加えている。

まず、迷路を保持するデータ構造について説明するため、
迷路を構成する最小単位を便宜的に「セル」と呼ぶとする。

1つのセルには、必須データとして、
・セルの座標 x、y (xは東西方向、yは南北方向)
・セルの東西南北の境界表現(壁の有無、または扉)
を持たせている。

このセルを複数集めて、1つのフロアマップを形成している。
複数のセルの管理にはリンクドリストを使用していて、
任意の形、任意の広さのフロアを表現することが可能である。
と言っても、1フロアあたりせいぜい100セル程度に留めておきたい。

また、必要がある場合に限り、セルには以下の付帯情報を記憶させることが
できる仕組みになっている。
・天井と床の穴表現有効化フラグ
・ダークゾーンフラグ
・セルの名前
・イベント処理用スクリプト(任意行数のプログラムテキスト)

上述の試作プログラムでは、以上の情報を用いてマップデータの編集および
歩行移動テストが可能になっている。
553: 520 [sage] 2016/02/28(日) 21:57:23.90 ID:fYTROrM4(2/2) AAS
>>550
セル(部屋)をリストで管理する方法については>>533で述べたように、
広さや形、フロア間の相対的な位置関係を気にせずに
ストレスなく作成、編集できるようにするための実装であるが、
方形配列に比べてアクセス効率が悪いデメリットがある。

しかし、これも仲間登録クラスの実装の問題と同じで、
今のPCなら速度的に大して問題にならないという理由で、
3Dダンジョンに限らず、拙作のドラクエ風ゲームでも採用している。

ただし、マップデータの保持がそうなっているだけで、
マップを表示する処理クラス内では、速度的な効率改善のため、
視野範囲内の壁や仕掛け要素を一旦、方形配列に抽出してから
利用している。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.210s*