アフィリエイト広告を利用しています
 

2024年01月13日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第87回



3Dダンジョンロールプレイングゲーム 第87回目です。
前回で、メインプログラムは一通り完成です。

後は、「エンディング」及び、「CONTINUE」処理を残すのみ。

今回は、一通りプレイしてみてバグがないか探す、「デバッグ」作業を行います。
ゲームが完成した際は、アルバイトなど雇ってどこのソフトハウスも必ずやる作業です。
まぁ、最近はバグ修正パッチを簡単にネット配信できるので、昔ほど力を入れていないと聞いたことがありますが…。

うーん…。
仕方がないけど、ゲームバランス悪い…。
「スライム」と、次の強さの敵「シルバーウルフ」の強さ差が半端ない…。
(ドラクエマップの広さの敵レベルを21×21のマップ(移動可能エリアは更にその半分)に凝縮してるから仕方ない…。)

バランス調整で、取得経験値を上げてレベルを上げやすくするか、取得金を上げて武具・防具を買いやすくするか…。
ちょっと考えます。

「デバッグプレイ」の結果、細かいバグ多数と、大きなバグ数件発見。
細かいバグは、無数にありました。
簡単に修正できるような内容でも、メモリの空き容量がないのでなかなか修正が困難なものもありました。
これまでに掲載したロジックも、バグ取りで細かく色々変更になっていますので、ご了承願います。
(掲載しきれません。

大きなバグは数件ありましたが、ほとんどが計算結果の8ビット越え。
なかでも与ダメージ値の計算。





(乱数*(攻撃力-敵防御力/2+1)/255+攻撃力-敵防御力/2)/4

最終ダメージ値が8ビット値(〜255)なので、掛け算・割り算の計算ロジック以外は8ビットで大丈夫だろうと思っていたのですが、足し算・引き算の計算ロジックで8ビット超えていました…。
何気にプレイヤー最強状態で「スライム」と戦った時、与ダメージ値「2」とか出るからなんだろうと思ってたら、これでした。
例えばプレイヤー攻撃値が「168」で、スライム防御が「3」、乱数が最大値で「255」だと、与ダメージ値計算式最後の「÷4」する前の結果が、「325」になり、8ビット値(÷256の余り)325-256=「69」。
最後、与ダメージ値計算結果は69÷4=「17」になります。
そのため乱数値次第で「2」が出たようです。
1_13_5.png
▲バグフィックスの一部

同じように敵が強すぎて、プレイヤーが弱い時の被ダメージ値計算も同じ状態になるので16ビット化。
まぁ、プレイヤーが弱々の時に、強敵と遭遇しないので、こちらは修正の必要ないかもと思いましたが念のため。

他にも、「ドラゴン」がやけに弱いと、思ってたら「ドラゴン」だけ初期体力が8ビット超えてる(350)…。
ドラゴンの体力が350-256=「94」になってたんですね…、そりゃ弱いわ…。
体力計算式をすべて16ビットに変更…。

上記理由で、ロジックだけ組み込んだ敵魔法の回復も16ビット化。
今作では使いませんので、こちらも不要かと思いましたが、念のため。

後は、プレイヤーが回復魔法かけた時の8ビット越え…。
最大体力「210」の時に、「回復2」をかけると回復値最大「100」で、計「310」になってしまう。
薬草だと回復値最大「27」なので超えない(210+27=237)のでとりあえずそっちは放置。

大変でした…。
こんなことなら詳細設計通り、全計算16ビットでしておけばよかった。
多少なりとも計算ロジックが短くなるので8ビットにしたのに、結果的にバグ取りで大きくなってしまった…。

最後は、なんと「レベルアップ時に魔法を習得しない」といった、致命的なバグでした。

開発時のテストデータで、最初から全魔法を習得させていた関係で、気付きませんでした。
修正。
1_13_1.png
1_13_2.png

1_13_3.png
1_13_4.png

これで「デバッグ」作業完了です!
共通マシン語エリアの空き容量がほぼなくなりました。
レベル最大時のステータス画面で、レベルアップ必要経験値(つぎ)の値がおかしいですが、ゲーム上不都合ないのでこのままいかせてください、修正できる容量がありません。

次回は、エンディングを組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月12日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第86回



3Dダンジョンロールプレイングゲーム 第86回目です。
今回は「ラスボス」戦闘終了後、イベントから抜け出し「ゲームオーバー」と「エンディング」処理を実行するスクリプト命令を組みます。
1_12_2.png




















命令意味記述動作
PDPlayerDethPDイベントを終了し死亡処理を実行する。
EGEndinGEGイベントを終了しエンディング処理を実行する。(BASICへ戻る。)

これでスクリプト24種です。

マシン語部。
1_12_1.png

BASIC部。
イベント戦闘フラグ(&HE026)を再利用して、流れをコントロールします。
1_10_5.png

これでメインプログラムの、一通りの処理は完成しました。
次回はバグ取り作業、「デバッグ」を行います。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月11日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第85回



3Dダンジョンロールプレイングゲーム 第85回目です。
「BE」スクリプトの続きです。

1_11_4.png

イベント戦闘時は、逃走できなくします。
単純に「戦闘メニュー」から「にげる」を失くします。
1_11_1.png
1_11_2.png

要するに勝つか負けるかとなります。
ただ、負けてもゲームオーバーにならずイベント継続となるので、所謂「負けイベント」を組むことが出来ます。

また、「戦闘メニュー」に「ステータス」がなく、戦闘中、自分の残体力が分からないので、「戦闘メニュー」に、最低限のステータス表示を実装します。
1_11_3.png

あ、イベント戦闘で負けてもイベントが継続すると言う事は、イベント中にゲームオーバーに出来ないと言う事だ…。
今作はラスボスに負けたら普通に死亡なので、それはまずい。

と、言う訳で、次回、新スクリプト命令「PD」(PlayerDeth)と、「EG」(EndinG)を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月10日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第84回



3Dダンジョンロールプレイングゲーム 第84回目です。
いよいよ、「ラスボス」用の「BE」スクリプトを組んでいきます。















命令意味記述動作
BEBattleEnemyBE,e1,m1,m2敵F1とイベント戦闘を開始する。戦闘に勝てばメッセージm1へ、敗れればm2へ。

…と、ここで気付きました。
敵と遭遇時、一旦BASICへ戻ると言う事は、PUSHでスタックした内容を一旦吐き出さないといけない。
尚且つ、BASICから復帰した際、吐き出した内容を再度スタックへ取り込み、イベントの続きから再スタートしないといけない!
おぉ、なかなか難題だ。
正直、BASICに戻らなければ単純なので、もっと簡単に考えていました。
1_10_1.png
1_10_2.png

あちこち色々、ロジックの変更。
イベント戦闘フラグ(&HE026)をフラグにして、処理の流れをコントロール。
1_10_3.png

イベント戦闘開始時に、スタック内容を吐き出し変数に保存してBASICへ。(2個)
1_10_5.png

戦闘終了後、変数を再度スタックに取り込み(PUSH)、イベント処理へ。
1_10_4.png

書くは簡単、組むは難し…。
共通ロジックの残り容量少ないので、予想以上に大変です。
共通ロジックに組み込みたいところを、一部、あえてBASIC部に組んでいます。

何とか、完成しました!
戦闘終了後、イベントの続きから実行されるようになりました。

次回は、BASIC間とのやり取りは完成したので、「BE」のそれ以外を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月09日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第83回



3Dダンジョンロールプレイングゲーム 第83回目です。
前回、敵の特殊攻撃で状態異常「毒」を受けるようになったので、状態異常効果を組んでいきます。

1_9_1.png

「どく」状態では、1歩歩く度に1のダメージを受けます。
毒を受けている事に気付かないといけないので、歩く度にメッセージエリアを赤くフラッシュさせ、ダメージを受けている事を知らせます。
1_9_2.png

当然体力が「0」になれば、死亡となります。

うーん、1歩1ダメージだと多いかな?
後日バランス調整しますね。

因みに、毒を受けていても戦闘時は特に影響ありません。
戦闘終了で毒がクリアされることはありません。
また、「宿屋」でもクリアされません。
アイテム「どくけしそう」か、魔法「どくけし」のみで、解毒可能です。

今作では関係ありませんが、他の状態異常を紹介。
「睡眠」は戦闘中のみ影響ありで、眠っている間行動できません。
放っておいても数ターン後に目覚めます。
戦闘終了と同時に目覚めます。

あと、パーティ制の場合になりますが、「石化」は探索・戦闘両方に影響します。
パーティメンバーに解除してもらうまで何もできません。

他にも、「麻痺」や「恐慌」、「混乱」、「呪い」、「魔封」など沢山あります。
フラッシュの色で被状態異常を判断します。

これで「状態異常効果」処理完了です。

さて、戦闘が完成したので、次回はスクリプトの残り「BE」イベント戦闘を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月08日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第82.5回



3Dダンジョンロールプレイングゲーム 第82.5回目です。
.5なので、バグです。

今作での毒の効果は、ダンジョン探索時、歩く毎に「メッセージエリアが赤く点滅し」体力が減っていき、最後、「死亡」となります。
…と言う事は、

・画面の点滅効果(敵から攻撃を受けた時の白点滅と同じロジック)
・体力「0」時のプレイヤー死亡

この2処理は、戦闘中に必要であったため、戦闘ロジックに組んであります。
しかし、上記により探索中にも必要になったため、共通ロジックに組んで、探索、戦闘どちらからでも飛べるようにしないといけません。
と言う事で、ロジックの大幅な組み換えを行いました。
1_8_1.png

各ロジック、あちこちに点在しているので、戦闘ロジックに穴ぼこが空いてしまいました。
近いバイト数のサブルーチンを移動させ、空いた場所を詰めます。

うーん、今回のロジック移動で、共通ロジックの残り少ない容量を更に圧迫します。
無駄の無いよう、詰めて詰めて組んでいきます。

なかなか大変な作業となりました。
予想以上に時間がかかりましたが、何とか無駄なく詰められました…。

posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月07日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第82回



3Dダンジョンロールプレイングゲーム 第82回目です。
敵の特殊攻撃を組んでいきます。

1_7_2.png

特殊攻撃とは、敵から攻撃を食らった後で、付随的に受ける攻撃の事で、「毒」や「眠る」等の状態異常を引き起こします。
今作は「どく」のみです。
こちらも1/16の確率で設計していたのですが、1/8に変更。
1_7_1.png

これで、アイテム「どくけしやく」と、魔法「どくけし」に存在意義が出来る。

次回は、特殊攻撃の効果を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月06日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第81回



3Dダンジョンロールプレイングゲーム 第81回目です。
敵の魔法処理を組んでいきます。

1_6_5.png
1_6_2.png

1/16の確率で魔法唱えるよう設計していたのですが、余りにも唱えない…。
仕方ないので1/8に確率変更。
1_6_1.png

敵が魔法を習得していたら、魔法を唱えます。
今作は「攻撃」の魔法しか設定していませんが、「回復」の魔法もロジックは組んでおきます。
「回復」魔法ロジック。
1_6_3.png
「攻撃」魔法ロジック。
1_6_4.png
プレイヤー側と同じく、被ダメージ値を算出したら攻撃ロジックへ。

効果値は、プレイヤー側と同じです。

次回は、「特殊攻撃」を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月05日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第80.5回



3Dダンジョンロールプレイングゲーム 第80.5回目です。
.5なのでバグです。
…と、いうか完全に失念していました。

敵の「魔法」処理を組もうとした時、「敵データの中に魔法データがない!」と、初めて気付きました。
本気で敵データに魔法情報を組み込むのをすっかり忘れていました。
1_5_2.png
偶然ですが、私が今作で選んだ「ドラクエ1」の敵、魔法をほとんど使わない敵でした。
魔力が小さい…。

とりあえず、敵データに使用魔法と、特殊攻撃の2バイト追加しました。
1_5_1.png
1バイト目が習得魔法、2バイト目が特殊能力(毒)です。
特殊能力は、攻撃受けた後に1/16の確率で状態異常を受けます。
今作では毒になります。

データ追加を受け、敵データ検索サブルーチン等、影響を受けるロジックを修正。

次回は、いよいよ敵ターンの最後、「魔法」処理を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年01月04日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第80回



3Dダンジョンロールプレイングゲーム 第80回目です。
プレイヤーの「死亡」処理を組んでいきます。

1_4_2.png

前回の、敵からの被ダメージで体力が「0」になった時、「死亡」となります。
探索中、どこでもセーブできる仕様なので、ドラクエで言う「復活の教会」は不要と考えます。
ですので、死亡したらゲーム再スタートにします。
1_4_1.png

「死亡」したらBASICに戻り、データ読込→タイトルとなります。
1_4_3.png

次回は、敵の「まほう」処理を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード