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

2023年11月30日

プログラムのロジック

4_19_1.png
ゲームで「こういうことがしたい!」と思いロジックを考える時、閃いたロジックにより、プログラミングの難度や、処理速度、プログラムの長さが全然変わります。
結果は全く同じなのに、それを実現するプログラムのロジックは全く違う訳です。

そこがプログラミングの面白いところです。

ただ、全く閃かない時もあります。
そんな時は、無駄に長く、効率の悪いプログラムを組んでしまいます。
後で、「あれ?なんでこんなロジック組んでるの!?」と、猛省する事も…。

例えば、今制作中の3Dロールプレイングゲームのシステムメッセージの表示で、今回、アイテム名+メッセージの表示を組みました。
アイテム名が10桁で、後ろにスペースが付いているのでそれを除いて表示するロジックです。

私は今回、アイテム名をワークにセットし、10桁目から前に(9桁目)スペースかどうかチェックをかけて行き、スペースでなくなった位置から、残りのメッセージをワークにセットし、VRAMに一括転送して表示するロジックとしました。
特に問題はありませんが、桁が変動する部分を前に持ってこなければならないため、回復薬を使った時にこのロジックだと「25たいりょくが、かいふくした。」としか表示できませんし、合成用のメッセージルーチンを専用に組まなければなりません。

他の方法としては、メッセージデータとして「たいりょくが、〇〇〇かいふくした。」と用意しておき、〇部分にゼロサプレス若しくは左詰めで3桁の数値をセットし、表示する際VRAMに一括転送するのではなく、1文字ずつスペースかどうかチェックしながら転送すれば良いです。
これだと他のメッセージ表示ルーチンと共通で使えます。
ただ、この場合メッセージ中にスペースは含められません。
(&H20以外にスペースFONTを用意して、それをメッセージ中のスペース代わりにする事で対応可。)

今回反省点は、標準のメッセージ表示ルーチンがあるのに、それを使わずなぜわざわざシステムメッセージ表示専用のルーチンを作ってしまったのか…!?
言い訳ですが、一応毎日更新しているので、深く考慮できていません。
最初の方に組んだサブルーチンは、ほぼ忘れています。
でも、ここまで進んでしまったので、もう今更修正する気力はありません…。

こんな感じでロジックを考えていきますが、時々、自分でも驚くような、もの凄い効率的なロジックを組むことが出来ます。
凄い感動です。
こうしてプログラミングにハマっていくのでした…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記

2023年11月29日

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



3Dダンジョンロールプレイングゲーム 第55回目です。
今回もシステムメニューの「どうぐ」処理を作成します。

今回は、最後の「つかう」を組みます。

11_28_1.png
まず、システムメニューから、「つかう」を選択。

11_28_2.png
11_28_3.png
所持品を使ったメッセージと、効果が表示されます。

11_28_4.png
11_28_5.png
選択された所持品が装備品の場合は、今作では使えません。

11_28_6.png
11_28_7.png
それ以外の所持品は、今作では使っても何も起こりません。
その場合、所持品は無くなりません。
それら所持品は、イベント発生時に勝手に使います。

因みに「どくけしそう」は、毒状態からの回復。
「宿屋」は体力、魔力しか回復しないので、ゲーム序盤では毒状態からの唯一の回復方法です。

「エリクサー」は体力、魔力、状態異常(毒状態)からの全回復です。

11_28_8.png
今作では、各用途のアイテムが1種類ずつなので直接アイテムnw定でロジック振り分けていますが、本来なら用途区分を持たせ、用途によって振り分けるようにします。
そして、別途効果値を持たせ、その効果値で使用した際の効力を変動させます。
そのあたりは、「魔法」でやります。(回復1(弱)、回復2(強)等)

これで「どうぐ」全ての処理完了です。

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

2023年11月28日

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



3Dダンジョンロールプレイングゲーム 第54.5回目です。
.5なので、バグです。

システムメニューの「どうぐ」の「そうび」処理を前回作成しました。
その際に発見したバグになります。

ステ−タス表示をするために、メッセージデータに直接値を書き込んでいます。
一度、装備した状態でステータスを表示。
11_27_7.png
11_27_8.png

装備を外した状態で、再度、ステータスを表示。
11_24_1.png
11_27_8.png

「つよさ」欄の攻撃力には外した状態が反映されているのに、「そうび」欄は装備したままになっています。

これは、装備している時のみメッセージデータに装備品名を書き込んで、装備していないときは何もしていないためです。
何も装備していないときは、「空白」を書き込む必要があります。
と言う訳で、解消するには、ステータス表示する前に一度全装備品名エリアと、状態エリアをスペースクリアすればいいです。
これを忘れていました…。
その他の数字エリアは、必ず上書きするので問題なし。

で、修正。
11_29_1.png

11_24_2.png

無事、装備を外した際、装備名が空白になりました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月27日

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



3Dダンジョンロールプレイングゲーム 第54回目です。
今回もシステムメニューの「どうぐ」処理を作成します。

今回は、「そうび」を組みます。

11_27_3.png
まず、システムメニューから、「そうび」を選択。

11_27_4.png
選択された所持品が、装備品でない場合はメッセージ表示。

11_27_5.png
11_27_6.png
選択された所持品が、既に装備されている場合は装備を外します。

装備品を装備する際、気を付けなければいけないのが、装備部位(剣、盾、鎧、兜)。
選択した装備品が、剣なら他の剣を装備していないか?、鎧なら他の鎧を装備していないか?と、部位毎にチェックする必要があります。
ロジックを組んでみました。
11_27_2.png
選択した装備品の部位に、既に他の装備がされていればAレジスタに「1」を、されていなければ「0」を返します。
「1」の時は、HLレジスタに既に装備されている装備品の、所持品格納ワークのアドレスを返します。

11_27_9.png
装備します。
なお、既に装備されていた装備品は、自動で外します。
いちいち装備外すの面倒ですからね。

ステータスで装備品込みの値が変化したか確認。
11_27_7.png
11_27_8.png
「どうのけん」装備時。攻撃力は「10」。

11_27_10.png
11_27_11.png
「てつのけん」装備時。攻撃力は「15」。

11_27_1.png
「そうび」処理完了です。

次回は「どうぐ」の最後、「つかう」を作成します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月26日

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



3Dダンジョンロールプレイングゲーム 第53回目です。
今回からシステムメニューの「どうぐ」処理を作成します。

「どうぐ」メニューは、さらに「つかう」、「すてる」、「そうび」に分かれます。
今回は一番簡単な、「すてる」から組んでいきます。

11_26_1.png
まず、システムメニューから、「どうぐ」を選択。

11_26_2.png
何も持っていなければメッセージ表示。

11_26_3.png
所持品リストが開くので、捨てたい所持品を選択。

11_26_4.png
動作メニューが開くので、「すてる」を選択。

11_26_5.png
アイテムを捨てました。

11_26_6.png
11_26_7.png
この時、装備中の装備品は捨てられません。

11_26_8.png
また、重要品も捨てられません。

11_25_1.png

「すてる」処理完了です。

次回は「どうぐ」の「そうび」を作成します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月25日

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



3Dダンジョンロールプレイングゲーム 第52回目です。
今回からシステムメニューの「どうぐ」処理を作成します。

その前に、「どうぐ」のシステムメッセージには、「『やくそう』をつかった!」など、アイテム名+メッセージを表示する処理が必要になります。
11_26_5.png

そこで今回はアイテム名などの後ろにあるスペースを削除(トリミング)し、メッセージと引っ付けて表示するロジックを組んでいきます。
11_26_9.png
通常はアイテム名を『』で囲って表示するが、ダメージ値の表示など囲わない場合は&HD33Bをコールする。































INOUT
HLアイテム名先頭アドレスなし
DEメッセージ先頭アドレス
Bアイテム名桁数(スペース含む)
Cメッセージ桁数

やってることは簡単。
アイテム名をワークに転送して、その転送し終わったアドレスから前向きに、スペースか確認していき、スペースではなくなったアドレス+1から今度はメッセージを転送し、それを表示するだけです。

このロジックを使えば、「どうぐ」だけでなく、「『スライム』が、あらわれた!」や「『かいふく』のじゅもんを、となえた!」など、名前+メッセージが簡単に表示できます。

では、次回は「どうぐ」の「すてる」を作成します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

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