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

2023年10月11日

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



4_19_1.png
3Dダンジョンロールプレイングゲーム 第24回目です。

さて、今回からは残りのスクリプト命令を組み込んでいきます。
これがないと、イベントが作成できませんので、先に全部組み込んでしまいます。
今回の3Dロールプレイングゲームで必要な命令は、残り6つ。































命令意味動作
GIGetItem所持アイテムを増やす
LILostItem所持アイテムを減らす
CICheckItemアイテムを所持しているか調べる
ININn宿屋
ISItemShop店屋
BEBattleEnemy敵とイベント戦闘開始

「GI」は、宝箱を開けた際に、青い鍵を所持させます。
「LI」は、青・赤鍵を使った際に、持ち物から消します。
「CI」は、宝箱とゲートで、それぞれの鍵を持っているかチェックします。宝箱のイベントのフラグを「CF」で調べても代用可。
「IS」と「IN」は説明要らずですね。
武器屋と道具屋は、売る物が異なるだけで命令は同じです。商品点数が多ければ、武器屋と防具屋を分けてもいいですね。
「BE」は、ボス戦闘を開始します。

まず事前準備として、以前に公開した「アイテムデータ登録ツール」で仮の道具データを登録します。
仮でもデータを入れておかないと、「IS」等ちゃんと動いているかのテストが出来ません。
同様に、「BE」テスト用に敵データも仮で登録します。

次回は、一番大変であろう「IS」を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月10日

マシン語からのファイル制御

4_19_1.png

今回3Dロールプレイングゲーム作ってて気付いたんですが、私はマシン語でフロッピーディスクを制御したことがありませんでした。
おおー、驚愕の事実です。

そういえば、ファイルの読込などは全てBASICで行ってからマシン語コールしていたので、そう言われればそうかも。
ロールプレイングゲームなんかも、マップ変更する度に一度BASICに戻ってた気がします。

特にやり方が分からないとかの理由で、そうしていた訳ではありません。
それで困らなかったので、する必要がなかった、しようと思わなかった。というのが、正直なところです。

うーん、確かにマシン語からどうやってファイルを読み込むのか、知識として持っていない…。
今更そんな事に気付くとは…。
一度マシン語からディスク制御できるか試してみます。
上手くいったらLaboratoryのテーマに挙げようかな。

これが出来れば当時の自分を超えるのか!?
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記

2023年10月09日

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



3Dダンジョンロールプレイングゲーム 第23回目です。

さて、開発順序として先に戦闘以外をすべて完成させる事にします。
前回書いた通り、戦闘のみ別プログラムにする可能性が出たからです。(2023年10月4日記事参照「【ゲーム制作】3Dダンジョンロールプレイングゲーム 第21回」)

と、言う訳で今回は残りのスクリプトを組むための準備として、メッセージ中に変数の値を表示する仕組みを考えます。
メッセージ中に変数の値を表示とは何か?
代表的な例は、ロールプレイングゲームならば必須のステータス表示ですね。
あとは、戦闘時のダメージ表示なんかですね。

実は、この2例、表示方法が異なるのです。
ステータス表示は右詰め。
ダメージ表示は左詰め。
シューティングゲームの得点表示とは異なり、頭の「0」は消す「ゼロサプレス」も必要です。

以前に「Laboratory」でやった、Laboratoryテーマ5「16ビットアドレス値の10進数表示」の表示部分を改造します。
そのままのロジックで表示させると、
10_9_1.png

これを改造し「ゼロサプレス」すると、
10_9_2.png

更に改造し、変数&HD005に桁数を代入しコールすると、指定桁数で右詰め表示されます。
桁数「4」で表示すると、
10_9_3.png

更に、変数&HD005に「0」を代入しコールすると、左詰め表示されます。
10_9_4.png

これが出来れば、ステータス表示(右詰め)や、店屋の商品値段表示(右詰め)、戦闘のダメージ表示(左詰め)等が出来るようになります。

改造内容は下記の通り。
16進数→10進数変換ロジックは、ほぼいじっていません。
10_9_5.png

