この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
広告
posted by fanblog
2024年10月31日
【ゲーム制作】シューティングゲーム 第22回
シューティングゲーム 第22回です。
今回は、プレイヤーのパワーアップ(速度)について考えます。
パワーアップ(速度)=スピードアップです。

こちらがスピードアップのパワーアップアイテムです。
前回、移動カウンタを小数点扱いとしました。
実はスピードアップすることも、勘案しております。
プレイヤー速度の初期値を、縦横方向は「100」、斜め方向は「70」としました。
スピードアップは、1つ取ると速度が1割アップする事とします。(縦横方向+10、斜め方向+7)
スピードアップは、最大で5つまで取得できます。
取得数
縦横方向
斜め方向
1
+10(110)
+7(77)
2
+10(120)
+7(84)
3
+10(130)
+7(91)
4
+10(140)
+7(98)
5
+10(150)
+7(105)
最大時は、縦横方向150、斜め方向105となり、初期値の1.5倍の速度となります。
これ以上速くなると、操作が困難となる速さです。
(まぁ、無制限でも面白いと言えば面白いのですが…。)
パワーアップの仕組みについては当たり判定時に、パワーアップアイテムとプレイヤーとの衝突時に組みますので、ここでは速度のアップ率のみ決めておきます。
次回は、プレイヤーの弾を組んでいきます。

2024年10月30日
【ゲーム制作】シューティングゲーム 第21回
シューティングゲーム 第21回です。
今回は、前回説明した内容に則り、プレイヤー移動を組んでいきます。

斜め方向移動が、狙撃弾と同じ考え方と言う事は、小数点以下が必要になります。
そこで移動カウンタを設け、その値を小数点扱いとし、加算値を加え1を超えたら実際の座標を±1する事にします。
移動速度の初期値を、縦横方向は+100、斜め方向は、Laboratoryテーマ??9「32方向弾」の45度時の加算値を利用し+70と設定します。
移動カウンタが100を超えたら1ドット移動します。
変数的には、このように取っています。
変数用途
備考
プレイヤーY座標
プレイヤーが表示されるY座標
プレイヤーX座標
プレイヤーが表示されるX座標
Y座標移動カウンタ
加算値を加え100を超えたらY座標に±1
X座標移動カウンタ
加算値を加え100を超えたらX座標に±1
縦横方向加算値
初期値:100
斜め方向加算値
初期値:70
因みにX・Y座標をX・Yカウンタと別々にせず、それぞれ16ビットで取り「100」を「256」として換算すれば、もう少し楽に計算できます。(桁上がりなど)
でも、自分で分かり易いように組んでます。
この仕組みで、縦横方向は1回の移動で1ドット移動し、斜め方向は2回で1ドット移動します。(70+70=140-100 余り40)
これで、8方向弾と同じ速度比になります。

んー、長い!
なんか凄く回りくどいロジックになった気がする…。
2,710行からの「P MOVE COUNT」で移動カウンタを加算。
2,930行からの「P MOVE」で移動カウンタの100越えをチェックし、座標値加減算しています。
さっき書いた16ビット化なら、「P MOVE」は不要ですね…。
まぁ、今回はこれでいいか、次回作はもう少しスッキリさせたいな。
次回は、プレイヤーのパワーアップ(速度)を組んでいきます。

2024年10月29日
細かく修正?

「 ゲーム制作 」の「製作メニュー」の「海底大戦争」の各回へのリンクを追加。
「 ゲーム制作 」の「 シューティングゲーム 」の前後回へのリンクが全て切れていたので修正。
それ以外は、画像の貼り直しや、記事の誤記の修正程度です。

2024年10月28日
【ゲーム制作】シューティングゲーム 第20回
シューティングゲーム 第20回です。
今回は、プレイヤー移動処理について考えます。
さて、プレイヤーの移動ですが、MSX1のゲームは基本8方向に移動します。
(STICK命令で取得できる方向が8方向だから。)
この時注意しなければいけないのは、縦横方向の移動速度に対し、斜め方向は8方向弾のように「少し遅く」なる事です。(上手く説明できないので下図参照。)

実はこれまでに公開してきている過去作品の「シューティングゲーム」で斜め移動できるものは全て、縦横移動と同じ速さで(斜め移動時もX・Y座標それぞれ1ドット)移動しているので、斜めだけ早く移動します。(敵も同様。)

まぁ、過去作品の敵の弾は、まっすぐ下に進むタイプなので大きな問題にはならないのですが、今作は狙撃弾を予定しています。
という事は、弾は当然斜め方向だと遅くなります。
よって、プレイヤーが敵の狙撃弾から逃げる時、斜めに逃げると早く逃げれるという現象が発生します。
それは大きな問題です。
前置きが長くなりましたが、上記問題の解消の為、プレイヤーも敵も斜め方向は遅くします。
次回は、今回の内容に則ったプレイヤーの移動処理を組んでいきます。

2024年10月27日
【ゲーム制作】シューティングゲーム 第19回
シューティングゲーム 第19回です。
今回は背景の「疑似スクロール」処理を組んでいきます。
擬似スクロールは試作ディスクで紹介したSCREEN1.5のOUT命令版を利用します。
FONT作成時に作った絵柄をドットシフトしますので、4FONT×4FONT×3ブロック×8バイト=384バイト×2(パターン、カラー)=768バイト(&H300)分シフトとさせる必要があります。
結構な負荷になりますね…。

まずは、シフトに必要なFONTデータをワーク(&HBD00~&HBFFF)へ転送。

ワーク内でシフト処理して、OUT命令で一気にVRAMへ転送します。
良い感じです!
「SPRITE水平方向5枚以上表示」処理と「BGM演奏」した状態で、疑似スクロールをしています。
画面がチラついていますが、今後全体的に処理が遅くなると自然に直る(希望)と思いますので、今は放置します。
最後まで直らなければ、色を2色固定にしてパターンテーブルのみのスクロールにします(カラーの処理がなくなるので転送量は半分になる)、それで画面チラつかないことは確認済み。
次回は、プレイヤー移動を組んでいきます。

2024年10月26日
【ゲーム制作】シューティングゲーム 第18回
シューティングゲーム 第18回です。
今回はタイトル処理を組んでいきます。
タイトルは、前作そのままのBASICロジックで、タイトル画面で放っておくと、ストーリーに替わるパターンです。
こちらがタイトル。

少し時間に余裕があったので、縁取り加工をしてみました。
良い感じです。
タイトルが飛び出しているような立体にしても良かったのですが、今回はパス。
タイトルを「海底大冒険」から「海底大戦争」に変更。
元は同じでも違うものなんだよと意識づけの為に。
ロゴ表示、宣言通り「SINCE 1987」は除きました。

こっちの方がいいですね。
エンディングはストーリー以外、どんなのにするか考えていないので、最後の方でやります。
次回は、「疑似スクロール」を組んでいきます。

2024年10月25日
【ゲーム制作】シューティングゲーム 第17回
シューティングゲーム 第17回です。
今回はオープニング処理を組んでいきます。
オープニングは、いつものタイトル画面で放っておくと、ストーリーに替わるパターンです。
翻訳はやっぱり安定のMicrosoftの Bing翻訳 を使用。
詳細設計時に作ったストーリーを翻訳しています。
今作はストーリーが長い!
1画面に無理に収めるとギュウギュウになるので、上にスクロールするようにします。
さて、ストーリーが長いと翻訳結果を「STG.BAS」に手打ち入力する気にならない…。
なんとか、いつもの方法でできないか思案…。
あ、DATA文としてMSXに取り込んで、MERGE命令でくっつければいい。と、思い付きました。
・・・が!
MERGE命令って、どうやってやるんだっけ!?
全く持って、失念している…。
昔あんなにお世話になった命令なのに…。
色々なページを巡っても、今更詳しく乗っているページはない…。
止む無く、過去の記憶を呼び起こし、試行錯誤へ…。
結果。

「STG.BAS」 最後の行番号は1,340行
くっつけたい方(プログラムの前に来る方、今回は「STG.BAS」)をアスキーセーブ。(オプションで「,A」を付ける。)
SAVE [ファイル名],A

「オープニングデータ」 今回はRENUMしなくてもいいように最初から行番号に5,000番を付けました
くっつけられる側(オープニングデータ)のファイルを開き、行番号をくっつけたい側の最後の行番号より大きい番号からスタートするようにRENUM命令します。(今回の例だと、1,350番以上を付ければいいので5,000番を付番)
RENUM [新行番号][,旧行番号][,増分]

MERGE [アスキーセーブされたファイル名]
MERGE命令実行で、くっつきます。
この後、普通にファイルセーブ(SAVE "STG.BAS")すればOKです。
成功しました。

ちなみに、1ドットスムーズスクロールではありません。
次回は、タイトルを作成します。

2024年10月24日
【ゲーム制作】シューティングゲーム 第16回
2024年10月23日
【ゲーム制作】シューティングゲーム 第15回
2024年10月22日
【ゲーム制作】シューティングゲーム 第14回
シューティングゲーム 第14回です。
今回はBGM作曲です。
今まで後ろの方の工程だったBGMを、なぜ前に持ってきたのかと言うと、テストプレイ中にBGM鳴ってた方が、作ってるって実感沸くかなって…、それだけです。(集中力維持のため)
しかも、今作では、1面、2面、3面、ボス戦、エンディングと5曲もあります。
後半戦で前作みたいに集中力が途切れた状態で、5曲は難しいと思ったのも、最初に持ってきた理由です。
やっぱり、シューティングゲームのBGMは、「カッコいい」、「テンポが良い」、「臨場感がある」ですよね。
5曲一気には難しいので、とりあえず1面と、2面。


「MMLコンパイラ(通常版)」を使いデータ化。
「左SHIFT」+「F9」で高速実行。
次回も引き続きBGM作曲です。
