2024年01月23日
細かく修正P
「ダウンロード」カテゴリに新たに「新作」追加。
「新作」に、新規公開した「戻らずの迷宮」の記事へのリンク追加。
「リンク」に「素材系」を追加し、「ゆんフリー写真素材集」を追加。
「ゲーム制作」の「3Dダンジョンロールプレイングゲーム」で前後回へのリンク切れが複数見付かったので修正。
それ以外は、画像の貼り直しや、記事の誤記の修正程度です。
2024年01月22日
メインはどちら?
「ゲーム制作」カテゴリに注力していたため、このブログのメイン(?)である「MSX回顧録」が全然進んでいない…。
…んー?
もう、「ゲーム制作」がメインでもいいかも。
今後は「ゲーム制作」メインで進めて、開発に時間かかってページ更新滞りそうな時に「MSX回顧録」を挟むスタンスで行きます。
最近のこのブログのPVは、1日300前後で推移しています。(2023年7月29日記事参照「ブログについて」)
時々、ポコッと上がったり下がったりして、400とか200とかになりますが、平均すると300くらいです。
前は200くらいだったので、見に来てくれている人増えてるのかな?
3Dダンジョンロールプレイングゲームも完成したことだし、お披露目ついでに「X」(旧ツイッター)へ進出しようかしら。
2024年01月21日
【ゲーム制作】3Dダンジョンロールプレイングゲーム あとがき
3Dダンジョンロールプレイングゲーム あとがきです。
思えば、2023年5月29日に第1回目をスタートさせ、早8か月弱…。
1日当たりの開発時間も短く、開発記事を書きながらとはいえ、1本のゲームにこれだけの時間をかけた事は初めてです。
多分一人で制作していたら、何度か躓いたところで制作中止していたと思います。
プログラミングの勘を戻すための習作だったはずなのですが、非常に思い入れのある作品になりました。
制作目的が目的なので、簡単なゲーム…、と、言う事で作り始めましたが、ロールプレイングゲームはマップを小さくする、イベントやアイテムを少なくする…くらいしか小さくできません。
決して「簡単」に作れるジャンルではありません。
言い換えれば、データの数が少ないだけで、プログラム本体は大規模なものと同じ。…と、言う事です。
(イベントやアイテムは数が少なくても、ロジックは作る必要がある。)
途中でも書きましたが、なぜこれを習作に選んだのか…。
余りにもブランクが長すぎて、勘が鈍っていた最たるものですね…。
そういえば最初の検証内容の結果を報告します。(2023年5月20日記事参照「3Dダンジョンロールプレイングゲーム」)
・検証課題
@ 基本はBASIC
A BASIC部で「MuSICA」でBGM演奏
B マップ表示はマシン語
C 敵表示用のFONT書換えもマシン語
・結果
@ タイトル表示一つ取っても非常に遅いので、ディスク関連以外はマシン語で組みました。
メインをマシン語、初期設定とディスク周りだけBASICが最適と考えます。
A メモリ不足で「MuSICA」利用無し。改めて別途検証します。
BC @に同じ。
・まとめ
「マシン語で組めるならマシン語で組んだ方が良い」と言う事ですね。
「マシン語症候群」再発した模様。(2023年4月23日記事参照「すべてをマシン語にする必要性」)
今作はここで完成としますが、今作では複数マップの切り替えをやっていません。
いつかシステムはそのままで、階層を5階層位作って、改めて作品としての3Dダンジョンロールプレイングゲームを作ってみようかな?と思います。
当然イベントも、アイテムも、魔法も、敵も適度に増やして、MSX1の市販ゲーム並にはしたいですね。
あと、以前に書いた通り「BMP to MSX」でコンバートして、オープニングや、エンディングのグラフィックも入れてみたいですね。
結構張り切ってここまで駆け抜けてきたので、少し休憩してから次回作品については考えたいと思います。
2024年01月20日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 公開!
「ゲーム制作」カテゴリで制作していた3Dダンジョンロールプレイングゲームが遂に完成しました!
プログラミングの勘を戻すため用の習作ですので、簡単に終わります。
ただ、習作ながら今私の持てる技術を最大限つぎ込んだゲームとなります!
▲タイトル画面
■主な新テクニック
・本格ロールプレイングゲーム
・独自スクリプト言語実装
・疑似3Dダンジョン表示
・走査線割込みによるBGM演奏
・「BMP to MSX」使用による綺麗で大きな敵グラフィック
・...etc.
・本格ロールプレイングゲーム
・独自スクリプト言語実装
・疑似3Dダンジョン表示
・走査線割込みによるBGM演奏
・「BMP to MSX」使用による綺麗で大きな敵グラフィック
・...etc.
完成作品としては、初の本格的なロールプレイングゲームになります。
また、走査線割込みを使ったゲームも、完成作品としてはこれが初です。
(共に未完成作品ならバンバン使ってました。)
MSXでの独自スクリプト言語の実装は、今作が本当に初となります。
習作なので規模の小さなロールプレイングゲームですが、プログラムは大規模なものと遜色ないので、いつか今作をベースに改めて規模を大きくしたもの(マップ・イベント・アイテム・魔法を増加)を作りたいと思います。
▲探索画面
▲戦闘画面
タイトル | 『 戻らずの迷宮 』 | 新作 | 1 | |
ストーリー | 不治の病に侵された妹を助けるため、万病に効くと言われる薬を求め「戻らずの迷宮」に挑む少年の物語…。 | |||
操作方法 | ■タイトル画面 タイトルで、「スペース」バー若しくはAボタンでゲーム開始 以降、開始したコントローラーでのみ操作可能です ■共通操作 ・メニューウィンドウ 「↑」「↓」:「」を動かし選択 「スペース」バー若しくはAボタン若しくは「→」:決定 「GRAPH」キー若しくはBボタン若しくは「←」:キャンセル メニューウィンドウの上枠に「▲」、下枠に「▼」が表示されたら、その方向にまだ選択項目があります・メッセージ表示後、右下に「▼」が表示されたら「スペース」バー若しくはAボタンで処理進行 ■探索時 「↑」:向いている方向に前進 「→」:向いている方向に対し、右を向く 「↓」:向いている方向に対し、後ろを向く 「←」:向いている方向に対し、左を向く 「GRAPH」キー若しくはBボタン:サブメニュー表示 ■戦闘時 共通操作と同じ | |||
対応機種 | MSX1、MSX2、MSX2+ | 製作年 | 2023年 | |
ダウンロード | リンク先へ | ジャンル | ロールプレイングゲーム |
※ゲーム内のキャラクタ、音楽は制作当時の物です。 公開前提に製作していないため、雑誌等から流用している物もあるかも知れませんので、著作権侵害の恐れのあるものは、ご連絡をお願いします。 |
2024年01月19日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第91.5回
3Dダンジョンロールプレイングゲーム 第91.5回目です。
.5なのでバグ取りです。
効果音のデバッグプレイ中、BASICに戻る直前の効果音が鳴らないバグを発見。
答えは簡単、BASICに戻る時には、毎回「走査線割込み終了処理」を実行するのですが、これを実行してしまうと、当然、BGM演奏ルーチンへ処理が飛ばないので、BGMも効果音もならなくなります。
効果音フラグを設定するロジックの場所を、フェードアウトなど時間のかかる処理の前に移動するなどして調整。
しかし、戦闘勝利時の効果音は長いので、どう調整しても「走査線割込み終了処理」までに演奏が終わらない。
どうなるか?
効果音の演奏が途中で一旦切れ、BASICへ戻り、再度マシン語に入り、走査線割込み開始後に続きから演奏されてしまう。
違和感しかない…。
解決策として、戦闘勝利時の効果音だけ、演奏終了まで待つことにしました。
これで解決です。
他の効果音は短いので問題なしです。
あと、タイトル画面変更しました。
エンディングの「Fin」の文字が「かっこいいな!」と思い、タイトルも合わせました。
いい感じ!
次回本当に公開します。
2024年01月18日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第91回
3Dダンジョンロールプレイングゲーム 第91回目です。
今回は効果音処理を組んでいきます。
前回、効果音が必要な個所に、効果音フラグ(&HE025)を立てましたので、後はBGMと同様「走査線割込み」処理内でフラグをチェックし、音を鳴らし始めたらフラグを「&HFF」にします。
BGMと異なるのは、鳴らし終わったらそこでフラグを「&H00」にして終了、繰り返しません。
私は基本的にPSGのチャンネルAとBをBGM用、チャンネルCを効果音用として使っていました。
過去作品の効果音を再利用しようかとも思ったのですが、シューティングやアクションが多かったので、合わない…。
止むを得ず、久しぶりの効果音作り…。
難しい!
うーん…、思ったような音になりません。
敵への攻撃時は、イースの「デュバッ」っていうのが良いんだけど、出来ない…。
因みに昔は作れてました…、昔どうやって作ってたんだっけ…?
今作で使っているBGM演奏ロジックではあまり複雑なことできないのでノイズやエンベロープも切り替えられないので、これ以上は無理ですね…。
とりあえず、あまり時間かけたくなかったので、一応それらしい効果音が出来たらそれを採用。
全9種類完成しました。
▲効果音データの一部
共通ロジック側の効果音は、ロジック内に組むには流石にメモリがない…。
止む無く&H9A00~&H9AFFまでを効果音データとして、メモリマップに入れました。
アドレス | データ名 | 備考 |
9A00〜9AFF | 効果音データエリア | 3種類、256バイト |
9B00〜9CB4 | アイテムデータエリア | 23種類×19バイト=437バイト |
9D00〜9D4D | 魔法データエリア | 6種類×13バイト=78バイト |
9E00〜9EAF | 敵データエリア | 8種類×22バイト=176バイト |
9F00〜9FE7 | レベルアップデータエリア | 29レベル×8バイト=232バイト |
A000〜A1B8 | 2Dマップデータ | 21マス×21マス=441バイト |
A200〜A7FF | 壁キャラクタデータ | 15パターン、1,536バイト |
A800〜ABFF | BGMデータ | 4曲(無音、ダンジョン、店屋、戦闘)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バイト |
再度、イヤホンを付けてのデバッグ作業です。
2024年01月17日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第90.5回
3Dダンジョンロールプレイングゲーム 第90.5回目です。
デバッグを頼んでいた友人から、
友人「これで完成!?」
私「なんで?」
友人「効果音は!?」
私「…は?」
なんと、「効果音」をすっかり忘れていました。
「次回公開!」と、言っておいて申し訳ないですが、今回はバグ取りです。
前にも書きましたが、私は普段パソコンの音は鳴らないようにしています。
BGMの作曲・確認にはイヤホンを使い、必要な時だけ聴いていました。
当然、デバックプレイ時は無音…。
BGM切り替え部分だけ確認したくらいです…。
そう言った訳で、「効果音」の存在に一切気付けずにいました…。
慌てて「攻撃」や「敵の遭遇」等、必要な個所に「効果音フラグ」(&HE025)を立てていきます。
名前 | 用途 | 種類 | |
0 | 無音 | 効果音無し | 共通 |
1 | 足音 | 探索時、プレイヤー移動 | 共通 |
2 | 遭遇 | 敵とエンカウントした時 | 共通 |
3 | 勝利 | 敵との戦闘に勝利した時 | 戦闘 |
4 | レベルアップ | レベルアップした時 | 戦闘 |
5 | 攻撃 | 敵にダメージを与えた時 | 戦闘 |
6 | 逃走 | プレイヤーか敵が、戦闘から逃走した時 | 戦闘 |
7 | ダメージ | 敵からのダメージを受けた時 | 戦闘 |
8 | 魔法 | プレイヤーか敵が、魔法を唱えた時 | 共通 |
9 | 衝突 | 前にある壁に衝突した時 | 共通 |
うーん…、効果音は種類が多いので、大変です…。
しかも、この段階から効果音追加するのはなかなか厳しいです…、特にメモリ容量的に…。
幸い(?)な事に、今作では使わない処理のロジック(フェードアウト等)をポロポロ組んで残してあったので、それらすべて削除。
及び、戦闘ロジックのみの処理はそちらへ移動。
ギリギリメモリは何とかないそうですが、大工事です…。
次回、効果音作成します。
2024年01月16日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第90回
3Dダンジョンロールプレイングゲーム 第90回目です。
バランス調整です。
敵の特殊攻撃の「毒」ですが、確率1/8にしたのですが、多い!
1/16に下げました。
あと、「シルバーウルフ」を倒せるようになるまで、ひたすら同じ通路を往復して何時間も「スライム」と戦い続けなければならない…。(大体レベル7目安)
これはダメだ…。
とりあえず、得られる経験値と、お金を増やします。
敵1の経験値とお金+10
:
敵5の経験値とお金+50
と言う感じに増やします。
改訂前
改訂後
これで経験値が上がり易く、多少はプレイし易くなりました。
レベル5位にはすぐに上がるようになりました。
んー、ちょっと簡単になりすぎたかな?
取り敢えず、これで完成です!
次回、公開しますね。
2024年01月15日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第89回
2024年01月14日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第88回
3Dダンジョンロールプレイングゲーム 第88回目です。
「エンディング」処理を組んでいきます。
エンディング処理は、エンディング用メッセージデータを作成して、イベントを作成。
ここまでくると、プログラム容量を気にしなくてもよいので、ガツガツ組んでいきます。
途中、スタッフロールさせるのに、いちいちボタン送りが必要なので、ボタン送りなしでイベントを進められるよう、新たなスクリプトを追加作成。
もう一つ、ボタン送りなしでイベント終了できるスクリプトも追加。(「PD」や「EG」はボタン送りが必要。)
命令 | 意味 | 記述 | 動作 |
TR | ThRough | TR | 入力待ち無しでメッセージを次の行へ。 |
EX | EXit | EX | 入力待ち無しでイベントを終了し、BASICへ戻る。且つ、BGM演奏は継続する。 |
これでスクリプト26種です。
「ドラゴン」討伐後のエピローグを表示した後、スタッフロールを流し、「Fin」で無限ループ。
完了です!
MSX1なので、グラフィックに力を入れられないのが残念…。
次回作は、せっかく「BMP to MSX」があるので、グラフィックに力入れてみようかな。
となるとアドベンチャーゲームかな?
さて、次回は、遂に後回しにしてきた問題のありそうな「CONTINUE」処理です。