表示ロジックは大幅に改造してあります。
直接VRAMに描き込まず、メッセージ表示ワーク内に、&HD005の値に応じて格納するように改造しました。
10_9_6.png
















INOUT
HL表示する値なし
DE格納先先頭アドレス


posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月08日

細かく修正J

4_19_1.png
ゲーム製作」カテゴリの、全記事の記事タイトルをルールに則って変更しました。(2023年10月6日記事参照「ゲーム制作記事タイトル記述ルール」)

ダウンロード」のサンプルに、
Laboratoryテーマ23「選択肢メニューを開いて、選択したい」その@
Laboratoryテーマ23「選択肢メニューを開いて、選択したい」そのB
のサンプルを掲載忘れていましたので、追加しました。

技術資料」カテゴリを新設しました。
グローバルメニューにも追加しました。

ダウンロード」に追加で新規公開したゲームやツール、サンプルの記事へのリンク追加、「Laboratory」テーマメニューの公開分記事へのリンク追加。

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

2023年10月07日

技術記事纏め

4_19_1.png

このブログは、MSXでのプログラミングをメインとしており、ハードウェア的な事に関しては解説しない方針でした。
(私の下手な説明より、解り易く詳細に説明されている方がたくさんいますので…。)
しかし、プログラミングの説明過程で、どうしてもハードウェア的な事も説明しなければならない時(主にBIOS等)は、表など用いて解り易く説明するよう心がけています。
ただ、せっかく説明したのに記事に埋もれてどこへ行ったのか分からなくなるともったいないので、新たに「技術資料」カテゴリを作り、インデックス代わりにリンク集を作ります。
技術的な記事が増えれば、随時追加していきます。

posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 技術資料

2023年10月06日

ゲーム制作記事タイトル記述ルール

4_19_1.png

突然ですが、「ゲーム制作」カテゴリの記事タイトルの記述ルールを決めます。
現在、「3Dダンジョンの考え方〇」となっています。
ゲーム製作を始める際、何も考えず付けたタイトルですが、現在もこれが続いています。
これを、「【ゲーム制作】3Dダンジョンロールプレイングゲーム 第1回」に変更します。
これだと一目でゲーム制作の記事だと分かるし、「BLOG RANKING」のように〇番号が表示エラーになるサイトでも、ちゃんと表示できるようになります。

本業が忙しく、余り時間が取れないので、他の記事の修正と併せて順次改訂していきます。
全記事改訂が終わったら改めて報告します。

うーん、他のカテゴリも解り易いように、タイトルにカテゴリ名を表記した方が良いかな?
時間があれば検討してみます。

2023年10月05日

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





3Dダンジョンロールプレイングゲーム第22回目です。
そういえば「詳細設計」と「シナリオ」を載せるのを忘れてました。

詳細設計とは、その名の通り詳細を決める事です。
具体的に言うと、敵を攻撃した時のダメージ値の計算式や、攻撃ミスの確率、会心の一撃の確率など、ゲームの根幹に係る設計の事です。
他には、
・アイテム毎の攻撃力や防御力、値段
・プレイヤーのレベルアップ時の能力向上値、魔法習得
・アイテム所持数(32個)、魔法習得数(6種)
・敵のパラメータ
など、多岐に渡ります。
これを決めておかないと、変数をいくつ確保するかなどが、決まりません。

ほぼ全てのパラメータ値を、今回は「ドラクエT」と同じで行きます。
計算式出展:『GCGX』
https://gcgx.games/dq1/damage.html

「攻撃力」=「ちから」、「防御力」=「素早さ÷2」で計算します。
あと、「ドラクエT」に兜はないので、盾の防御力と金額を半分にし、同値で兜を用意しました。

ダメージ計算




















プレイヤー→敵ダメージ値 (乱数*(攻撃力-敵防御力/2+1)/255+攻撃力-敵防御力/2)/4
敵→プレイヤーダメージ値

(乱数*(敵攻撃力-防御力/2+1)/255+敵攻撃力-防御力/2)/4

若しくは

乱数*(敵攻撃力/2+1)/255+2
敵の先制攻撃率(素早さ*乱数(0〜255))<(敵防御力*乱数(0〜63))
プレイヤー逃走判定(素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜63))
敵逃走判定

攻撃力(武具除く)/2≧敵攻撃力

且つ

逃走確立1/4
会心の一撃率確率1/32、攻撃力-(攻撃力/2*乱数)/256


レベルアップ値


























































































































































































































































































レベル体 力魔 力攻撃力防御力素早さ必要経験習得魔法
11504240
22205247
324573623回復1
4311674847攻撃1
5352012510110
6382416510220
7402618817450毒消
84629221020800
950363011221300
1054403515312000
1162504017352900
1263584820404000
1370645224485500戻る
1478706027557500
15867268326410000
16929572357013000
1710010072397817000回復2
1811510885428421000
1913011587438625000攻撃2
2013812892448829000
2114913595459033000
2215814697459037000
2316515399479441000
24170161103499845000
251741611135010049000
261801681175210553000
271891751255310757000
281951801305711561000
292001901356012065000
302102001406513065535


次に武器。(アイテム区分「1」)































名前攻撃力値段
木の棒210
石の剣460
銅の剣10180
鉄の剣15560
銀の剣201500
勇者の剣289800


次に盾。(アイテム区分「2」)



















名前防御力値段
木の盾245
鉄の盾5400
勇者の盾107400


次に鎧。(アイテム区分「3」)































名前防御力値段
布の服220
皮の鎧470
銅の鎧10300
鉄の鎧151000
銀の鎧203000
勇者の鎧287700


次に兜。(アイテム区分「4」)



















名前防御力値段
皮の帽子245
鉄の兜5400
勇者の兜107400


次に道具。(アイテム区分「9」)



























名前効果値段
薬草体力23〜30回復24
毒消し草毒状態回復100
エリクサー体力・魔力・状態改善回復10000
赤い鍵宝箱を開ける鍵7800
青い鍵ゲートを開ける鍵


次に魔法。































名前効果消費魔力
回復1体力10〜17回復4
攻撃1敵に5〜12ダメージ2
戻るスタート位置に戻る8
回復2体力58〜100回復10
毒消毒状態回復6
攻撃2敵に58〜65ダメージ5


最後に敵。




















































































名前体力魔力攻撃力防御力素早さ経験値お金
スライム3053212
おおさそり150183541625
リカント3404030214060
鎧の騎士55670714578150
悪魔の騎士794949253130165
死神の騎士95141059957172152
ストーンマン16001004040155148
ドラゴン35001301509000


次にシナリオです。
今回はマップが小さいので、シナリオはほぼないに等しいです。
シナリオとは、要するに謎解きのようなものです。
何もないのも寂しいので、サンプルに一つ宝箱を用意します。
イベント数は6個。




















1武器屋
2道具屋
3宿屋
4宝箱
5ゲート
6ボス

10_5_1.png
ルートはこうです。
・道具屋さんに赤い鍵が売られている。(高額)
・宝箱がある。(ゲートで赤い鍵を使うまでは「何かある気がする。」で宝箱発見できず。)
・宝箱は赤い鍵で開く。
・宝箱の中身は青い鍵だった。
・道中、鍵のかかったゲートがある。(赤い鍵を使うと「遠くで何かの仕掛けが動いたような音がする…。」となり、宝箱が見付かるようになる。)
・ゲートは青い鍵で開く。

これを最初に考えておかないと、必要なアイテムや、イベントの配置場所が決まらないので最初に決めます。
ただ、最初は絶対に必要なイベントと、アイテムのみ決めておいて、後はそれに付属する形で決めていけばいいです。

以上で詳細設計とシナリオとなります。
実際はゲームに組み込んでテストプレイしながら値を調整していきますので、そこまでガチガチに決めておく必要はありません。
今回はすでにあるゲームの値をそのまま使っているので、調整も少なくて済むかと思います。

posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月04日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第21回目です。
前回、製作状況の進捗確認しました。
現在、BGM鳴らしながらマップ移動して、システムメニュー開いてメッセージを表示するまではできました。
後は大きく「敵との戦闘」、「プレイヤー関係」、「スクリプトの残り」の製作となります。

さて、ここで問題が発生しました。
プログラム見て気付かれている方もいるかとは思いますが、プログラム領域がなくなりそうです。
プログラム領域、&HC000~&HCFFFまでなのに、既に&HCA00まで使いました。
敵との戦闘、ただでさえ大きなロジックなので、&HCFFFまでではまず収まりません。
メモリ節約せずに突き進んできましたので、まぁ、仕方ないけど…。

解決策は2つあります。
@変数領域を移動させプログラム領域を広げる。
Aイベント進行は何とか残りのメモリでできそうなので、敵との戦闘だけ別プログラムにする。

実はどちらも大変です。
@以前にも書いた通り、MSXには文字の置き換え機能がありません。
変数書き換えは、完全手作業なので大変です。
変換し忘れたら、当然暴走です。
ハンドアセンブルの厳しいとこです。

A別プログラム化は、敵との戦闘になったら敵グラフィックの読み取りと同時に、敵戦闘プログラムもダウンロードし、実行する方法です。
まぁ、まだこちらの方が楽は楽かな…。

スマートな方法は当然@です。
でも、技術的にはAかな?(大した事ないけど…。)
イベント進行完成までに、どちらにするか考えます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月03日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第20回目です。
今回はゲームの進捗管理をします。

【ゲーム製作進捗】


































































































工程作業進捗
1ゲーム設計(規模、詳細、メモリマップ)完了
2シナリオ作成完了
3オープニグ作成完了
4タイトル作成(仮)完了
5マップ設計(2D)完了
6マップグラフィック完了
73D表示完了
8マップ内移動完了
9システムメニュー(道具、魔法、ステータス、ゼーブ)10%
10イベント設置・発生
11メッセージ表示ロジック作成完了
12独自スクリプト作成(全20種)60%
13イベント進行
14BGM作曲(ダンジョン、戦闘、エンディング)33%(ダンジョンのみ)
15BGM演奏完了
16本番データ登録
17敵グラフィック(全6種)
18敵遭遇
19敵戦闘
20レベルアップ
21道具屋(武器屋)
22宿屋
23エンディング

うーん、全体で30%と言ったところでしょうか…。
難関部分である、「敵との戦闘」が手付かずですので、まだまだ先は長いです。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月02日

MSX語り

4_19_1.png

MSXの良さって何だろう?
私はMSXとWindowsでしかプログラミングした事がないので大層な回答は出来ません。
しかし、SCREEN2のような独特な不便さ(8ドット毎2色)や、SCREEN1.5のような柔軟さはとても好きです。
MSX2のSCREEN5のような、解像度は低いが完全なグラフィックモードだと、今となってはMSXらしさがないと思うのは私だけでしょうか?

今回、本当に久しぶりにMSXで3Dロールプレイングゲームを作っていて感じたのですが、速度やらメモリやら画像やらの制約だらけの中での製作が、とても楽しく感じます。
逆に目新しささえ感じます。
MSX2で、SCREEN5以降を使うとMSX1での制約からはかなり解放されますが、私的にはMSXで開発する意味がなくなるので使いません。
もし、MSX2の機能を使うとしても、コナミの「スペースマンボウ」のようにSCREEN1.5を使い続けると思います。
9_5_2.png
画像出典: 『GameFAQS』 スペースマンボウ MSX2版
https://gamefaqs.gamespot.com/msx/917251-space-manbow/images?pid=917251&img=6


色(16色→512色中16色)とSPRITE(横4枚並んだら5枚目以上は消える→8枚)、メモリ(VRAMの空き容量をメモリ化)の制約が外れるだけでも大きいです。

なにより、SCREEN5以降を使いゲーム製作するくらいなら、MSXではなくWindowsでゲーム制作します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記
検索
<< 2023年10月 >>
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 31        
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード