3DダンジョンRPGエディタを作るスレ (587レス)
1-

526
(1): 520 2015/12/26(土)23:23 ID:V44X/Fk5(3/3) AAS
疑似3D表示ダンジョンのマップエディタの開発の難易度については、
マップデータの形式が自分で決められる程度のプログラミング能力があれば、
それほど難しいものではない。

実際、このスレッドでも過去にマップエディタを発表された方が複数いたようである。

注意する点としては、マップデザイナーが、イベントやフラグの扱いをカスタマイズ
できる仕組みをどのように実装するかという問題と、階層やエリアをまたぐ移動を
どのような方法でマップデータに含めるかという問題かもしれない。

これらについては、エディタ上ではとりあえず、そうした問題が発生する地点をマークし、
そこに立ち入った際、どのようにしてほしいか記述できる仕様になっていれば、
探索プログラムを組む際に改めてコーディングしてもよい。
もちろん、プログラミング言語的なスクリプトを書かせて解析しながら実行する方法でもよい。

しかしながら、最大の問題としては、例えそのようなエディタが公開されたとしても、
迷路を作図するという作業は実は非常に地味で単調で、一作品として完成された
大規模なマップデータを作るモチベーションが続かないことではないかと想像している。
527: 520 2015/12/30(水)04:31 ID:QkM8ubds(1/2) AAS
引き続き、(2)の戦闘パートについて検討する。
戦闘には、ランダムエンカウントのザコ戦と、ストーリー(プロット)上の特定場面(地点)
で発生するボス戦とあるが、まずはザコ戦について述べる。

この部分の存在意義は、
a) プレイヤーパーティの戦力(持久力)を試し、その時点での探索限界を設定する障壁
b) プレイヤーパーティの戦力増強の資する資金、経験値、アイテム等の収入源
c) ボス戦に向けた、魔法や特殊攻撃などのチュートリアル
等である。

a) は、消耗による焦燥感や恐怖を煽る要素である。
これがなければ迷路探索は単なるフラグ探しとなってつまらないものになるため、
適度な感覚で発生することが重要である。
また、パーティの戦力アップを経験的に体感する上でも、同一条件の敵と、
ある程度の回数、遭遇できる機会を設けなければならない。

b) については、度が過ぎると「経験値稼ぎが辛い」という印象を与えかねないが、
前述のa)の達成感とのバランスが肝心である。
また、女神転生風ゲームにおいては、パーティ増強または合成素材としての仲魔の捕獲も
この範疇に含める。

c) は、このゲームの戦闘システムのルールをプレイヤーに段階的に理解させるための
機能として、ゲームの進行とともに、徐々に複雑化する要素に慣れさせるためのものである。
例えば中ボス戦で、対策手段がわからない即死攻撃を初体験するようなことがあっては
理不尽ではないだろうか。
528: 520 2015/12/30(水)04:50 ID:QkM8ubds(2/2) AAS
戦闘システムの実装については、そのルール設定に依存するが、
オーソドックスなパーティ型ターン制バトルの場合、
(0) 戦闘に参加するメンバー(プレイヤー側、敵側)の初期状態を定義する
  また、その状況をプレイヤーに開示する。
(1) プレイヤーパーティとしての行動を決める。すなわち、
  戦うか、逃げるか、あるいは敵と交渉するかの選択である。
(2) 行動可能なメンバーについて、行動予定内容を設定する。
  プレイヤー側については、コマンド入力インタフェースなどを用意する。
  敵側については、選択可能な行動の中からランダムに選ぶか、
  人工知能的なものを準備する。
  なお、行動予定内容とは、「どの動作」を「誰に対し」行うかとして記述する。
(3) 戦闘開始時点で、敵、味方すべてのメンバーで行動順序を決める。
  一般的には「素早さ」のような能力が反映されるが、
  敵パーティが単一種の場合、行動が集中するとバランスが悪いため、
  ある程度広い乱数分布で順序評価したほうが良い。
(4) 順番が回ってきた時点で、予定の行動が可能で(生存かつ行動不能な状態異常がない)
  であれば、その作戦行動を実行する。
(5) 一方が全滅したら、戦闘を終了する。
 プレイヤー側が勝利した場合、HPやMP、状態異常などを探索系サブシステムに
  リストアする。
というような組み方が考えられる。
529: 520 2016/01/03(日)13:21 ID:Ljo7IXRL(1/3) AAS
プレイヤー側の戦闘時初期状態の決定には、
キャラクターメイキングシステムとの連携が不可欠である。

