2023年08月17日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第10回
3Dダンジョンロールプレイングゲーム第10回目です。
今回は、前回設定した表示ワークの内容を表示する順番と条件を考えます。
以前に書いたパターン番号で説明します。
プレイヤーに近い順に壁があるパターンを優先して描画していきます。
まず、Vのパターン。
1歩前に壁があるパターン。
この場合は、UVWを壁描画し、X描画に飛びます。
次、2歩前が壁があるパターン。
あとは、壁がないパターン。
次はWのパターン。
1歩前右に壁があるパターン。
あとは、壁がないパターン。
次はUのパターン。
Wのパターンの左右逆に同じです。
次はXのパターン。
左に壁があるパターン。
壁描画し、T描画に飛びます。
左に壁がなく、その1歩前に壁があるパターン。
あとは、壁がないパターン。
最後Tのパターン。
Xのパターンの左右逆に同じです。
描画条件、描画順も、ほぼこのままで大丈夫です。
それ以外のパターンは、ダンジョンの構造上発生しません。
と言うか、発生しないような構造にしました。(奇数行と奇数列を壁とするダンジョン。)
次回は、今回考えたロジックに則った描画ルーチンを組みます。
2023年08月12日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第9回
3Dダンジョンロールプレイングゲーム第9回目です。
今回は、プレイヤーの向きに対応した2Dマップデータを読み込み、表示ワークを設定します。
因みに3D表示のやり方は、人によっても、機種によっても、言語によってもやり方は千差万別です。
「この人は、こんなやり方なんだ。」程度に読んで下さい。
表示ワークへは、前回作った2Dマップからデータ取得します。
プレーヤーの向きに対して、@〜Gのポジションの地形を表示ワークに設定します。
例えば、前を向いている時は、下図のようにワークを設定します。
ワーク | @ | A | B | C | D | E | F | G |
壁 | 壁 | 壁 | 通路 | 通路 | 壁 | 壁 | 壁 |
左を向いている時は、下図のようにワークを設定します。
ワーク | @ | A | B | C | D | E | F | G |
通路 | 壁 | 通路 | 通路 | 壁 | 通路 | 通路 | 通路 |
この方法ですと、どこに移動しようと、どの向きだろうとワークさえちゃんと設定できていれば3D表示可能ですので、表示ルーチンは単純なものにできます。
次回は、いよいよ今回設定した表示ワークから、3D表示ロジックを考えます。
2023年08月09日
MAP8 EDITOR Ver.2.5公開!
マウスの不具合を修正したバージョンです。
コントローラー選択部分のプログラムを、一通り見直して修正してあります。
すべてのコントローラー・ポートでの動作確認済みです。
バグ修正なので本来ならバージョンを0.1上げる程ではないのですが、0.01単位がないので止む無くVer.2.5とします。
こちらも前2ツール同様、カラーパレットのカラー上で右クリックすると、全カラーパレットを初期色に戻す機能がありました。
説明文に追加しておきます。
1日1本の修正版公開はキツイです…。
プログラム修正して、エディタ開発用ディスクから、そのツール分のプログラムだけコピーしてイメージディスク作って、zip化してアップロード。
動作確認後、紹介記事も改訂して、初めて終了…。
やる事多すぎ!
サラリーマンにはキツイです。
「MAP8 EDITOR Ver.2.5」紹介ページへ
2023年08月08日
FONT EDITOR Ver.2.5公開!
マウスの不具合を修正したバージョンです。
コントローラー選択部分のプログラムを、一通り見直して修正してあります。
すべてのコントローラー・ポートでの動作確認済みです。
バグ修正なので本来ならバージョンを0.1上げる程ではないのですが、0.01単位がないので止む無くVer.2.5とします。
こちらも、「SPRITE EDITOR」同様、カラーパレットのカラー上で右クリックすると、全カラーパレットを初期色に戻す機能がありました。
説明文に追加しておきます。
絶対にそれ以外にも忘れてる機能があると思います。
もし、正式にバージョンアップすることがあればその時に、全機能洗い出します。
「FONT EDITOR Ver.2.5」紹介ページへ
2023年08月07日
SPRITE EDITOR Ver.2.5公開!
マウスの不具合を修正したバージョンです。
コントローラー選択部分のプログラムを、一通り見直して修正してあります。
すべてのコントローラー・ポートでの動作確認済みです。
バグ修正なので本来ならバージョンを0.1上げる程ではないのですが、0.01単位がないので止む無くVer.2.5とします。
あと、プログラム見ていて気付いたのですが、カラーパレットのカラー上で右クリックすると、全カラーパレットを初期色に戻す機能がありました。
説明文に追加しておきます。
「SPRITE EDITOR Ver.2.5」紹介ページへ
2023年08月06日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第8回
3Dダンジョンロールプレイングゲーム第8回目です。
今回は、「【ゲーム制作】3Dダンジョンロールプレイングゲーム 第4回」で決めた、15パターン分のキャラクタデータを作成します。
キャラデータ作成には、「【ゲーム制作】3Dダンジョンロールプレイングゲーム 第7回」で紹介した、「キャラクタを読み込んでキャラクタデータファイル化」するツール(以下、「CHARSET.BAS」と呼ぶ)を使います。
事前に「CHARSET.BAS」を3DダンジョンRPGのディスクにコピーしておきます。
まず、「FONT EDITOR」でマップフォントを読み込み。
マウスが動くようになったので、少しだけ改訂。
3D表示が出来るようになったら、見栄えが良くなるようにFONT増やします。
なので、今はこれでOK。
「Ctrl」+「STOP」で強制終了の後、3DダンジョンRPGのディスクと入替、「CHARSET.BAS」をロード。
プログラム下部にあるDATA文に、15パターン分のキャラクタを配置し、1行ごとに忘れず「RETURN」。
15パターン分、DATAセットし終わったら、RUN実行。
15パターン分のデータがBSAVEで格納され、それぞれの開始アドレスが一覧表示されるので、ハードコピーして保存。
これで、キャラクタデータが完成しました。
「CHARSET.BAS」があったから簡単にできたけど、なかったらDATA文にひたすらキャラクタコードを打ち込まないといけないという苦行が…、あぁ、考えただけで恐ろしい…。(昔はそれをやってたんですよね…。)
では次回は、「【ゲーム制作】3Dダンジョンロールプレイングゲーム 第6回」で作成した2Dのマップデータを向きに合わせて、5データ分読み込んで、描画ワークに設定する仕組みを考えます。
2023年08月02日
MAP16 EDITOR 活用方法
「MAP16 EDITOR」で作ったデータの活用方法について説明します。
この「MAP16 EDITOR」で作成したデータは、保存すると各データ下記アドレスに保管されBSAVEされます。
そのデータを表示してゲームに使えるようにするサンプルプログラムを用意しました。
起動すると、下画面が表示されます。
俗に言う、MSX1のSCREEN1.5を使用しています。
昔に「MAP16 EDITOR」で作成したマップデータを使って作ったゲーム(製作途中も含め)を探したのですが見付からず、「MAP16 EDITOR」自身のマップ表示ルーチンは速度度外視(遅い)のため、一からロジック組み直しました。
そのため時間がなく、今回は1キャラクタスクロール(16ドット)の全画面表示です。(昔は市販ゲームでも結構ありましたね…。)
1FONTスクロール(8ドット)をするための仕組みは組み入れてありますので、表示範囲指定可能な1FONTスクロール版は後日公開します。(ロジック的には、メモリ内で一旦1列分のキャラクタを展開(2FONT×2FONT×マップ表示横幅)し、1FONTスクロール2回をセットにして表示します。)
「MP16SMPL.BAS」【ダウンロード】
自作プログラムに組み込むには、下記の部分が必要です。
このプログラムでは、最も時間のかかるであろうマップ表示部分をマシン語で組んでいます。
「MAP8PRT.BIN」と異なり、アドレス計算もマシン語内で行っているため、描画速度も向上しています。
「MAP16PRT.BIN」(70行)
下記機能を提供します。
マシン語アドレスを変えたい人用に、MAP16PRT.BIN作成用のBASICプログラムを用意しました。
起動すると、MAP16PRT.BINを作成します。
「MAP16PRT.BAS」【ダウンロード】
250行〜280行:マップ表示させたい左上座標の、マップデータ上のアドレスを算出。
290行〜380行:マップデータから1キャラクタデータを読み取り、横1列分のマップをメモリ上に展開。
390行〜470行:メモリ上に展開した1列分のデータをVRAMに上から転送。それを縦列数分繰り返す。
この「MAP16 EDITOR」で作成したデータは、保存すると各データ下記アドレスに保管されBSAVEされます。
メモリアドレス | データ種別 | 詳細 |
&H9C00〜&H9FFF | キャラクタデータ | 256キャラクタ×4バイト=1,024バイト |
&HA000〜&HBFFF | マップデータ | 最大&H2000=8,192バイト |
そのデータを表示してゲームに使えるようにするサンプルプログラムを用意しました。
起動すると、下画面が表示されます。
俗に言う、MSX1のSCREEN1.5を使用しています。
昔に「MAP16 EDITOR」で作成したマップデータを使って作ったゲーム(製作途中も含め)を探したのですが見付からず、「MAP16 EDITOR」自身のマップ表示ルーチンは速度度外視(遅い)のため、一からロジック組み直しました。
そのため時間がなく、今回は1キャラクタスクロール(16ドット)の全画面表示です。(昔は市販ゲームでも結構ありましたね…。)
1FONTスクロール(8ドット)をするための仕組みは組み入れてありますので、表示範囲指定可能な1FONTスクロール版は後日公開します。(ロジック的には、メモリ内で一旦1列分のキャラクタを展開(2FONT×2FONT×マップ表示横幅)し、1FONTスクロール2回をセットにして表示します。)
「MP16SMPL.BAS」【ダウンロード】
自作プログラムに組み込むには、下記の部分が必要です。
行番号 | 内容 | 説明 |
70 | MAP16PRT.BIN | キャラクタ単位マップ表示マシン語プログラム |
150〜180 | マップ表示値指定 | マップ全体の縦横幅と、表示する左上の座標を指定 |
220 | マップ表示サブルーチン | マップ表示値を指定し、220行のサブルーチンをコールするとマップを表示するサブルーチン |
このプログラムでは、最も時間のかかるであろうマップ表示部分をマシン語で組んでいます。
「MAP8PRT.BIN」と異なり、アドレス計算もマシン語内で行っているため、描画速度も向上しています。
「MAP16PRT.BIN」(70行)
下記機能を提供します。
実行アドレス | 機能 | 詳細 |
&HC0D0 | マップ表示 | 指定されたマップ表示値から表示される先頭アドレスを算出しマップを表示する 最大16キャラクタ×12キャラクタ |
マシン語アドレスを変えたい人用に、MAP16PRT.BIN作成用のBASICプログラムを用意しました。
起動すると、MAP16PRT.BINを作成します。
「MAP16PRT.BAS」【ダウンロード】
250行〜280行:マップ表示させたい左上座標の、マップデータ上のアドレスを算出。
290行〜380行:マップデータから1キャラクタデータを読み取り、横1列分のマップをメモリ上に展開。
390行〜470行:メモリ上に展開した1列分のデータをVRAMに上から転送。それを縦列数分繰り返す。
2023年08月01日
MAP16 EDITOR Ver.2.2
ツール | 6 | 製作年 | 1990〜2023年 |
タイトル | 『 MAP16 EDITOR Ver.2.2 』 | ||
対応機種 | MSX1、MSX2、MSX2+、MSXturboR | ||
ダウンロード | リンク先へ |
『起動時』
起動するとコントローラーの選択です。
マウスが絶対お奨めです。
『基本操作』
操作はマウスを基準としています。
「+」カーソルを動かし、所定の位置でクリックすることで任意の動作を行います。
マウス移動:キーボードのカーソルキー、ジョイスティックの十字キー
マウスの左クリック:キーボードの「スペース」バー、ジョイスティックのAボタン
マウスの右クリック:キーボードの「GRAPH」キー、ジョイスティックのBボタン
『サンプルデータ』
操作を覚えるためのサンプルデータとして、上記データを「SAMPLE.M16」と「SAMPLE.FNT」としてディスク内に同梱してあります。
『設定画面説明』
『エリア説明』
『コマンド説明』
表記 | ボタン | クリック | 命令名 | 詳細 | |
1 | CHANGE EDITOR | 左 | エディット | エディット画面へ移行 | |
2 | CHANGE | 左 | チェンジ | キャラクタエリアに表示されるキャラクタを変更(横16キャラ×縦4キャラ×4頁=256キャラ) | 3 | CLEAR | 左 | クリア | キャラクタエリアをクリア |
右 | 全クリア | キャラクタエリア全4頁分をクリア | |||
左 | フル | キャラクタエリアを選択されたフォントで埋める | |||
左 | 全フル | キャラクタエリア全4頁分を選択されたフォントで埋める | |||
4 | R | 左 | 赤値 | 選択されたカラーのRGB赤値を0〜7まで指定 | |
5 | G | 左 | 緑値 | 選択されたカラーのRGB緑値を0〜7まで指定 | |
6 | B | 左 | 青値 | 選択されたカラーのRGB青値を0〜7まで指定 | |
7 | XPOS | 左 | 横幅 | マップ全体の横幅を指定する(1単位) | |
右 | 〃 (10単位) | ||||
8 | YPOS | 左 | 高さ | マップ全体の高さを指定する(1単位) | |
右 | 〃 (10単位) | ||||
9 | SAVE | 左 | セーブ | データを保存する(空入力でキャンセル) | |
10 | LOAD | 左 | ロード | データを呼び出す(空入力でキャンセル) フォントデータ展開の際にマップデータを破壊するので、先にフォントデータを読み込んで下さい | |
11 | FONT | 左 | フォント | フォントデータを呼び出す(空入力でキャンセル) フォントデータ展開の際にマップデータを破壊するので、マップ編集途中でフォントを切り替える際は、マップデータをセーブし、切り替え後ロードして下さい 読み込んだフォントによっては▲▼が分らなくなるのでご注意下さい | |
12 | NEXT | 左 | 次メニュー | 将来拡張用(現在未使用) |
『エディット画面説明』
『エリア説明』
エリア名 | 詳細 | |
1 | エディットエリア | 左クリックで選択されたキャラクタを描きます 右クリックで「描画カーソル」を移動します 連続で描画したい時は「キャラクタエリア」の描きたいキャラクタを右クリックで「描画カーソル」に描画し、「描画カーソル」は右へ移動します ▼▲で表示範囲を下上右左へ移動 |
2 | コマンドエリア | をクリックすることで各命令を実行する。(コマンド説明参照) |
3 | キャラクタエリア | 表示されたキャラクタを左クリックすることで、キャラクタを選択します(そのキャラクタに「キャラクタ選択カーソル」が付きます) |
『コマンド説明』
表記 | ボタン | クリック | 命令名 | 詳細 | |
1 | CHANGE | 左 | チェンジ | フォントエリアに表示されるフォントを変更 | 2 | CLEAR | 左 | クリア | エディットエリアをクリア |
右 | 全クリア | マップ全体をクリア | |||
左 | フル | エディットエリアを選択されたフォントで埋める | |||
左 | 全フル | マップ全体を選択されたフォントで埋める | |||
3 | SETTING | 左 | セッティング | 設定画面へ移行 |
2023年07月25日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第7回
3Dダンジョンロールプレイングゲーム第7回目です。
相変わらず遅々として進まない...。
今回は3Dダンジョン表示の準備として、キャラクタデータをデータ化します。
これは、Laboratoryで紹介した、「任意サイズのFONTキャラクタを指定座標に表示」させるサブルーチンで表示させる為です。
しかし、いくらデータ化といえど、DATA文中に直接キャラクタコードを打ち込んでいくのは非常に大変です。
そこで私が昔使っていた、キャラクタを読み込んでキャラクタデータファイル化する便利なプログラムを公開します。
これがあるのとないのとでは、労力が段違いです。
まぁ、大層なことはしていないので、ツール化はしません。
CHARSET.BAS【ダウンロード】
使い方は、FONTEDITORでフォントを作成し、保存。
そのまま「Ctrl」+「STOP」で強制終了し、上のプログラムをLOAD。
FONTが残ったままの状態で、プログラムを「LIST」表示し、プログラム下部のDATA文の中にキャラクタを描くように配置していきます。
この時、1行毎の「ENTER」を忘れないように注意。
データ登録ルールとして、1キャラクタデータの最初に、キャラクタ名を登録。(3,160行)
1キャラクタデータの終わりには「FF」を登録(4,150行)、そのまま2キャラ目を配置してください。
データが終わった最後のDATA文に「END」を入れてください。(4,160行)
登録が終わったら「RUN」実行。
「キャラクタ名」、「データ開始アドレス」を一覧化して終了します。
次回は、このツールを使いキャラクタデータを作成します。
2023年07月19日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第6回
3Dダンジョンロールプレイングゲーム第6回目です。
遅々として進まない...。
今回はダンジョンデータの準備をします。
「【ゲーム制作】3Dダンジョンロールプレイングゲーム 第2回」の時にEXCELを使って作ったマップデータを、「MAP8EDITOR」でデータ化するだけです。
まず、「MAP8EDITOR」の領域を21×21マスにセットします。
次に、あればFONTを読み込みます。
なくても支障ありませんが、とりあえずでも構わないのでFONTセットしておくと、後で分かり易いです。
次に、「MAP8EDITOR」のEDIT画面でダンジョンを描いていきます。
この時、事前に通路のキャラクタコード、壁のキャラクタコードを決めておく必要があります。
キャラクタ | コード | 説明 |
あ | &H91 | 壁(青) |
い | &H92 | 通路(白) |
階段や扉などは後で大丈夫です。
まずは、3Dダンジョンの中を歩けるようにします。
因みに階段や、お店などは壁にめり込ませる予定です。
複数階層のダンジョンを作る場合は何階のデータか判るよう、ファイル名を「RPGMP3.MP8」等工夫して下さい。(例はRPGのマップ3階データ、拡張子はMAP8EDITORデータ)
これが出来れば、次はこのデータを読んで3Dに表示します。
次回はいよいよ3Dダンジョンの描画について考えます。