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

2023年12月17日

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



3Dダンジョンロールプレイングゲーム 第68回目です。
今回は、戦闘の前処理を組んでいきます。

12_17_1.png
戦闘中である事を示す「戦闘中フラグ」を立て、遭遇した敵のパラメータをワークに納めます。
この「戦闘中フラグ」を参照することで、魔法の「戻る」や「攻撃」の使用可否が分かれます。

そして、武具・防具を含めた、攻撃力・防御力・素早さの算出。
これは、ステータス表示時にサブルーチンを作りましたので、それをコールします。
11_16_4.png

そして、攻撃順序を決めるために敵の先制攻撃判定をします。
12_17_2.png
これは、以前に組んだ敵先制攻撃判定をコール。






(素早さ*乱数(0〜255))<(敵防御力*乱数(0〜63))敵の先制攻撃

12_15_4.png

敵の先制攻撃なら、「敵のターン」処理へ飛ばします。
12_17_3.png
12_17_4.png

次回は、「戦闘メニュー」を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月16日

細かく修正N

4_19_1.png

リンク」にTMS9918風簡易ペイントツール「piroPAINT_9918」を追加。

ゲーム制作」の「3Dダンジョンロールプレイングゲーム」で前後回へのリンク切れが、また複数見付かったので修正。

2023年10月5日記事「【ゲーム制作】3Dダンジョンロールプレイングゲーム 第22回」の記事修正。
・計算式を判断可能なものに修正。
・レベルアップテーブルのレベル2必要経験値0→7に修正。
・計算式の出展元を掲載。

それ以外は、画像の貼り直しや、記事の誤記の修正程度です。

2023年12月15日

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



3Dダンジョンロールプレイングゲーム 第67回目です。
今回は、戦闘の前準備として各々計算式を組んでいきます。
計算式出展:『GCGX』
https://gcgx.games/dq1/damage.html


まず、プレイヤー→敵の与ダメージ値計算。





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

12_15_1.png
必要なので16ビット割り算ルーチンを用意。
12_15_2.png

次に、敵→プレイヤーの被ダメージ値計算。










条件計算式
敵攻撃力-防御力/2≧敵攻撃力/2+1(乱数*(敵攻撃力-防御力/2+1)/255+敵攻撃力-防御力/2)/4

敵攻撃力-防御力/2<0

または

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

12_15_3.png

次に、敵の先制攻撃判定計算。
敵が先制攻撃ならAレジスタに1。






(素早さ*乱数(0〜255))<(敵防御力*乱数(0〜63))敵の先制攻撃

12_15_4.png

次にプレイヤーの逃走成功判定。
逃走失敗ならAレジスタに1。





















敵種計算式
スライム、シルバーウルフ、ミミック、ワイト(素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜63))
スケルトン(素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜94))
ゴースト(素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜127))
マミー、ドラゴン(素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜255))

12_15_5.png

最後に敵の逃走判定。
逃走するならAレジスタに1。






攻撃力(武具除く)/2≧敵攻撃力且つ、逃走確立1/4

12_15_6.png

一応これだけの計算式が必要になります。
各計算ルーチンで、ループし計算結果を算出するBASICプログラムを組んで結果を検証。
12_15_7.png
想定範囲内の値しか出ないことを確認。
計算ロジック完成です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月14日

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



3Dダンジョンロールプレイングゲーム 第66回目です。
BGM系で、もう一つやらなければならないことがあります。

そう、「店屋」と「宿屋」のBGMです。

「店屋」と「宿屋」のロジックに直接BGM切り替えロジック組み込もうかと思ったのですが、スクリプトでBGM切り替え命令作った方が汎用性があるので、「BM」命令を用意します。
12_14_1.png















命令意味記述動作
BMBgMBM,bBGMCのBGMを演奏する。(b=0でBGM停止)

スクリプト種、計22種類になりました。

12_14_2.png
メッセージデータの「武器屋」、「道具屋」、「宿屋」の開始時に、BGM3「お店」に切り替えを追加。
店を出る際に、BGM1「探索」に切り替えを追加。
問題なしです。

これで、簡単にイベント中にBGM切り替えができるようになりました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月13日

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



3Dダンジョンロールプレイングゲーム 第65回目です。
前回、「探索」→「戦闘」→「探索」→「戦闘」→…の切り替えテストを行いました。
そこで気付いたのですが…、

BGM忘れてました!
普段、パソコンの音を鳴らさないので、BGMがどうなってるか全く気にしていませんでした。

敵と遭遇しフェードアウトする前に「探索」BGMを停止し、敵の表示時に「戦闘」BGMを開始する必要があります。

「戦闘」ロジック進めたいけど、これ今直しておかないと後でバグ取りロジック組みまくることになりそうなので、ここでやっておきます。
これは常駐ロジック(&HC000~&HD9FF)の方に入れる必要があるので、以前に作った使わないフェードアウトCとDを削除し、そこに組み込みます。

まず、走査線割込み内でBGM切り替えロジックを組みます。
12_13_3.png
(元々は、そのままBGM1 PLAYに進んでいた。)
12_13_4.png
変数「演奏予約BGMav(&HE023)にBGMb設定しておくと、走査線割り込みが掛かった時に、このロジックでアドレスを設定し演奏が始まります。
演奏開始されると変数「演奏予約BGMavには&HFFがセットされます。
因みに変数「演奏予約BGMavに「0」を代入すると演奏停止になります。























BGM曲名使用場所
1探索ダンジョン探索中
2戦闘戦闘中
3お店宿屋、武器屋、道具屋内

12_13_1.png
(元プログラム)
現状、走査線割込み開始ロジックから直接メインプログラムに飛んでいるのですが、ここは分割し、走査線割込み開始部分だけをサブルーチン化します。
12_13_2.png

そしてBASICからマシン語コール(695行)する着前に、割込み開始サブルーチンをコールするようにします。(690行)
12_13_6.png

BASIC部からマシン語コール先を設定する時(745行等)に、併せてBGM番号を設定するようにします。
そして、割込み開始サブルーチンを通るように690行へ制御を飛ばします。(750行等)

これで、「探索」と「戦闘」のBGM切り替えは問題なしです。
因みにBGMは、容量の都合で非常に単純・簡単なものになっております。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月12日

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



3Dダンジョンロールプレイングゲーム 第64回目です。
戦闘時に専用マシン語ファイルを読み込む方式にしたので、「探索」→「戦闘」→「探索」→「戦闘」→…の一連の処理が正常に動作するか確認します。
これが上手くいかないと、メモリ不足で手詰まりなので…。
ついでに敵遭遇を利用して、敵データがちゃんと登録されているか確認します。

読み込んだ戦闘ロジックは、キー入力待ちと戦闘終了処理のみにしています。
12_9_5.png


問題なさそうですね。

次回から、いよいよ戦闘メニューを組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月11日

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



3Dダンジョンロールプレイングゲーム 第63回目です。
最近根詰めて制作してきましたので、ちょっと息抜きにフェードアウトを数種類作ってみます。

@まずは、宿屋の睡眠。(横も可)
12_10_2.png
意識が途切れるイメージで。

A斜め列消去。(上下左右可)
12_10_3.png
爽快感があります。

Bドット消去。
12_10_4.png
トラブルがあった時のイメージで。
これ乱数のみで削除していると、最初は早いのですが削除できるFONTが少なくなる後半が異様に遅い。
(乱数ロジックが偏ってるのかな?)
なので、後半用に一工夫してあります。

C列消去。(上下左右可)
12_10_5.png
もっとも単純なフェードアウト効果です。

D多段列消去(横も可)
12_10_6.png
縦が12行なので、4分割すると1段3行。
画面消去が早すぎて、使い道ないかも…。(32列÷4分割=8列の横なら何とか…。)


FONT単位でのフェードアウトだと、すぐに消えてしまう事もあり、あまり種類多くは作れないかな。
斜め列消去を中心十字線から4方向にスタートして、風車消去などもできますが、メモリが足りないのであまり複雑なものは作れません。(ドラクエの敵遭遇でやってたような…。)

とりあえずフェードアウトが必要なイベントへの割り当ては、
宿屋…@(縦、瞼を閉じるように見えるから)
「戻る」魔法…A(左→右、素早く移動しているように見えるから)
敵遭遇…B(何か異常が起こったように見えるから)
にします。
CとD使わないけど、ロジックせっかく組んだので残しておきます。
スクリプトで「FO」あたり作っても面白いかも。
12_10_1.png

他にもメジャーなところではホワイト/ブラックアウトがありますが、当然MSX1では不可能です。
本当はフェードインもやりたいのですが、メモリが足りないので我慢。
(フェードインはメモリ上に画面イメージを書き込み、それを徐々に画面に表示するため、画面イメージ用に768バイト(32×24)の空きメモリが必要。)
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月10日

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



3Dダンジョンロールプレイングゲーム 第62回目です。
前回設計した内容に則って、「敵との遭遇」ロジックを組んでいきます。

12_8_2.png
12_9_1.png
16エリアそれぞれのエリアに出現する敵データを設定。

移動した後に、エンカウント(遭遇)判定をします。(その場での方向転換ではエンカウントしない。)
エンカウント率はとりあえず3/16(48/256)にします。
12_9_2.png
(自機Y座標÷5)×4+(自機X座標÷5)でエリア算出するために、掛け算・割り算サブルーチン追加。

遭遇したら、フェードアウトしBASICに戻ります。
敵FONTデータ(3DRPGe*.FNT)を読込み、FONT設定したらマシン語の戦闘ロジック(3DRPG.BI3)を読込み、戦闘開始ロジックを呼び出します。
12_9_3.png

そこで敵グラフィックと「『xxx』があらわれた!」のメッセージを表示します。
12_9_4.png
12_9_5.png

戦闘終了時に再度BASICに戻り、マップFONTを設定し直し「探索」マシン語ロジックに戻ります。
12_9_6.png

次回、戦闘ロジックを組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月09日

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



3Dダンジョンロールプレイングゲーム 第61回目です。
「戦闘」ロジックを組んでいきます。

まずは、敵との遭遇の考え方です。
出現する敵の設定方式には、マップを小さく複数枚用意し、それぞれのマップに出現する敵を設定するマップ方式。
大きなマップをエリア分けし、各エリアに出現する敵種を設定する、エリア方式などがあります。

今作はマップが1枚しかないので、エリア方式でいきます。
縦・横それぞれを5で割り、4×4=16分割します。
(私のハンドアセンブルのやり方だと、8の倍数の方がメモリに無駄がないので…。)
12_8_1.png

そして、各エリアにどの敵が出るか設定。
12_8_2.png

詳細設計で、敵が複数で出現する設計でしたが、よくよく考えたら、攻撃力などドラクエ1の設定数値を使っているので、敵が複数出現すると、バランスやり直しになってしまう為、今作は、敵単体出現に仕様変更します。

次回、敵との遭遇までを組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年12月08日

MSX1のお絵描きツール(for Windows)

以前にも書いた通り、MSX1のSCREEN2は非常に独特な仕様になっており、横8ドット毎2色のグラフィックモードとなります。
「BMP to MSX」でコンバートした画像を編集したいのですが、上記仕様が邪魔をしてWindowsのお描きツールでは上手く編集できません。

そこでダメ元でMSX1用のお絵描きツールがないか探しました。
なんと、ありました!!

TMS9918風簡易ペイントツール「piroPAINT 9918」です
12_8_4.png

MSX1専用ではありませんが、TMS9918系VDPにおける描画特性(俗に言う「色漏れ」)を見事に再現したWindowsソフトです。
少し操作に特徴がありますが、色漏れの再現は完璧です。

「BMP to MSX」でコンバートした画像を一度「BMP」ファイルで出力し、それを「piroPAINT 9918」で編集。
編集画像を再度「BMP to MSX」でコンバートする事で、そのまま「SC2」にコンバートできます。
12_7_1.png
12_8_3.png

なんかもう有志の皆さんの補助的なツールが豊富で、至れり尽くせり状態ですね。
もの凄い痒いとこまで手が届く的な?
凄く助かります。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記
検索
<< 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コード