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

2023年11月15日

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



3Dダンジョンロールプレイングゲーム 第45回目です。

さて、今回はイベントの配置と、進行を組んでいきます。
要するに敵が出ない状態でエンディングまで進めるようにします。

今回の3Dロールプレイングゲームは、マップが1面でイベントも6種類しかありませんので、簡単です。

イベントに座標と、設置型か接触型かのフラグと、発生イベントb持たせておいて、イベント発生した時、そのイベントbフメッセージが表示される仕組みとします。
イベント部分の変数表です。
11_14_1.png

イベントの配置と座標です。
10_5_1.png












































イベント名初期座標移動後座標タイプ
1ゲート(14,1)(0,0)接触
2宝箱(0,0)(1,1)接触
3宿屋(20,16)接触
4武器屋(20,18)接触
5道具屋(20,17)接触
6ボス戦闘(19,9)接触


可能なら、3D画面表示の際、これらのイベント画像(宝箱など)を表示できればいいのですが、容量節約のため、とりあえず表示はナシのメッセージのみとします。
11_15_2.png
(最後、余裕があれば表示するようにします。)

とりあえずメッセージデータは全て組みました。
しかし、このままでは「ゲート」の鍵を開けられても、イベントがその座標に残っているので、先に進めません。
その対策として、イベントが終了したらイベントを移動させる必要があります。

というわけで、次回はマップ移動時発生イベントを組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月14日

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



3Dダンジョンロールプレイングゲーム 第44回目です。
さて、不具合もとりあえず解消したので製作再開します。
ただ、根本的な原因が解消できていないので、いつ再現するかとビクビクしています…。

今回はイベントの発生方法について説明します。

イベントの発生と一言で言っても、大きく2種類あります。

1つ目は「城」や、「街」、「落とし穴」や、「特定の場所」等、その座標に乗った時に発動する「設置型」。







11_10_1.png
←この状態から、上に移動して家の上に乗るとイベントが発生11_10_2.png
街のマップへ移動するイベントが発生

2つ目は「町人」や「ドア」、「宝箱」等、目の前にあるイベントに接触した時に発動する「接触型」。







11_10_3.png
←この状態から、上の障害物に接触(上に移動)するとイベントが発生11_10_3.png
障害物なので移動はできませんが、木から何か落ちてくるなどのイベントを発生

それ以外にも、地形イベント、マップ移動時発生イベント、アイテム使用時発生イベントなどあります。
因みに、
・地形イベントは、「毒沼」等プレイヤーがいる地形により発生するイベントです。
・マップ移動時発生イベントは、マップ移動を起点として発生するイベントです。
・アイテム使用時発生イベントは、アイテム使用を起点とするイベントです。

今作では関係ありませんが、結構大変なのが、2D「ドラクエ」タイプの移動する町人。
町人が移動している時に接触した時の判定が結構面倒。
まぁ、説明する機会があれば、その時にでも。

次回は、イベントを配置、作成していきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月13日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第43回目です。
メモリマップ改訂したので掲載しておきます。
(赤字が前回からの変更箇所)
各種データエリアを&HE800→&H9B00へ。
マシン語エリアを少し縮小し&HC000~&HDFFF→&HD9FFに。
メッセージエリアを&HE100→&HDA00へ。
今のところ、変数エリア(&HE000~&HE100)は壊れないようです。
































































アドレスデータ名備考
9B00〜9CB4アイテムデータエリア23種類×19バイト=437バイト
9D00〜9D4D魔法データエリア6種類×13バイト=78バイト
9E00〜9EAF敵データエリア8種類×22バイト=176バイト
9F00〜9FE7レベルアップデータエリア29レベル×8バイト=232バイト
A000〜A1B82Dマップデータ21マス×21マス=441バイト
A200〜A7FF壁キャラクタデータ15パターン、1,536バイト
A800〜ABFFBGMデータ3曲?(ダンジョン、店屋、戦闘)1,024バイト
AC00〜AFFFシステムメッセージデータエリア1,024バイト
B000〜B7FFフォントキャラクタデータ256キャラ×縦8バイト=2,048バイト
B800〜BFFFフォントカラーデータ256キャラ×縦8バイト=2,048バイト
C000〜D9FFマシン語エリア6,655バイト
DA00〜DFFFメッセージデータエリア1,536バイト
E000〜E0FF変数エリア256バイト
EF00〜EFFFメニュー表示用ワークエリア256バイト

本気でカツカツですね!

折角広げたマシン語エリアが、また狭くなったのが痛いですね…。
メッセージエリアも文字列はちゃんと保存されるのに、制御bフ「0」、「1」、「2」が壊れてしまい、発生して欲しいイベントと、全く異なるイベントが発生してしまったり、同じ接触イベントなのに1回目と2回目で違うイベントが発生したりする。
壊れる領域と壊れない領域の差って何なんだろう…?
因みにこれも&HE100→&HDA00へ移動したら直りました…。

また、&HE500付近を書き換えるとフロッピーディスクが壊れるようです。

DISK-BASICの詳細記事何処かにないかなぁ…。
バカなのでテクハンだけじゃ解らないです…。

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

2023年11月12日

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



3Dダンジョンロールプレイングゲーム 第42回目です。

ネット上のMSXのフロッピーディスク関連についていろいろ調べましたが、解りませんでした。
そもそも、フロッピーディスク関連の記事が少ない。

因みに仮データ、保存先アドレスを元に戻して(&HE800→&HE000)登録すると、ちゃんと登録されました!
11_13_3.png

そういえば、DISK-BASICだとデバイス用のメモリを使うから、その分使えるメモリが少なくなると覚えています。

11_13_1.png
MSX-BASIC時のフリーメモリ

11_13_2.png
DISK-BASIC時のフリーメモリ 5kバイトも減ってる…!

でも、&HE800当たりのメモリを使うんだとしても、アイテム名だけ正常に保存されるのはなぜ?
全部壊れていれば、悩まずに済んだのに…。
11_12_2.png
以前書いた通り、私にフロッピーディスク関連の知識は、全くありません。(2023年10月10日記事参照「マシン語からのファイル制御」)

このまま、調査続けて無駄に時間を費やすよりも、保存先アドレス変更した方が早いな…。
&HE000台、どこまで正常に使えるんだろう…。
いっそのこと、大きくBASIC部が増えることはないだろうから、各種データを&H9800に移動させるか…。
BASIC部は、あと戦闘開始(敵データの読込と、戦闘ロジック呼び出し)、死亡処理、エンディングスタートくらいかな。
完成時には初期値書き込み部分は削除されるから、容量は減ると思われます。

とりあえず、解決に時間掛かりそうなので各種データ&H9800に移動の方向で進めます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月11日

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



3Dダンジョンロールプレイングゲーム 第41.5回目です。
前回の不具合の続きです。

原因不明なので、とりあえずデータが正しく登録されているか確認する事に。
11_12_7.png
保存された「3DRPG.ITM」をBLOADし、メモリに書き込まれた値を確認するための簡単なBASICプログラムを組んで検証してみました。

11_12_2.png
アイテム名の後ろ2バイト(0〜65535)が金額なのですが、2バイト目以降全て「0」になってる!
(でも、「エリクサー」の&HFFはちゃんと残ってる!?)
うーん、結果「3DRPG.ITM」は壊れてる…。

では、どこで壊れたのか?
「ITMSET.BAS」起動後の時点ではどうか?
結果は同じ、BSAVEした後のメモリの時点でおかしい…。

えー…、なんで?
何度かプログラムを変更して試行錯誤を繰り返しましたが、結果は同じ。
まぁ、そもそもプログラムは変更していないから、動作は正常なはず…。

念のためにと、メモリに書き込んだ直後、BSAVE前でプログラムを終了し、その時点のメモリを確認する事に。
11_12_3.png
実行。

11_12_4.png
あ、正常だ。
当然ですが、メモリ内の表示プログラムは同じものを使っています。

BSAVE実行すると、アイテム名以降のデータが壊れる事が分かりました。
BSAVEが悪さしていることは分かりましたが、アイテム名部分はちゃんと保存されて、それ以降だけ壊れる意味が分からない…。
そんな事ある?

まさか、こんなことで躓くとは…。
どなたか知識ある方、ご教授ください!!
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月10日

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



3Dダンジョンロールプレイングゲーム 第41回目です。
原因不明の問題が発生しました!
他カテゴリの記事で時間稼いで、少しでも制作先に進めようと画策していたのですが、完全に予定外です…。

プログラムの改修が完了したので、新たなメモリマップに則って各種(仮)データの登録を行い、登録出来たか確認のためにメインプログラム(3DRPG.BAS)を起動したところ、「File Not Found in 740」と出ました!?
「は?」と思い、FILESを実行したところ、「いかぎ」と言うファイルが作成されており、「FILE1.SAV」と「3DRPG2.FNT」がなくなっている事が判明。
11_12_5.png
「いかぎ」…、アイテムデータに(仮)登録した「あおいかぎ」の事か!?

ファイルが壊れたので、慌てて取ってあったイメージディスクのバックアップから戻して、再び(仮)データの登録を行ったが、現象は再現せず…。

「何だったんだろう?」と、思いながらもテストプレイを続けていると、「あれ!?」。
「店屋のアイテムの金額がおかしい!?」事に今気づいた!
11_12_6.png

慌てて、アイテムデータ登録用のBASICプログラム「ITMSET.BAS」を確認。
11_12_1.png
特に問題なし。
保存先のアドレスくらいしか変更していません。(&HE000→&HE800)
そもそも、プログラムは変更していないから、正常に動作することは確認済み。
んー?
何がおかしいんだろう?

次から次へと問題が発生するなぁ…。
ブログでやってなければ、既に断念してたかも…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月05日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第40回目です。

・変数名の書換。
・各種データ領域変更。
・システムメッセージのデータファイル化。
・それらに伴うメモリマップの再編成。

やり切りました!
あー、大変だった…。
でも、結構早かった。
なかなか順調に進んで、一通りのデバッグ処理完了です。

しかし、今回の作業は、あくまでデバッグ。
作業量は膨大だったけど、ゲームの製作進捗は全く進んでいない…。
マイナスがゼロになっただけです。
なんか、空しい…。

では、次回から開発再開します。
次回は、イベントを作成していきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月04日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第39回目です。
メモリマップ改訂したので掲載しておきます。
(赤字が前回からの変更箇所)































































アドレスデータ名備考
A000〜A1B82Dマップデータ21マス×21マス=441バイト
A200〜A7FF壁キャラクタデータ15パターン、1,536バイト
A800〜ABFFBGMデータ3曲?(ダンジョン、店屋、戦闘)1,024バイト
AC00〜AFFFシステムメッセージデータエリア1,024バイト
B000〜B7FFフォントキャラクタデータ256キャラ×縦8バイト=2,048バイト
B800〜BFFFフォントカラーデータ256キャラ×縦8バイト=2,048バイト
C000〜DFFFマシン語エリア8,192バイト
E000〜E0FF変数エリア256バイト
E100〜E9FFメッセージデータエリア2,304バイト
EA00〜EBB4アイテムデータエリア23種類×19バイト=437バイト
EC00〜EC4D魔法データエリア6種類×13バイト=78バイト
ED00〜EDAF敵データエリア8種類×22バイト=176バイト
EE00〜EEE7レベルアップデータエリア29レベル×8バイト=232バイト
EF00〜EFFFメニュー表示用ワークエリア256バイト


各種データエリアの領域は、まだ変動します。
ただ、&HE000~&HEFFFを超えることはないと思うので、暫定でこれで行きます。

さぁ、マシン語エリアが&HDFFFまでに収まるかが最大の課題です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月03日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム 第38回目です。

今作で使用するスクリプト命令一覧です。
以前に掲載したものと、パラメータに若干の変更がありますので、ご了承願います。







































































































































命令意味記述動作
NXNeXtNX次のメッセージへ。
FNFlagNextFN,nフラグをn値に設定し、イベントを継続。
FEFlagEndFE,nフラグをn値に設定し、イベントを終了。
FSFlagSetFS,e,nイベントeのフラグをn値に設定する。
endイベント終了。
MSMessageSpeedメッセージ表示速度をn値に設定。(初期値:40)
YNYes/NoYN,y1,x1,m1,m2,m3座標(x1,y1)に「はい/いいえ」の選択ウィンドウを開く。「はい」が選択されたら、メッセージm1、「いいえ」が選択されたら、メッセージm2、キャンセルが選択されたら、メッセージm3へ。
WOWindowOpenWO,y1,x1,x2,y2,n座標(x1,y1)にメッセージ欄幅x2、高さy2のウィンドウを開く。nで枠線の有無設定。(0:有 1:無)
SWSelectWindowSW,y1,x1,x2,y2,n座標(x1,y1)にメッセージ欄幅x2、高さy2の選択ウィンドウを開く。選択肢数はn。幅は、選択肢最大文字数+2。選択肢数が高さを超えていると、選択肢上下スクロール。
JPJumPJP,nメッセージnへ。
CFCheckFlagCF,e,m0,m1,m2,m3,…イベントeのフラグが0ならメッセージm0、1ならメッセージm1、2ならメッセージm2...へ。
ESEventStartES,eイベントeを実行する。
SSSetSelectSS,eイベントeのフラグに選択ウィンドウで選択された項目数を設定する。
ISItemShopIS,y1,x1,n,i1,i2,i3…店屋。座標(x1,y1)にn種類のアイテムと金額の選択ウィンドウを開き、アイテムi1、i2、i3…を購入する。若しくは所持品と売却額の選択ウィンドウを開き、売却する。
CICheckItemCI,i,m1アイテムiを所持していなければ、メッセージm1へ。
GIGetItemGI,i,m1アイテムiを所持する。これ以上持てなければメッセージm1へ。
LILoseItemLI,iアイテムiを所持品から消失させる。所持していなければ何も起こらない。
ININnIN,g,m1宿屋、所持金額をg減らし、HP・MPを全回復させる。所持金額が足らなければメッセージm1へ。
BEBattleEnemyBE,e,m1敵eとイベント戦闘を開始する。負ければメッセージm1へ。
DWDefaultWindowDW標準(デフォルト)メッセージウィンドウを表示する。
GPGoldPrintGP所持金を表示する。

計21種類の命令でした。
必要かと思い、今作では使わない命令まで組んでしまいました。(SW、CF、ES、SS等)
2D「ドラクエ」タイプのロールプレイングゲームだと、これにイベント移動の命令などが必要になるので、30個強になります。
このスクリプトが出来てるから、比較的楽に作成できそう。

下表はメッセージ中に組み込む制御コードです。






















組込文字キャラクタコード動作
^&H5E改行。
_&H5F入力待ち。
|&H7Cメッセージ終了。(入力待ち無)

計3種類の制御コードでした。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月02日

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



3Dダンジョンロールプレイングゲーム 第37回目です。
今回はメモリ節約のために、プログラム中のシステムメッセージを一纏めにして別ファイルにします。

システムメッセージのあった領域分が空くので、その領域をプログラムで使おうという取り組みです。
意外とシステムメッセージデータは多く、それだけで最終的にはかなりの容量を使ってしまいます。
現状、メモリマップのBGMデータの後ろが空いているので、そこにシステムメッセージデータエリアを作り格納します。

あちこちに散らばっているシステムメッセージデータを集めて「3DRPGSYS.MES」ファイルを作成します。
11_2_1.png
11_2_2.png
11_2_3.png
11_2_4.png
結構なデータ量散らばっています。
これ、戦闘部分になると格段に増えますので、このタイミングに思い立って良かった…。

システムメッセージデータを削除した領域と領域の間に残ったプログラムを可能な限り片寄し、大きな領域が確保できました。
11_2_5.png
結構な領域が空きました。
イベント発生判定ロジックくらいなら、この領域内で収まりそう。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発
検索
<< 2024年12月 >>
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 31        
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード