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

2023年10月05日

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





3Dダンジョンロールプレイングゲーム第22回目です。
そういえば「詳細設計」と「シナリオ」を載せるのを忘れてました。

詳細設計とは、その名の通り詳細を決める事です。
具体的に言うと、敵を攻撃した時のダメージ値の計算式や、攻撃ミスの確率、会心の一撃の確率など、ゲームの根幹に係る設計の事です。
他には、
・アイテム毎の攻撃力や防御力、値段
・プレイヤーのレベルアップ時の能力向上値、魔法習得
・アイテム所持数(32個)、魔法習得数(6種)
・敵のパラメータ
など、多岐に渡ります。
これを決めておかないと、変数をいくつ確保するかなどが、決まりません。

ほぼ全てのパラメータ値を、今回は「ドラクエT」と同じで行きます。
計算式出展:『GCGX』
https://gcgx.games/dq1/damage.html

「攻撃力」=「ちから」、「防御力」=「素早さ÷2」で計算します。
あと、「ドラクエT」に兜はないので、盾の防御力と金額を半分にし、同値で兜を用意しました。

ダメージ計算




















プレイヤー→敵ダメージ値 (乱数*(攻撃力-敵防御力/2+1)/255+攻撃力-敵防御力/2)/4
敵→プレイヤーダメージ値

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

若しくは

乱数*(敵攻撃力/2+1)/255+2
敵の先制攻撃率(素早さ*乱数(0〜255))<(敵防御力*乱数(0〜63))
プレイヤー逃走判定(素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜63))
敵逃走判定

攻撃力(武具除く)/2≧敵攻撃力

且つ

逃走確立1/4
会心の一撃率確率1/32、攻撃力-(攻撃力/2*乱数)/256


レベルアップ値


























































































































































































































































































レベル体 力魔 力攻撃力防御力素早さ必要経験習得魔法
11504240
22205247
324573623回復1
4311674847攻撃1
5352012510110
6382416510220
7402618817450毒消
84629221020800
950363011221300
1054403515312000
1162504017352900
1263584820404000
1370645224485500戻る
1478706027557500
15867268326410000
16929572357013000
1710010072397817000回復2
1811510885428421000
1913011587438625000攻撃2
2013812892448829000
2114913595459033000
2215814697459037000
2316515399479441000
24170161103499845000
251741611135010049000
261801681175210553000
271891751255310757000
281951801305711561000
292001901356012065000
302102001406513065535


次に武器。(アイテム区分「1」)































名前攻撃力値段
木の棒210
石の剣460
銅の剣10180
鉄の剣15560
銀の剣201500
勇者の剣289800


次に盾。(アイテム区分「2」)



















名前防御力値段
木の盾245
鉄の盾5400
勇者の盾107400


次に鎧。(アイテム区分「3」)































名前防御力値段
布の服220
皮の鎧470
銅の鎧10300
鉄の鎧151000
銀の鎧203000
勇者の鎧287700


次に兜。(アイテム区分「4」)



















名前防御力値段
皮の帽子245
鉄の兜5400
勇者の兜107400


次に道具。(アイテム区分「9」)



























名前効果値段
薬草体力23〜30回復24
毒消し草毒状態回復100
エリクサー体力・魔力・状態改善回復10000
赤い鍵宝箱を開ける鍵7800
青い鍵ゲートを開ける鍵


次に魔法。































名前効果消費魔力
回復1体力10〜17回復4
攻撃1敵に5〜12ダメージ2
戻るスタート位置に戻る8
回復2体力58〜100回復10
毒消毒状態回復6
攻撃2敵に58〜65ダメージ5


最後に敵。




















































































名前体力魔力攻撃力防御力素早さ経験値お金
スライム3053212
おおさそり150183541625
リカント3404030214060
鎧の騎士55670714578150
悪魔の騎士794949253130165
死神の騎士95141059957172152
ストーンマン16001004040155148
ドラゴン35001301509000


次にシナリオです。
今回はマップが小さいので、シナリオはほぼないに等しいです。
シナリオとは、要するに謎解きのようなものです。
何もないのも寂しいので、サンプルに一つ宝箱を用意します。
イベント数は6個。




















1武器屋
2道具屋
3宿屋
4宝箱
5ゲート
6ボス

10_5_1.png
ルートはこうです。
・道具屋さんに赤い鍵が売られている。(高額)
・宝箱がある。(ゲートで赤い鍵を使うまでは「何かある気がする。」で宝箱発見できず。)
・宝箱は赤い鍵で開く。
・宝箱の中身は青い鍵だった。
・道中、鍵のかかったゲートがある。(赤い鍵を使うと「遠くで何かの仕掛けが動いたような音がする…。」となり、宝箱が見付かるようになる。)
・ゲートは青い鍵で開く。

これを最初に考えておかないと、必要なアイテムや、イベントの配置場所が決まらないので最初に決めます。
ただ、最初は絶対に必要なイベントと、アイテムのみ決めておいて、後はそれに付属する形で決めていけばいいです。

以上で詳細設計とシナリオとなります。
実際はゲームに組み込んでテストプレイしながら値を調整していきますので、そこまでガチガチに決めておく必要はありません。
今回はすでにあるゲームの値をそのまま使っているので、調整も少なくて済むかと思います。

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

2023年10月04日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第21回目です。
前回、製作状況の進捗確認しました。
現在、BGM鳴らしながらマップ移動して、システムメニュー開いてメッセージを表示するまではできました。
後は大きく「敵との戦闘」、「プレイヤー関係」、「スクリプトの残り」の製作となります。

さて、ここで問題が発生しました。
プログラム見て気付かれている方もいるかとは思いますが、プログラム領域がなくなりそうです。
プログラム領域、&HC000~&HCFFFまでなのに、既に&HCA00まで使いました。
敵との戦闘、ただでさえ大きなロジックなので、&HCFFFまでではまず収まりません。
メモリ節約せずに突き進んできましたので、まぁ、仕方ないけど…。

解決策は2つあります。
@変数領域を移動させプログラム領域を広げる。
Aイベント進行は何とか残りのメモリでできそうなので、敵との戦闘だけ別プログラムにする。

実はどちらも大変です。
@以前にも書いた通り、MSXには文字の置き換え機能がありません。
変数書き換えは、完全手作業なので大変です。
変換し忘れたら、当然暴走です。
ハンドアセンブルの厳しいとこです。

A別プログラム化は、敵との戦闘になったら敵グラフィックの読み取りと同時に、敵戦闘プログラムもダウンロードし、実行する方法です。
まぁ、まだこちらの方が楽は楽かな…。

スマートな方法は当然@です。
でも、技術的にはAかな?(大した事ないけど…。)
イベント進行完成までに、どちらにするか考えます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月03日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第20回目です。
今回はゲームの進捗管理をします。

【ゲーム製作進捗】


































































































工程作業進捗
1ゲーム設計(規模、詳細、メモリマップ)完了
2シナリオ作成完了
3オープニグ作成完了
4タイトル作成(仮)完了
5マップ設計(2D)完了
6マップグラフィック完了
73D表示完了
8マップ内移動完了
9システムメニュー(道具、魔法、ステータス、ゼーブ)10%
10イベント設置・発生
11メッセージ表示ロジック作成完了
12独自スクリプト作成(全20種)60%
13イベント進行
14BGM作曲(ダンジョン、戦闘、エンディング)33%(ダンジョンのみ)
15BGM演奏完了
16本番データ登録
17敵グラフィック(全6種)
18敵遭遇
19敵戦闘
20レベルアップ
21道具屋(武器屋)
22宿屋
23エンディング

うーん、全体で30%と言ったところでしょうか…。
難関部分である、「敵との戦闘」が手付かずですので、まだまだ先は長いです。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月02日

MSX語り

4_19_1.png

MSXの良さって何だろう?
私はMSXとWindowsでしかプログラミングした事がないので大層な回答は出来ません。
しかし、SCREEN2のような独特な不便さ(8ドット毎2色)や、SCREEN1.5のような柔軟さはとても好きです。
MSX2のSCREEN5のような、解像度は低いが完全なグラフィックモードだと、今となってはMSXらしさがないと思うのは私だけでしょうか?

今回、本当に久しぶりにMSXで3Dロールプレイングゲームを作っていて感じたのですが、速度やらメモリやら画像やらの制約だらけの中での製作が、とても楽しく感じます。
逆に目新しささえ感じます。
MSX2で、SCREEN5以降を使うとMSX1での制約からはかなり解放されますが、私的にはMSXで開発する意味がなくなるので使いません。
もし、MSX2の機能を使うとしても、コナミの「スペースマンボウ」のようにSCREEN1.5を使い続けると思います。
9_5_2.png
画像出典: 『GameFAQS』 スペースマンボウ MSX2版
https://gamefaqs.gamespot.com/msx/917251-space-manbow/images?pid=917251&img=6


色(16色→512色中16色)とSPRITE(横4枚並んだら5枚目以上は消える→8枚)、メモリ(VRAMの空き容量をメモリ化)の制約が外れるだけでも大きいです。

なにより、SCREEN5以降を使いゲーム製作するくらいなら、MSXではなくWindowsでゲーム制作します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記

2023年10月01日

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



10_1_1.png
3Dダンジョンロールプレイングゲーム第19回目です。
今回はBボタンでメニュー表示をできるようにします。

コントローラーが、ジョイスティックの場合は「Bボタン」で、BIOSの「GTTRIG」(&H00D8)を利用します。
コントローラーが、キーボードの場合は「GRAPHキー」で、Laboratoryテーマ13「「GRAPH」キーが押されたか調べたい」でやった、BIOSの「SNSMAT」(&H0141)を利用します。

そして前回メニュー(BASICからマシン語呼び出し)とは異なり、今回はマシン語内からメニュー選択画面を開きます。
メニュー項目は、
「どうぐ」
「まほう」
「ステータス」
「セーブ」
位かな?
キャンセルは当然ゲームに戻ります。
今回は何を選択してもとりあえず、ゲーム終了するようにしておきます。
10_1_2.png

次回はそれぞれの処理を作成していきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年09月30日

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



3Dダンジョンロールプレイングゲーム第18回目です。
BGM演奏に、当初はASCIIの「MuSICA」を利用予定でしたが、思った以上にメモリが厳しいので、「簡易BGMプレイヤー」を利用したBGMに変更します。(2023年5月20日記事参照「3Dダンジョン」)
Windowsでの製作が長かったので、メモリを節約すると言う事を忘れていました...。

BGMの演奏には、Laboratoryテーマ10「マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい」でやったとおり、「走査線割込み」を利用します。
事前にLaboratoryで走査線割込みのサンプルプログラムを作ったので今は大丈夫ですが、最初、走査線割込みの知識をすっかり忘れていて、何すればいいんだっけ!?状態でした。
…と言う訳で、上手くいくのか心配だったので、もっと後の方の予定だったBGM演奏を前倒しします。

BASIC、マシン語プログラム共にLaboratoryテーマ10「マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい」での追加分を組み込んで実行。

BASIC部
9_30_2.png

マシン語部
9_30_1.png


BGMは、過去に製作した迷宮アクションゲームの「TOWER」のBGMを再利用しております。
ちょうど雰囲気的にもよいかと…。

よし、問題なくBGMが鳴りました。
そう言えば、メモリマップにBGMデータ領域を用意するのを忘れてた…。
&HA800~&HAFFFまでが空いていたので、そこの&HA800〜&HA855をBGMデータ領域にしています。

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

2023年09月29日

Laboratoryテーマ10「マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい」




さて、今回はLaboratoryテーマ10「マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい」です。
MSXには「走査線割り込み」と言う機能があります。
「走査線割り込み」は簡単に言うと、プログラム実行中でも凡そ1/60秒毎に割り込みが掛かり、別処理を走らせる事が出来る機能です。
1/60秒毎と一定間隔なので、タイマーやBGM演奏などに使われます。
別処理が終わると、実行中プログラムの中断した位置から再開します。

今回は以前に公開した、Laboratoryテーマ6「自機に向かって飛んでくる敵弾」と、Laboratoryテーマ14「簡単にBGMを鳴らしたい」のサンプルプログラムを合体させ、ゲーム中にBGMを演奏させてみます。


流石にシューティングゲームのBGMに、「カエルの歌」はなかなかシュールです。

「IITVLSMPL.BAS」【ダウンロード

9_29_1.png
STSMPL.BASへの追加分のみ掲載します。

マシン語のサンプルです。
起動すると、ITVLSMPL.BINを作成します。

「BINSET.BAS」【ダウンロード

9_29_2.png
STSMPL.BINへの追加分のみ掲載します。

走査線割り込みがされると、特定のアドレス(&HFD9F)がコールされます。
&HFD9F~&HFDA3の5バイトが走査線割込み時の命令格納エリアとなっているので、ここにBGM演奏ルーチン部へのコール命令を設定する事で、走査線割り込みでBGMを演奏する事が出来ます。
因みに、通常はリターン(&HC9)のみ設定されています。

プログラムは、「走査線割り込み初期処理」(&HC310)、「走査線割り込み終了処理」(&HC338)、「割り込みBGM演奏処理」(&HC348)の3つに分かれます。
「走査線割り込み初期処理」は、BGM演奏開始前に一度実行して下さい。
走査線割込み時の命令格納エリアの内容を退避します。
これは周辺機器が取り付けられていたりすると、走査線割込み時の命令格納エリアに既に別処理が設定されている可能性があるためです。
「走査線割り込み終了処理」は、BGM演奏終了時に一度実行してください。
退避した走査線割込み時の命令格納エリアの内容を戻します。
「割り込みBGM演奏処理」は、ルーチン開始時に全てのレジスタを退避(PUSH)し、終了時に戻し(POP)ます。
通常のプログラム処理と、割り込み処理で同じレジスタを使うので、割り込み内でレジスタ変更すると、通常プログラムにも反映されてしまい、必ずバグるので忘れないように。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年09月28日

Laboratoryテーマのタイトル変更




6_2_1.png
Laboratoryテーマ10「スクロールシューティング等で、処理が重いためスクロールの際、他のキャラクタの動きがガクガクする」について、タイトルを変更します。
このテーマは、シューティングゲームで自機の移動中、他の重い処理(スクロール等)が実行されると、その間、一瞬自機の動きが遅くなります。
スクロールの度にガクッガクッとなるので、物凄い違和感があります。
その違和感を解消するために、「走査線割り込み」機能を使おうと言う内容でした。

「走査線割り込み」は簡単に言うと、プログラム実行中でも凡そ1/60秒毎に割り込みが掛かり、別処理を走らせる事が出来ます。
その処理終了後、中断したプログラムを再開する機能です。
時間が一定なので、タイマーやBGM演奏などによく使われます。

シューティングゲームよりも先に、「ゲーム製作」の3DダンジョンロールプレイングゲームのBGM演奏で使いたいので、テーマタイトルを「マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい」に変更します。










テーマ
10マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年09月27日

通産省情報処理検定試験1級

4_19_1.png

専門学校も、冬に差し掛かる頃、「通産省情報処理検定試験1級」の資格試験がありました。
これは、以前受けた「日商簿記検定試験3級」と同様、「第二種情報処理技術者資格」を取得できなかった生徒のために、何らかの資格を取らせるといった学校側の方針です。(2023年9月2日記事参照「日商簿記検定試験3級」)
私は「第二種情報処理技術者試験」受かったのに、なぜこの資格試験を受けたのか?(2023年9月25日記事参照「第二種情報処理技術者資格」)
そう、「第二種情報処理技術者試験」の合格発表前に申し込みがあったんです…。
既にお金も払い終わっているので、受けないともったいないという事で、私以外の合格者も皆受けてました。

試験内容は、「第二種情報処理技術者試験」に比べれば、簡単カンタン…。
無事、合格しました。

これが終わると、いよいよ春の「第一種情報処理技術者試験」に主軸を移した授業になるのでした。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX回顧録

2023年09月26日

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



9_27_1.png
3Dダンジョンロールプレイングゲーム第17回目です。
今回はタイトル画面に「NEW GAME」/「CONTINUE」のメニュー選択を実装します。

「NEW GAME」選択時は、オープニング開始。
「CONTINUE」選択時は、新たな選択ウィンドウが開き、セーブファイル選択となります。

セーブファイル数ですが、小さなゲームなので1つでいいかなとも思ったのですが、メニュー選択のサンプルも兼ねているのでとりあえず3ファイル位選べるようにすればいいかな?
9_27_2.png
基本的にファイル操作はBASICに戻って実行します。
よって、マシン語でメニュー選択し、任意アドレス(今回は&HD015)に選択結果を書き込み、BASIC部へ戻る。
バックアップファイルから読み込んで、ゲーム実行。
と言う、処理の流れとなります。

メニュー選択は、Laboratoryテーマ23「選択肢メニューを開いて、選択したい」で製作した「メニュー選択」を利用します。

「NEW GAME」でオープニング開始はOK。
仮のセーブファイル(FILE1〜3.SAV)を用意し、「CONTINUE」でゲーム開始するか動作テスト。
こちらも動作OKですね。

スクリプトを使わないメニュー選択の利用方法です。
9_27_3.png
赤枠にメッセージデータ先頭アドレスを代入しコールすると、選択ウィンドウが開き、メニュー選択できます。
因みに、メッセージデータは&HC988〜&HC98Fが「NEW GAME」、&HC990~&HC997が「CONTINUE」、&HC998~&HC99Cが「FILE1」、&HC99D~&HC9A1が「FILE2」、&HC9A2~&HC9A6が「FILE3」です。

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コード