ゲームの構成にも依るが、開始時のパラメータ振り分けおよび
レベルアップによる半固定パラメータの保持、更新を行うサブシステムと、
HPや状態異常などの動的ステータスの保持および更新システムが管理する
数値を、戦闘開始時に参照し、戦闘終了時に復元する形で連携させる方法がある。

この実装のポイントは、基本的なことではあるが、
プレイヤーキャラクタのパラメータおよびステータス.にかかわる多項目の数値情報を
適切な方法でプレイヤーに提示するステータス画面の作り方にあると思われる。

膨大かつ複雑な依存関係があるパラメータを単純に羅列するだけでは、
プレイヤーが理解できないし、戦略や見通しを立てる楽しみが損なわれる恐れがある。

また、ステータスの回復、修復に関して、マップ上の特殊な施設の利用や、
魔法、アイテムの使用を手段とする場合、それぞれに対話式ユーザインタフェースの
実装が必要であるとともに、各ステータス異常と回復手段の対応について、
プレイヤーに学習させる時期や方法についても配慮すべきである。
530
(1): 520 2016/01/03(日)13:42 ID:Ljo7IXRL(2/3) AAS
店での買い物および.武装についても、キャラクターメイキングの範疇で検討する。
まずは、パラメータ変動効果にバリエーションのある武器、防具、アイテム等のデータベースを
整備しつつ、ストーリー上のどこでどのような武器、防具を入手できるようにするかを
バランス調整の際に検討する。
ゲーム内での実装は、対話型コマンド入力システムが基本となる。

加えて女神転生風ゲームを考えた場合、
戦闘で捕獲した悪魔を仲魔としてパーティに加える戦法や、
仲魔を合体させることで変化させるサブシステムが必要である。

なお、合体に関しては、とりあえず総当たりの表に書き表せられていれば、実装しやすい。
ここに、乱数やステータス値等の影響を絡めたシステムを入れるとすれば、
その仕組みをプレイヤーが容易に理解できるようにサポートシステムが必要である。

悪魔の合体は女神転生風ゲームの醍醐味であるため、
凝った仕掛けを考えたくなる誘惑はあるが、プレイヤーの目線で考えると
手間のかかる行為であるため、常に予定通りの結果が得られるような
公正で明朗なシステムであれば十分面白いのではないかと考えている。
531: 520 2016/01/03(日)14:04 ID:Ljo7IXRL(3/3) AAS
一方で、敵チームの戦闘時初期状態の決定は、マップのエリアコードと
連携したデータベースの参照で行うのが単純である。
敵データベースには、戦闘システムの開始と処理に必要なパラメータと、
その敵の出現エリアを設定しておく。

このデータベースは、登場する悪魔の数だけ全て設定する必要があり、
名前や数値情報以外に、プレイヤーの識別を補助するための画像、
アニメーションを用意することも考えると、その作成にかかわる作業量は
膨大になる。

実際に何種類の悪魔を用意する必要があるかというと、
多ければ多いほうが良いという考え方もあるが、
例えば、プロットをもとにマップエリアを分割し、
各エリアごとに3〜4種類の悪魔を目標にするという方法を提案する。

なお、その3〜4種類のうちの一つは、プレイヤーパーティのベンチマーク用に、
物理攻撃しか行わない咬ませ犬的な敵とするとよい。
532: 520 2016/01/16(土)08:16 ID:nb4XakV3(1/3) AAS
ここまでに考察したところで、女神転生風ゲームのゲームシステム面での
主要な要件は出そろったと思われる。

以後、実際に女神転生風のゲームを試しに作りながら、考察が足りない点は
その都度、検討する方向で進めてみたい。

当面の目標としては、このスレッドのタイトルに倣って、
「3Dダンジョン(迷路および謎解き)」を制作、編集、テストができる環境を整えることとする。

参考までに、現時点の画面のイメージはこのような状況である。
画像リンク

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

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

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

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

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

上述の試作プログラムでは、以上の情報を用いてマップデータの編集および
歩行移動テストが可能になっている。
534: 520 2016/01/16(土)10:38 ID:nb4XakV3(3/3) AAS
試作プログラムにおけるマップの編集について、少し工夫したことを書いておく。

このプログラムでは、ゲームプレイ時のスタイルでカーソルキーを使い、
3D迷路を歩き回ることが出来ていて、そのシステムに上乗せする形で、
・スペースキーを押すと、眼前に1つセルを作り、現在地点との間を通路でつなぐ。
・DELキーを押すと埋め戻す。
・コマンドまたはショートカットキーで、眼前に壁や扉を設置または撤去する。
・コマンドで階段表示、ダークゾーン設定およびスクリプト編集する。
という仕様になっている。

つまり、3Dマップを歩いてみて、この辺に通路を開けたいと思ったら、
スペースキーを押しながら前進すれば、好きなだけ穴を掘っていける
という変則的な方法でマップを編集する方法にしている。

おそらく一般的に、3Dダンジョンのマップエディタといえば、
画像リンク

のような、迷路を俯瞰した形で編集するのが常識ではないかと思われる。

しかし、このようなエディタは、「あらかじめ方眼紙などにデザインされた
マップを、ゲームプログラムで扱えるデータに打ちなおす」目的であれば
効率的なツールになるかと思うが、そもそも方眼紙を前にして、
マップをデザインするという作業が全然楽しく思えないと、生産性が悪い。

当初は俯瞰型のエディタも作ってはみたが、
何のモチーフもなしに迷路を描くというのは非常に効率が悪いと感じたため、
このように、プレイヤー目線の体験の拡張でマップデータを編集する仕組み
を開発した次第である。
535: 520 2016/01/19(火)22:57 ID:u9fe2fGH(1) AAS
迷路の描画については、魔法のマッパーが有効な時の俯瞰表示と、
メインウィンドウとなる疑似3D迷路の2つがある。

俯瞰表示については、フロアマップのセル群のうち、所定の範囲
(この場合、進行方向前後5マス、左右3マス)にあるものについて、
進行方向が画面上側になるように回転させて描画する。

描画する際はセル単位に相互に重ならないように描くようにすれば、
描画順序(セルの保持順序)を気にしなくてもよい。

それに対して(Zバッファを使わない)疑似3D表示については、
奥から手前に向かい、左右は両端から中央に向かって描画
する必要があるため、現在の地点座標と向いている方角から、
視界内(試作プログラムでは奥に4ブロック、横7ブロック)の
進行方向側の壁(または門)と、左手および右手のそれらを
一旦配列に集計してから、所定の順番に描画する方法としている。

この集計処理は、移動または向きを変えるごとに必要なので、
処理時間が気になるならマップの保持方法を見直すなどの
高速化・最適化が有効であると考えられるが、
100セル程度のマップであれば、今どきのPCなら気にする
ほどの時間はかからない。。
536: 520 2016/01/20(水)23:38 ID:yqZ8gL0+(1) AAS
マップエディタでは、迷路形状データの編集と合わせて
マップ上に様々な仕掛けを配置することも重要な機能である。

仕掛けとは、ターンテーブルやワープなどの罠だけではなく、
階段によるマップ間移動や、会話イベント、宝物の配置、
店や宿などの施設の設定全般のことである。

これらの仕掛けをマップデータ中に定義する方法としては、
マップ上の該当セルにユニークな名称(ラベル)を設定するとともに、
その名称に対応する仕掛けの内容を説明した任意様式の設定資料を
併用する方法が考えられる。

仕掛けの内容は当然ゲーム内容によって変わるものであるため、
ストーリーの核心に触れるような謎解きイベントなどの実現には、
どこかの段階でプログラミング作業が必要で、マップエディタ上で
テストを完結するのは難しい。

簡単な仕掛け、例えばターンテーブルや、情報が得られるメッセージなどは、
簡単なイベントコードと、メッセージテキストなどのカスタマイズ可能な要素を
マップデータ中に記録できる形式を定義してやれば、テストできないこともない。

しかし、「あるアイテムを持ってその場所に行くと中ボスが表れて、
会話の流れで”いいえ”を選択すると戦闘になって、勝利したら
あるフラグが立ってアイテムを消失する」のような、ストーリー上に
一回でもあるかどうかわからないようなイベントのテンプレートを
エディタ設計時に想定して組み込んでおくという発想には限度がある。

この課題があるために、汎用性のある3D迷路のデータ構造の定義は困難で、
そのようなエディタを開発しようとした場合に悩むことになる。
537: 520 2016/01/27(水)23:34 ID:VDw6Dqmf(1) AAS
そこで、マップデータにイベントを埋め込むという発想を拡張し、
イベントやマップ情報をひっくるめて「3DダンジョンRPG」そのものを
コントロールする処理システムというものを考える。

コントロールする対象は、ターンテーブルやマップ間移動のような
迷路のトラップに関するもののほか、情報を表示するためのウィンドウシステム、
プレイヤーの入力UI、ゲームの進行を管理するフラグ等、
制御内容を容易に"記述可能"なものから順に考えている。

これにより、イベントの設置、つまり制御内容を記述しテストする作業を、
迷路の設計と並行してマップデザイナー(兼シナリオライター)一人で
完結させるのが目的である。

実のところ、この仕組みを発展(制御対象を拡大)していけば、
既存のRPGエディタ、ツクール等や、スクリプト処理言語と同じようなものに
なっていく。結局、イベントを細かくカスタマイズしようと思ったら、
どういう形であれ、プログラミング的な作業は避けられない。

汎用性を高くしすぎて、とっつきにくいエディタになるのは不本意なので、
”女神転生風”ということを再確認して、処理系を構築しようと思っている。
538: 520 2016/01/28(木)22:08 ID:dhlMU4Pp(1) AAS
参考のために一例を示す。
画像リンク


マップ上を移動し、このセルに踏み込んだら、
このセルのマップ情報に付帯しているスクリプトを
テストプログラムが解釈する仕掛けになっている。

上から順に、画像ファイルを指定して表示、
ウィンドウを開く、テキストを表示する(2行)、
プレイヤーのキー入力待ち、画像消去、ウィンドウ消去
を意図した記述になっている。

画像ファイルとメッセージ文字列以外は一般に定型でよいため、
設置指示時に、エディタがテンプレートを貼るようにしてある。

この例に示す程度の、上から下に進むだけの動作の記述であれば、
プログラミングの知識に関係なく、マップデザイナーの作業範疇で
容易にカスタマイズができるのではないだろうか。
539: 520 2016/01/29(金)22:08 ID:iWN0LHQ9(1/2) AAS
もう少し複雑になった例を示す。
画像リンク


宝箱があり、開けるかどうか聞かれ、「はい」と答えると中身を入手する
パターンである。

ウィンドウにテキストが表示されるあたりは前例と同様で、
「はい」「いいえ」の回答によって分岐する部分があることと、
魔ッ貨と宝玉の入手にかかわる内部変数操作、そして、
宝箱開封済みを示すフラグの操作で構成される。

このスクリプトはマップデータ中の該当セルに埋め込んであるが、
魔ッ貨、宝玉および取得済みフラグについては、
別の定義ファイル中で宣言し、ゲーム進行中保持するようになっている。

なお、「マップ中のアイテムを取得する」という行為を表現するには、
この例のように、アイテム取得済みのフラグを立て、次回は、そのフラグが
既に立っているなら処理しない、というロジックを使うのがセオリーである。

プログラミング経験者にとっては当たり前のことだが、マップデータ中から、
アイテムの記述情報を取り除くような真似はしない点、念を押しておく。
540: 520 2016/01/29(金)22:24 ID:iWN0LHQ9(2/2) AAS
このほか、階段の昇り降りやエレベータ判定、店などに入った時の切り替えも、
同じようにマップセル中にスクリプトとして記述できる。

店や回復施設など、複雑な選択操作やデータアクセスを伴うものについては、
別途プログラマが実体を開発する必要があるが、マップ上の特定地点に
その施設を置くという指示は、マップデザイナーに委ねることができる。

また、併せてストーリー進行に関しても、フラグを併用して迷宮内の謎を解きながら
探索するというパズル性も、若干プログラミング的な思考を伴うが記述可能で、
エディタ上でテストできる環境が整った。

現在、試しにFC版女神転生のダイダロス塔(静玉をとってエレベータに乗れるまで)を
このシステムで収容できるかどうかテストしているところである。
541: 520 2016/02/11(木)06:26 ID:TKq/gaXF(1) AAS
ダイダロス塔クリアまでの迷宮マップとイベントの設置テスト結果について。

このエリアの1階には一部に一方通行の場所とダークゾーンがあるが、
これらを含め、宝箱や壁の落書きなど全てそれっぽく収容することができた。
画像リンク


セル単位に東西南北の壁または通路を記憶する本方式では、
隣接部屋間のその設定値を敢えて不整合にすることで
一方通行を設定することができる。

定型的なトラップの一種なので、エディタ上で入力サポートするように
機能を追加した。

ダークゾーンについては、階段と同じように、該当セルにフラグを立てて置き、
描画ルーチンの対応で表現する方法で実装する。

原則的には、ダークゾーンは壁または扉で仕切られたエリアを充填するもので、
そのエリア内にいる間はメインウィンドウを霧で目隠しする表現方法をとるのだが、
もし、ダークゾーンが広間の途中に浮いているようなデータであったとしても、
白い柱が立っているような形で見えるように、描画処理を工夫してみた。
画像リンク

542: 2016/02/12(金)16:23 ID:iP/PhpAe(1) AAS
がんばって〜
どこまで作るか知らないけど
543: 520 2016/02/13(土)04:45 ID:sZ75RTIP(1/3) AAS
当面の目標はファミコン版女神転生を収容できるシステム&エディタを自作することで、
現状、3D迷路のマップデータとトラップ類の設置については既報のとおり完了した。

幸いにして実機およびROMカセットを所有しているのと、攻略サイトやプレイ動画等
豊富に情報があるので入力と検証も自力で可能なのがありがたい。

問題があるとすれば今後のモチベーションをどのように保っていくかと思われる。
544: 520 2016/02/13(土)05:36 ID:sZ75RTIP(2/3) AAS
ここからは開発の焦点を変えて、このゲームのプレイ要素の一つである
キャラクターメイキング、パーティ編成のシステムの実装について検討する。

最終的に、戦闘システムの勝敗に関わる要素であるため、バランス調整が
肝になると予測されるが、まずはプレイヤーとのインタフェース部分から考えていく。

本作中には、戦士型のナカジマ、魔法使い型のユミコと、その他仲魔の3タイプの
キャラクタが登場し、その設定項目がタイプ別に微妙に異なることと、
それに応じてステータス画面のレイアウトも変える必要がある。

共通する要素としては、
・名前、種族、レベル
・強さ、知力、攻撃、機敏さ、運もしくは防御
・HPおよび最大HP
・MPおよび最大MP(ただし、ナカジマはともに0)
・状態異常フラグ
で、固定(半固定)な値もあれば、ゲームの進行で変動するものも含まれる。

項目さえ決めてしまえば、これらを管理するクラスを作るのは容易であるが、
項目をカスタマイズ可能にしようとすると少し面倒になる。
少しやりかけてみたが、UI処理の実装など足かせになるばかりなので、
FC版の仕様に準拠した構成で進めることにしたい。
545: 520 2016/02/13(土)05:50 ID:sZ75RTIP(3/3) AA×

546: 520 2016/02/16(火)21:35 ID:OSyFbIMG(1) AAS
キャラクターメイキングの画面を試作した。
画像リンク


また、同種の方法でプレイヤーのステータス画面および
仲魔のステータス画面も実装してみた。
画像リンク


ステータス画面に、キャラクタの肖像画が表示されるというのは
FC版で、特に印象的だった記憶がある。
試作プログラムにおいてもその仕様に準拠し、
複数枚の画像を用意すればアニメーションも可能である。

なお、プレイヤーたちの画像および悪魔の画像については、
真面目に描こうという気が全く感じられないと思われるかも
知れないが、当然のことながら、差し替え可能な仕組みに作ってある。
547: 520 2016/02/23(火)04:44 ID:VJ1v/4yS(1) AAS
このゲームでは、パーティに悪魔を加えるためには、
事前に交渉(もしくは合体)の上で「仲魔」として登録が必要とされる。
仲魔はFC版では最大7体まで登録可能である。

この「仲魔登録」クラスの設計については、以下の仕様とする。
(1)初期状態では空っぽとする
(2)登録しようとする悪魔が既にエントリされていないかチェックする
(3)登録数が上限に達していないかチェックする
(4)登録可能な場合、悪魔の種類と現在のHP、MPをセットで配列末尾に登録する
(5)登録されている悪魔を抹消し、配列を詰める
(6)悪魔データベース記載の最大HP,MPを参照し、回復に必要な金額を算出する

とりあえず今思いつくのはこれくらいだが、単純な配列操作で実装できそうだ。
548: 2016/02/24(水)21:20 ID:3aPoux15(1) AAS
なんの言語を使っているのだろう。
配列じゃなくList型とかでもいい気がする?

class Nakama {
int hp, mp;
}
List<Nakama> nakamaList;
みたいな。

ちなみに自分は、敵、味方、(未実装だけど味方が召喚したのも)
Characterクラスで統一して、
List<Character> characterList;
で一括管理w
549: 520 2016/02/25(木)22:31 ID:cdKIzSfc(1) AAS
システム設計上の話とプログラミングの話を曖昧にして申し訳ない。

ゲームの仕様上は、要素数に上限のある配列構造を準備できればよく、
プログラミング上、必要な操作ができるのであれば、
listでもarrayでも構わない。

ただ、この仕様で敢えてlistを採用するメリットが見いだせない。
と言ってデメリットもないような気もするが、、
高々7個程度の要素数では、効率云々を議論するまでもなく、
結局、どっちでも構わないと思う。

なお、的確な指摘であるだけに、最後の「w」は残念だ。
550
(1): 2016/02/27(土)00:05 ID:xKWjyR2t(1) AAS
おおう、申し訳ない。
「w」はクセのようなもので他意はないです。失礼しました。

なるほど、論理設計上、配列的な設計ということですね。

3Dダンジョン繋がりで、いろいろ参考にさせてもらってます。
(「セル」という名前付けは同じなんだなー、とか、
セル同士リンク構造でつなげてるんだなー、とか(うちはX×Yの方形構造))
551: 2016/02/27(土)18:53 ID:k3nxuSN5(1) AAS
3Dダンジョン ウィザードリィをベースに作ってる
ワイヤーフレームと3D画像と
552: 520 2016/02/28(日)21:40 ID:fYTROrM4(1/2) AAS
引き続き、その「仲魔登録クラス」の利用方法について検討する。

戦闘状態で交渉に成功したときに、登録エントリーの末尾に新規登録するのは
特に問題はないと思われる。

COMP→よぶコマンドを実行したときには、
「登録している仲魔のうち、まだ召喚していない悪魔」の選択リストを作る操作と、
その選択画面でカーソルを動かしたとき、呼び出しコストの見積もり表示を更新する
処理が必要になる。
この処理の実装に、汎用的なメッセージウィンドウを流用するのが困難であれば、
専用の選択ダイアログを作る価値はあると思う。
画像リンク


COMP→もどすコマンドを実行したときには、
仲魔登録クラス側のHP,MPを更新し、回復の泉での代金計算に利用する。

最後に重要なのが、邪教の館での合体対象の選択UIで、
これは合体表(実質的にはドリアード確認表)を示して
合体対象の悪魔2体を選択するウィンドウである。
これも、この選択専用に作ったほうが容易である。
画像リンク


合体を実行したときには、
(1)選択した2体の悪魔が召喚中なら帰還させ、仲間登録エントリから抹消し、
(2)合体結果の悪魔を、エントリの末尾に登録する
という操作を行う。
553: 520 2016/02/28(日)21:57 ID:fYTROrM4(2/2) AAS
>>550
セル(部屋)をリストで管理する方法については>>533で述べたように、
広さや形、フロア間の相対的な位置関係を気にせずに
ストレスなく作成、編集できるようにするための実装であるが、
方形配列に比べてアクセス効率が悪いデメリットがある。

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

ただし、マップデータの保持がそうなっているだけで、
マップを表示する処理クラス内では、速度的な効率改善のため、
視野範囲内の壁や仕掛け要素を一旦、方形配列に抽出してから
利用している。
554: 2016/03/04(金)19:52 ID:4OMe0RSY(1) AAS
なるほど、セル=1マスじゃなくてセル=1部屋だったのか。通りで
>1フロアあたりせいぜい100セル程度
100って少ないと思ってたんだ(20x20でも400マスだし)
555: 520 2016/03/05(土)08:32 ID:/l9sJN3a(1) AAS
20x20というと、Wizardryのマッピングを思い出す。
なお、FC版の女神転生は、基本8x8部屋で1フロア(またはフロア中のエリア)
を構成する仕様になっている。

技術的な理由が何かあったのかどうかわからないが、
説明書にも8×8を単位にマッピングしながらプレイすることが推奨されている。

無論、今どきの制作、実行環境でそのようなサイズ制限は考えなくてもよいが、
序盤から暗記できないほど巨大なマップを歩かせるよりも、
(1)まずは3D迷路を歩くこと、
(2)繰り返し歩くことでマップを覚えること、
(3)覚えきれなってきたらマッピングをすること、
という難易度の段階的設計は、考慮してもいいと思う。

その延長に、マッピング作業を困難にするトラップや、
8×8という固定観念を破るようなマップを登場させると有効な気がする。
1-
あと 32 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.038s