検索
<< 2023年10月 >>
1
2 3 4 5 6 7
8
9 10 11 12 13 14
22
23 24 25 26 27 28
29
30 31
広告
駿河屋レトロゲーム
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
カテゴリーアーカイブ
ファン
QRコード

2023年10月11日

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



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

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




命令

意味

動作


GI

GetItem

所持アイテムを増やす


LI

LostItem

所持アイテムを減らす


CI

CheckItem

アイテムを所持しているか調べる


IN

INn

宿屋


IS

ItemShop

店屋


BE

BattleEnemy

敵とイベント戦闘開始


「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




IN

OUT


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



レベルアップ値



レベル

体 力

魔 力

攻撃力

防御力

素早さ

必要経験

習得魔法


1

15

0

4

2

4

0



2

22

0

5

2

4

7



3

24

5

7

3

6

23

回復1


4

31

16

7

4

8

47

攻撃1


5

35

20

12

5

10

110



6

38

24

16

5

10

220



7

40

26

18

8

17

450

毒消


8

46

29

22

10

20

800



9

50

36

30

11

22

1300



10

54

40

35

15

31

2000



11

62

50

40

17

35

2900



12

63

58

48

20

40

4000



13

70

64

52

24

48

5500

戻る


14

78

70

60

27

55

7500



15

86

72

68

32

64

10000



16

92

95

72

35

70

13000



17

100

100

72

39

78

17000

回復2


18

115

108

85

42

84

21000



19

130

115

87

43

86

25000

攻撃2


20

138

128

92

44

88

29000



21

149

135

95

45

90

33000



22

158

146

97

45

90

37000



23

165

153

99

47

94

41000



24

170

161

103

49

98

45000



25

174

161

113

50

100

49000



26

180

168

117

52

105

53000



27

189

175

125

53

107

57000



28

195

180

130

57

115

61000



29

200

190

135

60

120

65000



30

210

200

140

65

130

65535





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



名前

攻撃力

値段


木の棒

2

10


石の剣

4

60


銅の剣

10

180


鉄の剣

15

560


銀の剣

20

1500


勇者の剣

28

9800




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



名前

防御力

値段


木の盾

2

45


鉄の盾

5

400


勇者の盾

10

7400




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



名前

防御力

値段


布の服

2

20


皮の鎧

4

70


銅の鎧

10

300


鉄の鎧

15

1000


銀の鎧

20

3000


勇者の鎧

28

7700




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



名前

防御力

値段


皮の帽子

2

45


鉄の兜

5

400


勇者の兜

10

7400




次に道具。(アイテム区分「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




最後に敵。



名前

体力

魔力

攻撃力

防御力

素早さ

経験値

お金


スライム

3

0

5

3

2

1

2


おおさそり

15

0

18

35

4

16

25


リカント

34

0

40

30

21

40

60


鎧の騎士

55

6

70

71

45

78

150


悪魔の騎士

79

4

94

92

53

130

165


死神の騎士

95

14

105

99

57

172

152


ストーンマン

160

0

100

40

40

155

148


ドラゴン

350

0

130

150

90

0

0




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

マップグラフィック

完了


7

3D表示

完了


8

マップ内移動

完了


9

システムメニュー(道具、魔法、ステータス、ゼーブ)

10%


10

イベント設置・発生



11

メッセージ表示ロジック作成

完了


12

独自スクリプト作成(全20種)

60%


13

イベント進行



14

BGM作曲(ダンジョン、戦闘、エンディング)

33%(ダンジョンのみ)


15

BGM演奏

完了


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雑記
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: