新規記事の投稿を行うことで、非表示にすることが可能です。
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作曲です。
