この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
広告
posted by fanblog
2024年07月25日
【ゲーム制作】シミュレーションゲーム 第11回
シミュレーションゲーム 第11回です。
今回は一通りのサブルーチンを用意します。
メインのマシン語設定プログラム「BINSET.BAS」を用意します。

こちらもExcelで作成して、「.BAS」にコンバートして、「.BIN」ファイル作成。
今作のサブルーチンは、今まで作成したものの中から、
■SPRITEセット
■FONTセット(上・中段、下段の2本)
■乱数発生
■16進数を10進数に変換
■VRAMアドレス算出
■中段画像表示画面セット(タイトル表示用)
■全SPRITEを隠す
を用意します。
そして今作のみのサブルーチンとして、
■初期画面表示
■16×16ドット数字表示
を用意します。

更にそれらサブルーチンを用いパラメータ表示用として、
■日付表示
■温度、湿度表示
■所持金表示
■明度・飼育部背景表示
を作ります。

一気に組み上げましたので、次回は表示関係サブルーチンの「デバッグ」作業をします。

2024年07月24日
【ゲーム制作】シミュレーションゲーム 第10回
シミュレーションゲーム 第10回です。
今回は走査線割込み処理を組んでいきます。
今作はSPRITEを多く表示させるので「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と、いつも通り「BGM演奏ルーチン(通常版)」、それに時間経過の概念があるので前作テーブルゲームで使ったタイムカウンタを使います。
Excelから「.BAS」にコンバートして、「.BIN」ファイル作成。

「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」ルーチン。

走査線割り込みルーチン。

BGM演奏ルーチン(通常版)。
この3つはいつものものをそのまま流用。

今回も時間の概念があるので、タイムカウンターを用意します。

今作では、カウンタを「タイムカウンタ」、「分」、「時」、「日」としているので、「タイムカウンタ」と「分」カウンタは60を、「時」カウンタは24を超えたら次のカウンタを+1する。
次回は、サブルーチン集を組んでいきます。

2024年07月23日
【ゲーム制作】シミュレーションゲーム 第9回
シミュレーションゲーム 第9回です。
今回は、面データを作成します。
面データの作成には「MAP8 EDITOR」を利用します。
このブログでは初利用となります。
「MAP8 EDITOR」では、1キャラ8×8ドットとなります。
まずは「設定画面」でMAPのサイズを設定し、FONTデータを読み込みます。

読込んだFONTによっては矢印やカラーが表示されないことがあるので注意が必要。
サイズは1画面分なので横32×縦24となります。(デフォルトのまま)
次に「エディット画面」で、画面を描いていきます。
こんな感じになります。

おぉ、漢字も読みやすくスッキリしている!
結構いい感じではないでしょうか。
次回は「走査線割込み処理」を組んでいきます。

2024年07月22日
【ゲーム制作】シミュレーションゲーム 第8回
シミュレーションゲーム 第8回です。
今回は、他のFONTキャラクタを作成します。
FONTキャラクタの作成には「FONT EDITOR」を利用します。
今作では、画面上部のインフォメーション部と、下部スラー飼育部でFONTファイルを分けます。

こちらはインフォメーション部。
前回作成した漢字入りのFONTデータに枠線と、「MAP8 EDITOR」で操作できるように矢印を追加。

こちらはスラー飼育部。
選択肢用に文字FONTを利用します。(3Dダンジョンロールプレイングゲームの物を流用)
それに伴う枠線と矢印。
あとは明度操作した時の背景と、清掃用の波飛沫、糞、エサ(高・並・安)、スラーを区切るための柵です。
実はこの並びにも意味がありますが、それは後程…。
一旦「.BMP」ファイルを介する事で他のゲームに使ったFONT同士を結合させることができるので、すごく便利。
昔だったら、FONTポチポチ打ち直しだったもんなぁ…。
次回は面データを作成します。

2024年07月21日
【ゲーム制作】シミュレーションゲーム 第7回
シミュレーションゲーム 第7回です。
今回は、FONTキャラクタを作成します。
いつもなら「FONT EDITOR」でいきなりガシガシ描いていくところですが、今回は16×16サイズの漢字FONTが多くあります。
流石にこれを「FONT EDITOR」でいきなり描き込めるほどの才能は私にはありません。
では、どうするか?
久しぶりに実験をしてみます。
まず、MSX1の画面上部1/3(横32FONT×縦8FONT)に、全FONTを並べて表示したものをハードコピーして「.BMP」画像化します。

次に、その画像にWindowsの画像加工ソフト(例は「ペイント」)で、16×16サイズの漢字を書いていきます。

このサイズで漢字を書くと大きく潰れますので、綺麗に見えるよう修正します。
その画像を「BMPtoMSX」で「.SC2」化します。

それを「SC2toFNT」でFONTファイル化します。

まず「DiskManager」で「SC2toFNT」のディスクに「.SC2」ファイルをコピー

次に「SC2toFNT」で「.SC2」データをFONTデータにコンバート

MSXで読み込める「.FNT」ファイル化に成功
出来上がった「.FNT」ファイルの上部1/3のファイルのみ抽出します。(ファイル名1.FNT)

そのファイルを「FONT EDITOR」で開けば、無事FONTデータ化されました!

要するに「.BMP」画像の写真をFONT化するやり方の応用です。
これで漢字や簡単な画像を簡単にFONT化する事が出来ます。
次回は残りのFONTデータを作成します。

2024年07月20日
【ゲーム制作】シミュレーションゲーム 第6回
シミュレーションゲーム 第6回です。
今回は、SPRITEキャラクタを作成します。
SPRITEキャラクタの作成には「SPRITE EDITOR」を利用します。
今作のメインは、飼育するスライムに似た未知の生物「スラー」ですね。
MSX1のSPRITEの弱点である、「水平方向にSPRITEを5枚以上表示すると5枚目以降が表示されない」があるので、大量表示する予定の「スラー」は1色が限度…。
そう考え、1色でも違和感のない「スライム」にしたのですが、やっぱりそこは1色だと味気ない…。
と言う訳で、目を付けて2色にします。
当然、「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」処理は組み込みますが、2色にしてもなるべく点滅は回避したいので、そこはテクニックでカバー。

前作まで同様、ズラし処理を使って水平方向には1枚しか重ならないようキャラクタを作ります。
目を付けると愛嬌のある可愛さになりました。

こんな感じです。
右下の指はカーソルとなります。
それ以外は各コマンド時のカーソルです。
まぁ、何か追加の必要があれば都度描き足していきます。
今回はこれでOKとします。
次回は、FONTキャラクタを作成します。

2024年07月19日
【ゲーム制作】シミュレーションゲーム 第5回
シミュレーションゲーム 第5回です。
今回はイメージディスクを作成します。
今作も部品的なサブルーチンはそのまま利用しますが、画面表示関係が「MAP8 EDITOR」を初めて使うので、それ用のサブルーチンは新たに作成します。
イメージディスクを用意します。
今作もマシン語設定プログラム(「BINSET.BAS」)は、Excelからコンバートするので要りません。
前作テーブルゲーム同様、自機残機の概念がないのでBASIC内での残機ループ処理は不要。 (2024年04月24日記事参照「 【ゲーム制作】面クリア型アクションゲーム 第24回 」)
と言う訳で前作「TBL.BAS」の名前変えて「SLG.BAS」とします。(残機ループが必要な時は「PZL.BAS」か「ACT.BAS」を利用)
走査線割込み処理のロジックも、Excelからコンバートするので不要。
他には「AUTOEXEC.BAS」と、初期値を作成するための「BINSETIN.BAS」も入れておきます。(残機ループがないので「BINSETI2.BAS」も不要)
残りは、エディター使って新たに作成します。

3ファイルだけでイメージディスク作成。
「SLG.BAS」のほとんどをコメントで潰してテスト実行できる準備だけ進めておきます。
次回は、SPRITEキャラクタを作成します。

2024年07月18日
【ゲーム制作】シミュレーションゲーム 第4回

シミュレーションゲーム 第4回です。
今回はメモリマップを作成します。
前回設計した内容に沿って必要なメモリ振りをします。
アドレス
データ名
備考
A000〜A2FF
面データ(32FONT×24FONT=768バイト)
768バイト
A400〜A4EF
スラー変数エリア(16バイト×15匹=240バイト)
240バイト
C000〜CFFF
マシン語エリア
4,096バイト
D000〜D6FF
BGMデータエリア
1,792バイト
D700〜D9FF
走査線割込み処理マシン語エリア
768バイト
E000〜E0FF
変数エリア
256バイト
今作で注目すべきは「スラー変数エリア」。
1匹当たりの変数として、「Y座標」「X座標」「移動用カウンタ」「移動方向」「生まれてからの経過時間」「空腹度」「ストレス度」「分裂カウンタ」「不快カウンタ」等が必要です。
いざ制作に入って忘れてた変数があると困るので予備を幾つか持たせることを考えると1匹当たり16バイト、15匹で240バイトも取ってしまう。
その為、通常の変数エリアとは別にエリアを設けました。
これにより急な仕様変更による1匹当たりの変数増にも柔軟に対応可。
次回は、前作のプログラムを基にメインプログラムを用意します。

2024年07月17日
【ゲーム制作】シミュレーションゲーム 第3回
2024年07月16日
【ゲーム制作】シミュレーションゲーム 第2回

シミュレーションゲーム 第2回です。
今回は詳細設計をします。
安定のこじつけストーリーです。

■■■ ストーリー ■■■
最近、スライムに似た生物「スラー」の飼育が流行っている。
その「スラー」の飼育は難しく、繁殖に成功すれば「スライムマスター」として、一躍有名になれる。
「スライムマスター」目指して「スラー」を飼育してください。前回考えたゲームシステムを基にゲームになるように設計していきます。
■■■ ルール ■■■
オープンパラメータは「温度」「湿度」「明度」「所持金」
隠しパラメータは「空腹」「ストレス」
行動は「温度」「湿度」「明度」の上げ下げと、「食事」「清掃」「移動」「区切」
行動には種類に応じたお金がかかるため、「所持金」が減る
「所持金」は経過時間で増える
「空腹」若しくは「ストレス」が255になるとスライム死亡
スライム全滅でゲームオーバー
スライムはストレス50以下で一定時間経過で分裂し増える
実際の時間1秒が、ゲーム中の1分
ゲーム時間1時間毎に「空腹」+1
ゲーム時間3時間毎に「糞」を1つする
スライムの周りに「糞」があれば1つ毎にゲーム時間1時間毎に「ストレス」+1
スライムの周りに他のスライムが5匹以上いればゲーム時間1時間毎に「ストレス」+1
時間帯により、スライムの好む温度や湿度、明度が変化し、不快な環境になると1時間毎に「ストレス」+1
ストレスのかからない環境に居れば1時間毎に「ストレス」-1
ゲーム時間で5日(実時間2時間)経過時に15匹に増えていればエンディング
「食事」で3種類のエサ(金額の高い物程空腹減)を選択し、カーソルで任意場所に置く
「移動」でカーソルでスライムを摘まんで任意場所に移動させる
「清掃」は一律で糞を片付ける
「区切」でスライムが移動できない棒(縦棒・横棒)を任意場所に設置する事でスライム同士の接触を防げる
流石はシミュレーションゲーム。
細かい設定が必要ですね。
次回は詳細設計の続き、画面構成を考えていきます。
