|
タイトルは、FC版ポートピア殺人事件の地下迷宮 (アドベンチャーゲームなのにあるんですよマジで)のとある箇所に 書いてあるメッセージ。 当時中学生くらいだったと思いますが、拙い英語能力を駆使して、 「モンスターに驚かさせられた」というジョークと言うことを知りましたが、 その後、WIZでのモンスターの奇襲攻撃時のメッセージであることを知り 洋ゲー(主にウルティマ+ウィズ)に感化されてドラクエの作成に携わった 堀井雄二らしいわと思い出す今日この頃。 すっかり忘れられていると思いますが、ブログ本来の目的であるゲーム作成を久しぶりにしました。 とはいえ、まだまだデバッグ中なので妄想シアターはお休み。 前回までの設定に従い、シナリオデータにて定義したモンスター情報を引っ張ってくるところまでが完了。 テストダンジョンに大量に大量のレギュラーモンスター(通るときに必ずエンカウントするモンスター) を配置して、情報の取得が正しいッポイか確認しています。 今のところ、シーフのみ配置して確認 それなりにランダムに選ばれている模様。 これで、レギュラーがOKなら、ガードモンスター(強めのエンカウント必須モンスター) ボスモンスター(固有のモンスター)の情報取得もすぐ終わるはず。 その後、ランダムエンカウントを確認して、 遭遇に関する実装は完了かな? でも、メッセージとして表示されるだけなので、 最終的に戦闘の実装が完了するまでにいったいどのくらいかかるのやら・・・。
|
ゲーム作成
[ リスト | 詳細 ]
妄想の具現化を目指して・・・
|
今回も、戦闘の実装に向けての処理の確認的な日記状態です。 相変わらず興味のない人には、ワケワカンネな内容で、申し訳ない。(=_=; 去年の末、とりあえずのお試しダンジョンで出る予定のモンスターとして、 ・ジャイアントバット ・ジャイアントラット ・レベル1シーフ ・レベル3シーフ ・コボルド ・コボルドチーフ ・スケルトン ・レッドスケルトン を作ることにしました。 さてここで1つ問題(?)が。 コボルド、スケルトンのようなレベル固定のモンスターはともかく、 堕ちた冒険者系のモンスターレベルがわかるのはちょっと変です。 「俺はレベル○○シーフだ!」と名乗り上げてる訳じゃないし。(爆 そこで、そこで確定名にちょっと細工をします。 ・レベル1シーフ → シーフLV1 ・レベル3シーフ → シーフLV3 単純に、レベルの表記を名称の後方に入れ替えただけですけど、 プログラム内部で扱う名称は「シーフLV1」「シーフLV3」でも、 表示の際に「LV」と言う文字列を検索し、もし見つかった場合、その場所までを表示する と言うことが出来ます。 「LV」が先頭にあると、その後のレベル数字部分が 常に1桁なら3文字削ることでOKですが、 2桁かもしれないことを考慮すると、 残る「シーフ」を導き出すのがちょっと面倒です。 プログラムが分かる人ならば、レベルの項目は別にあるし、 最初からどっちも「シーフ」でいいんじゃね? って思われますが、そうしてしまった場合、 シナリオ定義の際に配置するモンスターがテキストで記述できないと言うデメリットが発生します。 根本的には、モンスターにIDを振ってガッチリ管理すればいいことですが、 専用エディタを作成する必要があり、結構面倒です。 シナリオテキストに「101,1-2,102,2-3」とあっても レベル3シーフが1〜2、レベル1シーフが2〜3と瞬時に判断するには一苦労です。 ということで、レベルのあるモンスターは以降この形式で記述します。 さて、それでは前回確定したパラメータをあてていきます。 名称はそのままとして、不確定名、種族、レベルはこんな感じでしょうか。
お次は、HP、ACです。 HPはロール、ダイス、アドをそれぞれabcとして、aDb+cで表します。
続いて攻撃。 HP同様aDb+cで表記。
経験値については計算式を考え中なので保留。 攻撃能力である、魔呪文、僧呪文、攻毒、攻麻、攻石、攻吸、攻首、攻息については、 これらのモンスターにはなし。 抵抗関連は以下の通り。
スケルトンおよび、レッドスケルトンについては、 アンデットなので、毒、麻痺、ドレイン、死による影響はありません。 なので、それぞれ100(必ず抵抗=効かない)にしようかと思いました。 しかし、後に作成予定の経験値算出式にて、それらの能力により経験値が増大してしまうため、 能力値による無効化ではなく種族による抵抗をすることにして、 設定しないことにしました。 逆に言うとアンデッドのボスとして経験値を多めに与えるために設定することも可能 となります。 因みに、100%になると状態異常そのものは無効化できますが、 特殊ブレスのようなダメージ+異常の場合、100%ごとに無条件レジスト成功(ダメージ半減)として、 更に残る%があればその%チェックに成功することで半減できる予定です。 ダメージ100の火ブレスは、 50%の場合、50%の確率で2分の1(100or50ダメージ) 100%の場合、無条件に2分の1(50ダメージ) 150%の場合、無条件に2分の1、更に50%の確率で2分の1(50or25ダメージ) 200%の場合、無条件に2分の1の2分の1(25ダメージ) 250%の場合、無条件に2分の1の2分の1、更に50%の確率で2分の1(25or12ダメージ) エルミナージュのような回復および反射は考慮していません。 最後に特殊能力について、
従来のWizでは、仲間を呼ぶ場合、援軍は同一のモンスターですが、 コボルド、ゴブリンのような縦社会がある場合などは、 自分の部下や眷属を召喚できるようにしてみる。 この辺は、コボルド・オーク・ゴブリンキングなんかが 自分の手下をワラワラ呼び出したり、 クイーンアント(女王アリ)が兵隊アリを呼び出すなんてことを想定。 他にも、D&Dにて存在するシュリーカーと呼ばれるモンスターは、 宝箱のアラームのラップの様に他のモンスターを呼び出すと言う能力があり それも再現できる。 呼び出せるモンスターの種類や数については、
モンスターの情報に加えるより、シナリオデータの一部として定義する方向が無難かな。 |
|
今回も、戦闘の実装に向けての処理の確認的な日記状態です。 興味のある方は前編もどうぞ。 ということで引き続きモンスターの能力を決める上で必要なパラメータを いつも世話になっている、得物屋さんの#1(FC版) を参考に、拾っていきます。 もはやRPGには必要となっている値です。(サガシリーズには無いですが・・・) ・弱いモンスターを倒すより強い奴を倒すほうが経験になる。 ・でも弱いモンスターを倒し続けることでも経験にはなる。 ともに一般的なRPGでの仕様なるため、 竹刀(軽い)を素振りするのと木刀(重い)を素振りするのでは、木刀を素振りいたほうが鍛錬になり
と表せられます。さらに真剣(より重い)を素振りしたほうがもっと鍛錬になる。 たとえ竹刀でも鍛錬になる。 しかし、下の文は、女神転生のような一部RPGでは若干異なります。 真剣を素振りできるような者はいまさら竹刀を振り回しても鍛錬には向かない。
となります。さっきまで倒せば100の経験値をもらえてた敵ですが、 レベルが上がり余裕で倒せる頃には、50や25と減っていき、最終的には1しかもらえないことも。 逆を言うと自分が弱いときに苦労して倒せば、200、400ともらえることもある というレベル差によるボーナスを考慮した形です。 この仕様には一長一短があり、 作業的な経験値稼ぎがやりにくいぶん無理をしがちになりやすい。 それにより緊迫した戦闘は楽しめる。 また、メタルスライムのようなボーナス系モンスターが配置し辛い。 今作は#1を踏襲するつもりなので、 経験値稼ぎはウィル・オ・ウィスプでも切りまくってもらうことになりそうです。 そういえば、能力に応じて経験値を算出する式があるらしいのですが、 それがあれば苦労しないんですけどネェ。 モンスターの情報をデータベースとして持つことにはなるけど、 コレをモンスターの情報に含めてしまうと、 シナリオ風にダンジョンへ配置したい関係上、同じような構成にしかならないので・・・。 いくらダンジョンのテクスチャを張り替えて見栄えを変えても、 現れる敵が同じような構成なのはちょっとゲンナリですしね。 魔術師系なら魔術呪文、僧侶系なら僧侶呪文、毒、麻痺、石、ドレイン、ブレス、クリティカルヒット(首はね) 火に強い、冷気に強い、石にならない、即死無効、仲間を呼ぶ、逃げる、等など。 この辺はフラグ管理より、パーセンテージで管理することで、 毒を受ける確率が高いとか、稀に石化されるといった特徴があらわせられると思う。 しかし、 タイプ的には戦士なので交渉可能だけど、友好的なバーサーカーとかちょっと変だし、 問答無用の狂信者のようなプリーストも、友好的なのはおかしい。 逆もまたしかしで、下級の悪魔(インプとか)なら、交渉の余地も有りそうだし、 やはりモンスターごとに設定可能にしないといけないかも知れない。 以上で、基本データは終了 項目に置き換えてみると、 ・名称 ・不確定名 ・種族 ・レベル ・HPロール/ダイス/アド ・AC ・攻撃1ロール/ダイス/アド ・攻撃2ロール/ダイス/アド ・攻撃3ロール/ダイス/アド ・攻撃4ロール/ダイス/アド ・攻撃5ロール/ダイス/アド ・攻撃6ロール/ダイス/アド ・経験値 ・魔呪文 ・僧呪文 ・攻毒 ・攻麻 ・攻石 ・攻吸 ・攻首 ・攻息 ・無効 ・抵火 ・抵冷 ・抵毒 ・抵麻 ・抵石 ・抵吸 ・抵死 ・抵呪文 ・回復 ・呼仲間 ・逃走 ・友好ここで気になるところが1つ。 無効と抵呪文について被っている気がするのはキノセイだろうか? そこで、NES版#1の解析サイトで調べてみると・・・ どうやら、無効は呪文そのものを無効化する能力で、 後のWIZでの「コルツ」の能力と同じ効果らしい。 それに対して、抵呪文は、呪文による各種判定ダイスを半分にして+1するとのこと ラハリトのダメージであれば、4D6の4回ロールを半分の2、して+1なので3D6となる。 まさに、火炎や冷気ブレスの軽減のように呪文ダメージによる軽減用の抵抗と言うわけである。 ちなみにハリトの1D8については、「半分にして+1しても変わらない」とのことから、 奇数ダイスの場合の端数は切捨てと言うことのようである。 よくよく考えたら、この辺はD&Dの「セービンスロー」と同じだったり。 さすがに20年前のことだからすぐには思い出せないわ。(=_=;
|
|
3ヶ月ぶりのゲーム作成は、戦闘の実装に向けての処理の確認的な日記状態です。 今回も興味のない人には、ワケワカンネな内容で、申し訳ない。(=_=; ということで、モンスターの能力を決める上で必要なパラメータを決定していきます。 いつも世話になっている、得物屋さんの#1(FC版) を参考に、モンスターの必要パラメータを拾います。 まずは、 ローブを着た者があらわれた。 → 魔法使いか? よしモンティノ(沈黙の呪文)だ! 実は、忍者なので意味無し・・・とか。 未知のものに対する恐怖が倍増です。 (特に新しい階層に突入した直後など) ドラゴンスレイヤー → 竜系倍打 は有名な武器ですね。 防具にタイプをつけた場合、 そのタイプのモンスターからの攻撃を一定確率(#1では2分の1の確率)で抑えます。 抑えると言うところがポイントで、ダメージ半減ではなく攻撃そのもをさせないという効果です。 攻撃されないわけですから結果的にダメージを受けにくくするわけです。 虫耐性ある防具の場合、虫モンスターが近寄ってこないということなので、 MHFのランゴ除けにほしいスキルだわ。(笑 高いほど強いと言っても過言ではないでしょう。 因みにこのレベルは後述のHPに密接な関係があります。 多いほどタフというのは言うまでも無く、前述のレベルにほぼ比例します。 ちなみに、面白い事に#1の巨人族は、 ファイアジャイアントがレベル11であることを除いて、アース、ポイズン、フロスト全てレベル1です。 そのため、マカニト(レベル7以下のモンスター即死)がポコポコ決まります。(但しFC版) でもポインズンジャイアントって、低レベル戦士じゃ倒せなくネ? と、思う人もいるでしょう。 ウィザードリィの元ゲーであるD&Dでは、体力を表す数値に1D8+2などの表記があります。 はじめの1がレベルを表すもので、2番目の8がサイコロ(ダイス)を表します。 (1D8で、8面ダイスを1回ると言うことですね。) 体力がありそうなモンスターはD10で10面ダイス、 ひ弱そうなモンスターは、D6やD4の6面、4面ダイスにして 同一レベルでも差が出ることもあります。 最後の+2は出た目に加算(マイナスなら減算)するもので、そのモンスターの味付け的なものです。 (平均より強ければプラス、若干弱めにするのであればマイナスとする) #1でのポイズンジャイアントでのこのステータスは、1D1+80 つまり、1面ダイス(面じゃなくて点だろコレ・・・)に80を加算なので、常時HP81 ブレス攻撃は現在のHPと同等なので、 先制ブレスで81ダメージ(半減すれば40)をよく食らうのはこのためです。 そのため、ドラゴンなどブレス攻撃するモンスターの体力を真っ先に削るのは、 戦略の上で重要です。 アーマークラスのことで、何も装備していない状態がAC10で、 数字が小さければ小さいほどダメージを受けにくくなります。 どれだけダメージを受けにくいかを表すものですが、 ウィザードリィのマニュアルには「AC−10はシャーマン戦車の装甲に匹敵」と表現されてますが、 かえって混乱の元になってるとしか言えません。(=_=; たしかに鎧の硬さもACを下げる(よくする)要素の1つですが、 職業の1つである、忍者は何も装備しないとレベルに比例してACが下がることから、 素早く動ける = ダメージを受けににくい = ACが良いという意味も入っていると思います。 (実際に敏捷性が高いとACを下げるボーナスがもらえます) まぁ、どこぞの格闘マンガのように「鍛えているから硬いんだフハハハ」と 言えないこともないんですが・・・。(=_=; 攻撃力と防御力から計算するDQやFFと違い、 ダメージの幅は体力同様「1D8+1」のようにモンスターに個別に設定されています。 そのためキャラクターがレベル1だろうとレベル9999だろうと、 受けるダメージ自体の幅は同じです。 無論レベルが高いほうが良い装備をしていると思うのでACが低く(防御がいい)なるわけで、 ダメージそのものを受けにくくする=結果ダメージ少ないという効果はあります。 さらに#1では、複数攻撃も存在し、 キメラのデータを見てみると全モンスターで唯一6回攻撃を行います。 それぞれ、 1D3、1D3、1D4、1D4、2D4、3D4 で 1〜3、1〜3、1〜4、1〜4、2〜8、3〜12 となります。 ただし#1では、必ず6回攻撃すると言うわけではなく、 1回目の攻撃が外れれば、2回目以降全ての攻撃は行いません。 当たれば次、当たれば次・・・と一種のコンボのように順にダメージが大きくなってきます。 D&Dでは低レベルプレイヤーの強敵でもあるベアー(つまりクマ) は、両腕による攻撃(1D6、1D6)がヒットするとベアハッグ(2D8) で、合計4〜28ダメージという恐るべきコンボが存在します。 ダメージの際に振った数字にもよりますが、レベル4戦士(推定4D8=4〜32の体力)でも 一撃で死ぬ可能性があります。 ACを下げて(良くして)腕攻撃をスルーし、捕まらない(=ベアハッグされない)ようにするのは、 #1でも同じことです。 ちょっと長くなってきたので、今回はココまで。 後半へ続く。
|
|
今回は、戦闘の実装に向けての処理の確認的な日記状態です。 興味のない人には、ワケワカンネな内容で、申し訳ない。(=_=; さかのぼる事半年前、(もうこんなに経ってるのね・・・) シナリオ構成を考える上で、モンスターの出現パターンを な感じで考えてましたが、 思いのほか面倒と言う事に気がつき、 シンプルに登場する構成をそのまま定義する事に。 そもそもあの思考はクローンとして再現する場合のモノですしね。 序盤の試練洞窟で登場するのは、 ・ジャイアントバット(オリジナル) ・ジャイアントラット(オリジナル) ・レベル1シーフ(オリジナル) ・コボルド ・スケルトン(アンデットコボルドからメジャーな名前に) の5種類。 強さとしては全てレベル1で 出現率の大半がコウモリ&ネズミで レベル1シーフ、コボルド、スケルトンはやや少なめに。 単純に確率の元となる値と、モンスター名、出現数を列挙するのみ。 50,ジャイアントバット,1-3 50,ジャイアントラット,1-3 20,レベル1シーフ,1-3 20,コボルド,1-3 20,スケルトン,1-2 はじめの50とか20は、確率みたいなものと思ってもらえればOK 全ての合計値は50+50+20+20+20=160 コウモリ&ネズミの出る確率は、それぞれ 50÷160=31.25% 残りの2種については、20÷160=12.5% となります。 この辺の計算は機械に任せるので正確に%で記述する必要はないのです。 あとで、「盗賊コンビみたいなレベル1シーフはもうちょっと多くするべき」 と思ったら、単純に20→50とかするだけで、他のモンスターの出現率は調整できますし。 ということで、 ココまではワンダリングモンスターとして、ランダム遭遇の部分。 ウィザードリィでは、ルームモンスターとして、 扉の向こう側に陣取ってる奴らがいます。 ワンダリングモンスよりはちょっぴり手ごわくしたいところ。 20,ジャイアントバット,2-4,ジャイアントバット,0-3 20,ジャイアントラット,2-4,ジャイアントバット,0-2 40,レベル1シーフ,2-4,レベル1シーフ,0-3 40,コボルド,2-4,コボルド,1-3 40,スケルトン,2-3,スケルトン,0-2 とりあえずこんな感じにしてみました。 同じモンスター名が並んでいますが、コレはグループが2つと言うこと。 ただし、0-3は0〜3匹、0-2は0〜2匹と言う意味で、 0匹となった場合は1グループのみの状態。 先ほどの定義とあわせるとどれがワンダリングで、どれがルームモンスターなのか 解らないので、モンスタータイプの情報を埋め込みます。 F,50,ジャイアントバット,1-3 F,50,ジャイアントラット,1-3 F,20,レベル1シーフ,1-3 F,20,コボルド,1-3 F,20,スケルトン,1-2 R,20,ジャイアントバット,2-4,ジャイアントバット,0-3 R,20,ジャイアントラット,2-4,ジャイアントバット,0-2 R,40,レベル1シーフ,2-4,レベル1シーフ,0-3 R,40,コボルド,2-4,コボルド,1-3 R,40,スケルトン,2-3,スケルトン,0-2 データ先頭のFは「フリー」、Rは「レギュラー」としています。 しかし、WIZをやったことがある人ならお分かりかと思いますが、 ルームモンスターにも2パターン存在して、 何度も逃げているといなくなるパターンと、 何度逃げても絶対にいるパターンがあります。 単純に R,20 を追加することで、一定の確率で敵がいない場合を設定できますが、 この定義は同一フロア共通のモノとしたいので、 絶対に倒さないと進めない関門としては、向いてません。 (極端な話、全て逃げまくって目的地までいけることになります。) 過去に実装していた内容のサルベージになりますが、 ガードモンスターとしての定義を追加します。 関門ですから、出来ればやや強めの配置をしたいところ。 G,50,レベル1シーフ,4-6,レベル1シーフ,3-5 G,50,コボルド,6-9,コボルド,3-5 G,50,スケルトン,4-6,スケルトン,3-5 因みに敵の強さのレベルの目安はWIZの元祖たるD&Dの法則に従い、 レベルの合計である程度判定できます。 シーフ 7〜11レベル、 コボルド 8〜14レベル スケルトン 7〜11レベル プレイヤーたちはレベル1×6ですので、 レベルアップしてないとやや強敵、何名かレベルアップすることで同等となります。 しかし、ザコがもっさりいたところでなんかパッとしませんね。 ということで、ワンランク上のモンスターを考慮します。 G,50,レベル3シーフ,1-2,レベル1シーフ,4-6 G,50,コボルドチーフ,1-3,コボルド,4-6 G,50,レッドスケルトン,1-2,スケルトン,2-4 シーフ 3〜6+4〜6 → 7〜12 コボルド 3〜9+4〜6 → 7〜15 スケルトン 4〜8+2〜4 → 6〜12 レベル合計はほぼ同一ですが、 数は少ないものの、リーダーたる1グループ目のレベルが3〜4になり強敵です。 魔法などでうまく攻略しないとピンチかもしれません。 コイツラを配置した場所の近くにガラクタの山だけではなく宝箱なんかも 配置すると良いかもしれませんね。 ということで、配置モンスターの定義はこんな感じになりました。 F,50,ジャイアントバット,1-3 F,50,ジャイアントラット,1-3 F,20,レベル1シーフ,1-3 F,20,コボルド,1-3 F,20,スケルトン,1-2 R,20 R,20,ジャイアントバット,2-4,ジャイアントバット,0-3 R,20,ジャイアントラット,2-4,ジャイアントバット,0-2 R,40,レベル1シーフ,2-4,レベル1シーフ,0-3 R,40,コボルド,2-4,コボルド,1-3 R,40,スケルトン,2-3,スケルトン,0-2 G,50,レベル3シーフ,1-2,レベル1シーフ,4-6 G,50,コボルドチーフ,1-3,コボルド,4-6 G,50,レッドスケルトン,1-2,スケルトン,2-4 次はモンスターの定義を改めて確認したいと思います。 ということで、今回はココまで。
|








