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

2023年11月24日

メモリの問題

4_19_1.png
今回MSX1でロールプレイングゲーム作って、改めて感じましたがやはりメモリが厳しい…。
DISK-BASICだと約23kバイトくらいしか使えない…。
まぁ、FONT読込用に4kバイト(&HB000~&HBFFF)空けてるから、そこがまだ使えると言えば使えますが…。

うーん、そう言えばファミコン版の「ドラクエ」ROM容量が64Kだったかと思います。
MSX1版の容量って、どなたかご存じでしょうか?
32kバイト程度だったなら、凄いけど…。
マップスクロールの歪さから察するに、マップデータ圧縮かけて、展開しながら描いてるっぽいですね。
やむを得ないけど、なんかすごい違和感のあるスクロールですからね。

そう考えると、確かにMSX1でメガROM使っていないロールプレイングゲームは少ないですね。
テープ版の「ハイドライド」や、ROM版の「ウルティマ」「ザナドゥ」位なのかな?
キャラクタデータの容量の少ないARPGだし。

以前にメモリ不足に悩んで、断念したMSX1版ロールプレイングゲーム「デビルズバスター」の事を書きましたが、マップ10面位作って、動くイベント(町人等)20個以上作ってたらメモリ不足になりました。
FONT読込をデータとカラーに分けて&HB000~&HB7FFまでにして、残りはプログラムエリア。
しかも、戦闘ロジックは敵FONTを読込、設定し終わった後、&HB000~&HB7FFに読み込んで実行するというデータロード時間を犠牲に色々やったのですが、結局、どう考えてもやりくりできない状態になりました…。
ディスク使ってるので、マップの広さや数、敵のグラフィックなんかは、どうとでもなるのですが、一度に読み込めるデータ量に問題があります。
なんといっても、イベント関連の変数は、マップ移動してもメモリ内に残しとかないといけないので、容量食います…。
特に移動するイベント(町人)だったので、1つのイベントにワーク10バイト程度、移動のロジックが結構とんでもなく多かった覚えがあります。
あとスクリプト命令。
イベントの動作を凝らしていった結果、アニメーションさせて移動させたりする命令がバンバン増えて、それに比例しプログラムも増大。
マップを増やせば増やすほど、イベント数がどんどん増えて行って、結果イベント管理用のメモリも増えてしまうという…。
まぁ、メモリ気にせずイベント配置しまくった自分が悪いんですが…。

この時、MSX1の機能だけでの製作を諦めて、MSX2の機能使ってれば問題なかったんですが、やっぱりMSX1での制作にこだわってしまいました。

ここで仕事でWindowsでのプログラミングが始まったこともあり、プライベートでもWindowsでのゲーム制作に移行してしまいました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記

2023年11月23日

細かく修正M

4_19_1.png
ダウンロード」の記事の飛び先の誤りを修正。
・作品14「PAC-MAN
・ツール6「MAP16 EDITOR Ver.2.2

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

Laboratory」テーマメニューの公開分記事へのリンク追加。
・Laboratoryテーマ26「SCREEN1.5を使いたい」
・Laboratoryテーマ27「SCREEN1.5でSPRITEモード2を使いたい」

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

2023年11月22日

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



3Dダンジョンロールプレイングゲーム 第51回目です。
今回はタイトルFONTを作成します。

「なぜ突然?」と思うかも知れませんが、システムメニューが終わったら、いよいよ戦闘になります。
戦闘には当然、敵グラフィックが表示されます。

方眼紙と「FONT EDITOR」で、ちまちま描いていては時間も労力も足りませんので、以前に書いた案を実践してみようと思います。(2023年9月20日記事参照「画像系」)

…そう、その練習です。

まず、Excelで文字を書きます。
11_20_1.png
それをコピーして、グラフィックソフトに貼り付け、画像サイズをMSX1のサイズ(256×192)にし、16色に減色して「.BMP」形式で保存。
11_20_2.png
そしてそれを、「BMP2MSX」にドラッグ&ドロップで、「.SC2」にコンバート。
11_20_3.png
その「.SC2」ファイルを、「SC2toFNT.BAS」と一緒に「Disk-Manager」でイメージディスク化。
11_20_4.png
そのイメージディスクを「BlueMSX」で起動し、「SC2toFNT」で「.SC2」ファイルを「.FNT」にコンバート。
9_15_1.png
そして出来た「**1.FNT」、「**2.FNT」、「**3.FNT」の内、今回は上段の「**1.FNT」を3Dダンジョンロールプレイングゲームのディスクにコピーします。
「3DRPG.BAS」で、タイトル表示させれば完了です!(表示が遅いので、マシン語で組みました。)
11_20_6.png

簡単!

「FONT EDITOR」でポチポチしなくても、出来ました!
これなら、敵グラフィックもWindowsで過去に描いたものを流用可能です!
それぞれのツールの作者様、便利なツールをありがとうございます!

因みにタイトルはとりあえず(仮)です。

次回はシステムメニューの「どうぐ」を作成します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月21日

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



3Dダンジョンロールプレイングゲーム記念すべき第50回目です。
今回は文字FONTを書き換えて、ゲームの雰囲気を盛り上げます。

前回も書きましたが、やっぱり標準FONTじゃ味気ないなぁ…。
11_18_2.png
11_18_1.png
抑揚がなく、読み辛い…。

そこで、文字フォントを「FONT EDITOR」で書き換え。
11_18_5.png

久しぶりのFONT作成は楽しい!!
ここまでする気なかったのに、気付けば全文字FONTを書き換えていました。
素晴らしい集中力です。(←自画自賛)
調子に乗って色まで付けてる…。

こんな感じになりました。
良い感じです!
11_18_4.png
11_18_3.png
おぉ、見易い!

一気にゲームっぽくなりましたね!
もうちょっと、FONT崩してもいいかも?
そろそろタイトルFONTも文字じゃなく、ちゃんとしたのにしたいですね。

という事で、次回はタイトルFONTを作成します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月20日

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



3Dダンジョンロールプレイングゲーム第49回目です。
今回はセーブ処理を組んでいきます。

「セーブ」はシステムメニューの4番目。
11_16_1.png

セーブ数は3つです。
11_17_1.png
ファイル選択後、一旦BASICに戻り変数エリア(&HE000~&HE0FF)をBSAVEにて保存し、再度マシン語に復帰します。

マシン語プログラムリストです。
11_17_2.png
BASICプログラムリストです。
11_17_3.png
元々のメインルーチンに601行〜604行を追加しています。

システムメニューからセーブして、ちゃんとゲームに戻る事を確認。
とりあえず以前のようなBSAVEの悪夢は起こらず…。
ちゃんと保存されているかは、「CONTINUE」処理を組む際に分るでしょう。
何にしても一番最後です。
駄目ならまた変数エリアのアドレスをズラすしかない…。
でも、それで解決できるのが判ってるから気は楽です。

さて、次回…。
ん−、処理を進めたいところですが、ステータス表示してみて、「やっぱり標準FONTじゃ味気ないなぁ…。」と痛感。
次回は閑話休題、文字FONTを書き換えてみます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月19日

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



3Dダンジョンロールプレイングゲーム第48回目です。
では、今回は前回設計した通りに「ステータス」表示を組んでいきます。

「ステータス」はシステムメニューの3番目。
11_16_1.png

1ページ目は強さに関する表示を左右に分けて表示します。
11_16_2.png
中央線(!)は専用のFONT作る予定です。
仮にアイテム装備させてみて、攻撃力・防御力・素早さの()内装備品込値にちゃんと反映されてるかチェック。
問題なしです!

2ページ目は装備品に関する表示です。
11_16_3.png
こちらも仮に装備させた装備品が、ちゃんと反映されてます。

ステータス表示のプログラムリストです。
11_16_6.png
容量節約しないといけないのに、これだけで&H128も使ってしまった…。
まぁ必要な処理故、止むを得ない…。

次回はセーブ処理を作成していきます。
BSAVEの悪夢が再現しないことを祈ります…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月18日

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



3Dダンジョンロールプレイングゲーム第47回目です。
第19回にシステムメニュー表示して、「次回以降それぞれの処理を作ります。」と、言っておきながら、システムメニューすっかり後回しになってしまいました…。
今回はシステムメニューの「ステータス」の表示について設計します。

今作では、画面下部1/3にしか文字が表示できないため、そこに収まる範囲の表示しかできません。
しかし、表示項目が多く標準メッセージウィンドウに一度に表示し切れないので、2ページに分けて表示することにします。

1ページ目は強さに関する表示を左右に分けて表示します。
























[ステータス (つよさ)]
レベル:値|こうげきりょく:値(装備品込値)
たいりょく:値/上限値|ぼうぎょりょく:値(装備品込値)
まりょく:値/上限値|すばやさ:値(装備品込値)
じょうたい:状態|けいけんち:値
おかね:値|つぎ:>値

2ページ目は装備品に関する表示です。












[ステータス (そうび)]
けん:区分0装備品名
たて:区分1装備品名
よろい:区分2装備品名
かぶと:区分3装備品名

ステータス表示は、1項目ずつ変数を16進数→10進数変換掛けて、桁数指定(ゼロサプレス処理有)表示ルーチンでメッセージワークに書き込み、全項目書き込み終わったら表示となります。
しかもその項目数が、3桁数値11個、5桁数値3個、文字列5個もあり、完全な力技になります。
圧縮しようのない、最も容量を食う処理の1つです。

装備品込みの攻撃力・防御力・素早さ表示のために、算出ロジックを組みます。
これは戦闘時にも必要なのでサブルーチン化します。
11_16_4.png

同じく、レベルアップに必要な経験値表示のために、算出ロジックを組みます。
これも戦闘後のレベルアップ判定に必要なのでサブルーチン化します。
11_16_5.png

次回は今回設計に則り、ステータス表示を作成します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月17日

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



3Dダンジョンロールプレイングゲーム 第46回目です。
さて、今回はマップ移動時発生イベントを組んでいきます。

何それ?と、思われるかもしれませんが、前回組んだイベントの中で、「宝箱」や「ゲート」等に関して「移動後座標って何?」と思われた方もいるのではないでしょうか?































































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

「宝箱」は初期座標が通路に面していない壁の中(0、0)ですので接触できません。
また、「ゲート」はイベント終了後そこに存在すると先に進めません。
「案内」イベントは、毎回表示すると煩いので初回通過時のみとします。

そこで、フラグ値に応じてイベントを移動させる必要があります。

実際のイベントを使って説明します。
11_15_2.png
ゲートがあって進めません。
鍵を使ってゲートをあけます。
11_15_3.png
11_15_4.png
本来なら、これでゲートは開いているはずので通過できるはずなのですが、現状だとイベントがそのまま残っていますので、進もうとすると…
11_15_2.png
進めません。
そこで、フラグ値に応じてイベントを消す必要があるのです。
イベントを消すには絶対に触れられない場所(今作だと座標(0,0))に移動させれば良いです。

このルーチンはマップを移動した際(イベント位置が初期座標にある)、そのマップ内のイベントを毎回フラグ値に応じて移動させる(移動後座標に配置換え)必要があるので、マップ移動時発生イベントと私は呼んでいます。

複雑なイベントを組むのなら、これも別ファイルでスクリプト化した方が便利です。
例えば学校探索系のロールプレイングゲームで、教室のドアが複数あるなど。
今作は5つなので、直プログラムします。
11_15_1.png

これで、敵がいない状態で最後のボス戦まで進むことが出来るようになりました。

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

2023年11月16日

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



3Dダンジョンロールプレイングゲーム 第45.5回目です。
.5ですが、バグではありません。
簡単なイベントを追加します。

前回、イベントの配置と進行を組みました。
ただ、やはり壁に店屋と宿屋がめり込んでいるのは、「普通気付かないだろう」と考えました。
そこで、大した容量も労力も費やさないので、「案内イベント」を用意することにしました。
11_15_6.png

「武器屋」、「道具屋」、「宿屋」の前を最初の通過時のみ、「東に『**屋』がある。」と表示するのです。
すると、壁にめり込んでいても、壁側に何かあると気付きますよね。
1回表示したら「ゲート」同様、イベントを移動させます。
そうする事で、2回目の通過以降はイベントが発生しなくなります。
11_15_5.png

イベント一覧です。






























































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

通路上にあり、その座標に乗ったら発生するイベントなので、「設置」型となります。
今作は「設置」型のイベントがなかったので、ちょうどいい紹介になりました。

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

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) | 開発
検索
<< 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コード