検索
<< 2024年12月 >>
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コード

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

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月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月01日

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



10_1_1.png
3Dダンジョンロールプレイングゲーム第19回目です。
今回はBボタンでメニュー表示をできるようにします。

コントローラーが、ジョイスティックの場合は「Bボタン」で、BIOSの「GTTRIG」(&H00D8)を利用します。
コントローラーが、キーボードの場合は「GRAPHキー」で、Laboratoryテーマ??13「 「GRAPH」キーが押されたか調べたい 」でやった、BIOSの「SNSMAT」(&H0141)を利用します。

そして前回メニュー(BASICからマシン語呼び出し)とは異なり、今回はマシン語内からメニュー選択画面を開きます。
メニュー項目は、
「どうぐ」
「まほう」
「ステータス」
「セーブ」
位かな?
キャンセルは当然ゲームに戻ります。
今回は何を選択してもとりあえず、ゲーム終了するようにしておきます。
10_1_2.png

次回はそれぞれの処理を作成していきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年09月30日

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



3Dダンジョンロールプレイングゲーム第18回目です。
BGM演奏に、当初はASCIIの「MuSICA」を利用予定でしたが、思った以上にメモリが厳しいので、「 簡易BGMプレイヤー 」を利用したBGMに変更します。 (2023年5月20日記事参照「 3Dダンジョン 」)
Windowsでの製作が長かったので、メモリを節約すると言う事を忘れていました...。

BGMの演奏には、Laboratoryテーマ??10「 マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい 」でやったとおり、「走査線割込み」を利用します。
事前にLaboratoryで走査線割込みのサンプルプログラムを作ったので今は大丈夫ですが、最初、走査線割込みの知識をすっかり忘れていて、何すればいいんだっけ!?状態でした。
…と言う訳で、上手くいくのか心配だったので、もっと後の方の予定だったBGM演奏を前倒しします。

BASIC、マシン語プログラム共にLaboratoryテーマ??10「 マシン語処理中に走査線割り込みを使ってBGMを鳴らしたい 」での追加分を組み込んで実行。

BASIC部
9_30_2.png

マシン語部
9_30_1.png


BGMは、過去に製作した迷宮アクションゲームの「 TOWER 」のBGMを再利用しております。
ちょうど雰囲気的にもよいかと…。

よし、問題なくBGMが鳴りました。
そう言えば、メモリマップにBGMデータ領域を用意するのを忘れてた…。
&HA800~&HAFFFまでが空いていたので、そこの&HA800〜&HA855をBGMデータ領域にしています。

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

2023年09月26日

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



9_27_1.png
3Dダンジョンロールプレイングゲーム第17回目です。
今回はタイトル画面に「NEW GAME」/「CONTINUE」のメニュー選択を実装します。

「NEW GAME」選択時は、オープニング開始。
「CONTINUE」選択時は、新たな選択ウィンドウが開き、セーブファイル選択となります。

セーブファイル数ですが、小さなゲームなので1つでいいかなとも思ったのですが、メニュー選択のサンプルも兼ねているのでとりあえず3ファイル位選べるようにすればいいかな?
9_27_2.png
基本的にファイル操作はBASICに戻って実行します。
よって、マシン語でメニュー選択し、任意アドレス(今回は&HD015)に選択結果を書き込み、BASIC部へ戻る。
バックアップファイルから読み込んで、ゲーム実行。
と言う、処理の流れとなります。

メニュー選択は、Laboratoryテーマ??23「 選択肢メニューを開いて、選択したい 」で製作した「メニュー選択」を利用します。

「NEW GAME」でオープニング開始はOK。
仮のセーブファイル(FILE1〜3.SAV)を用意し、「CONTINUE」でゲーム開始するか動作テスト。
こちらも動作OKですね。

スクリプトを使わないメニュー選択の利用方法です。
9_27_3.png
赤枠にメッセージデータ先頭アドレスを代入しコールすると、選択ウィンドウが開き、メニュー選択できます。
因みに、メッセージデータは&HC988〜&HC98Fが「NEW GAME」、&HC990~&HC997が「CONTINUE」、&HC998~&HC99Cが「FILE1」、&HC99D~&HC9A1が「FILE2」、&HC9A2~&HC9A6が「FILE3」です。

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

2023年09月24日

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



9_24_1.png

3Dダンジョンロールプレイングゲーム第16回目です。
ゲームの雰囲気を高めるため、なぜ3Dダンジョンに挑むのかの説明を兼ねた、簡単なオープニングを作ります。

オープニングの実装には、Laboratoryテーマ??21「 指定座標に指定サイズのメッセージウィンドウを開きたい 」で製作した、独自スクリプト付の「メッセージウィンドウ」を利用します。

まずはタイトル画面(上図)を表示し、「PUSH SPACE」でボタンを押したコントローラーを、操作コントローラーとして登録し、以降そのコントローラーでのみ操作可能とします。
次に、オープニング表示。
MESSET.BAS 」でメッセージデータを作成します。
9_24_2.png

今回は、ありきたりで単純なストーリーにしておきます。
タイトル画面とオープニングだけで、グッとゲームらしくなりました!

スクリプトを使わないメッセージウィンドウの利用方法です。
9_24_3.png
赤枠にイベント?b?代入しコールすると、イベントのフラグ値に応じたメッセージ?bフメッセージが表示されます。

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

2023年09月18日

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




9_18_3.png
3Dダンジョンロールプレイングゲーム第15回目です。
今回は、いよいよ3Dマップの中をウロウロできるようにします。

これが出来れば、ゴール判定付ければ3D迷路ゲームなら完成ですね。
更に上下階段付けて、「MAP8 EDITOR」で2Dマップを立体迷路にすれば、高難度迷路の出来上がりです。

では、今回はキー入力処理と言う事で、BIOSの「GTSTCK」(&H00D5)を利用します。
Aレジスタにジョイスティック番号(0:キーボード、1:ジョイステックPORT1、2:ジョイスティックPORT2)を入れてコールすると、Aレジスタに押された方向値(BASICのSTICK関数と同じ値)が入ります。
今作のキー操作は下記の通りとします。



キー

行動



向いている方向に前進



向いている方向に対して、右を向く



向いている方向に対して、後ろを向く



向いている方向に対して、左を向く



「↑」が押された時だけ、向きに合わせて移動。
それ以外は向きを変えるだけになります。
凄く単純な操作なのでロジックも短いです。
9_18_1.png

方向は4方向なので、方向転換に下位2ビット(0〜3)のビット操作を使い、ロジックの短縮化を図っています。
移動が「↑」だけなので、正面が壁なら移動できないようにするだけなので楽です。
無駄なこと結構しているにも拘らず、3D描画が早すぎて思ったとこに停まれなかったので、1移動ごとにキーリピートをかけました。(移動後1回移動キーを離さないと、次の移動が出来ない。)

BASIC部です。
9_18_2.png
今はまだ製作途中で、値を変更することもあるので初期変数をREAD、POKEしています(500行以降)が、完成したらこれも初期値という事でファイル化し(拡張子「.INI」)BLOADします。
上中段と下段で別のフォント(上中段:ダンジョン用FONT、下段:メッセージ用FONT)を設定しています。 (2023年9月13日記事参照「Laboratoryテーマ??25「 SCREEN2のグラフィックをFONTデータにして扱いたい」 」)

ここまで「 ダウンロード

プログラムは、Laboratoryテーマ??21「 指定座標に指定サイズのメッセージウィンドウを開きたい 」その?@のサンプルプログラムに、3Dロールプレイングゲームの追加分を足しています。
今後、メッセージ表示部にメニュー選択ロジックが追加されたら、3Dロールプレイングゲーム部を後ろにズラシます。

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

2023年09月16日

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



3Dダンジョンロールプレイングゲーム第14回目です。
今回はダンジョン描画があまりにもチープなので、もう少しだけマシにしてみます。
まぁ、まだ本格的なものを作るわけではないのでこれでもいいのですが、あまりにもチープすぎて…。
MSX1の画像能力なので、すごいことは出来ませんが、ちょうど「FONT EDITOR」のマウスが使えなかった時に、とりあえずで描いたものですので、もう少しなら何とかなるかな?と…。
9_14_1.png
9_14_2.png
9_14_3.png
9_14_4.png
9_14_5.png
9_14_6.png

今回はこんなところでヨシとします。
まぁ、雰囲気的な物は出せたかな?と、思います。
後は気が向いたらもう少し描き込みます。
本格的に作るのなら、上段と中段別々にFONTを用意した方が綺麗になります。
何なら実際の洞窟画像をキャプチャしてもいいかも。(FONT足りないか…。)
昔なら考えられなかった手法が、今なら当たり前に使えてしまう…。

では、次回は3Dマップの中を歩かせます。
併せて、途中経過プログラムを公開しますね。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: