2024年04月20日
【ゲーム制作】面クリア型アクションゲーム 第20回
面クリア型アクションゲーム 第20回です。
今回はスコア倍々処理を組んでいきます。
倍々タイマーを用意し、敵に勝ったらタイマーをセットします。
最大でも3匹しか倒せない時間でセットします。
復活場所で待っていて、最初の1匹が復活する前にタイマーが切れるタイミングですね。
タイマーカウント中は、解り易いように「ハンド君」を点滅させます。
じゃんけんSPRITEを「白」→「黄」→「白」…でループさせます。
倍々タイマー中は点滅する「ハンド君」
2匹目以降の敵を倒した際は、倍々スコアカウンタを用意し、シフトで×2倍にします。
これで、1匹目1,000点、2匹目2,000点、3匹目4,000点、4匹目は時間的に倒せずタイムアップとなります。
上手くいきました。
ほぼこれでゲームのメイン部分のマシン語部は完成ですね。
次回は昔懐かしゲームにあった、「ハイスコア」を追加します。
2024年04月19日
【ゲーム制作】面クリア型アクションゲーム 第19回
面クリア型アクションゲーム 第19回です。
今回は衝突判定を組んでいきます。
衝突判定は、敵と衝突するゲームなら必須の処理となります。
MSXにはSPRITEの接触判定があるのですが、それを使った事はありません。
ぶつかっているかどうかが分かるだけで、どれとどれがぶつかったかの判断が出来ないからです。
ですので、通常の衝突判定を組みます。
衝突判定の範囲は下図の通り。
範囲はデバッグ時に再調整します。
復活カウンタが「0」の敵とだけ衝突判定を行います。
敵と衝突した際、じゃんけんで勝っていれば、敵の復活カウンタを「1」に。
あいこ、若しくは負けていればBASICに戻り、面の続きからとなります。
特に悩むこともなく、組みあがりました。
テストにぶつかりまくってみました。
問題なしです。
次回はスコア倍々処理を組んでいきます。
2024年04月18日
【ゲーム制作】面クリア型アクションゲーム 第18回
面クリア型アクションゲーム 第18回です。
今回は敵処理Bを組んでいきます。
敵の移動は、通路に曲道がない間はずっと真っ直ぐ。
曲道があるか、壁に衝突するとどちらに移動するかの選択となります。
袋小路(3方向壁)以外は、来た道を戻る事はしません。
ロジック的には、敵位置の上下左右の4方向のマップチェックをし3カ所以上空いていれば曲道有りと判断し、乱数でどちらに曲がるか選択します。
2方向しか空いていなければ、直進方向を調べ通路なら直進、壁なら曲がります。
1方向しか空いていなければ袋小路とし反転します。
いざ、ロジック組み。
良い感じです。
ゲーム完成後余りにも簡単なら、「ハンド君」に勝っている敵だけ追跡型にするのも良いかも。
次回は衝突判定を組んでいきます。
2024年04月17日
【ゲーム制作】面クリア型アクションゲーム 第17回
面クリア型アクションゲーム 第17回です。
今回は敵処理A復活処理を組んでいきます。
前回の復活アニメーションの違和感…。
うーん、アニメーション速度はいいが、なんか始まりから終わりまでが短い…。
これだと復活するポジションに「ハンド君」がいて、復活の兆しが見えてから逃げても間に合わない…。
しかも、アニメーションが味気ない…。
キラキラで復活するのに、キラキラらしくない…。
ロジックが長くなるが、復活だけ別のロジックにするか…。
いや、SPRITEパターンにかなり余裕がある(最大64パターン、現在26パターン使用)ので、復活アニメーションの種類をそっちで増やして対応します。
復活パターン2.4倍増。(5→12)
その影響で縁取パターンの位置ズレちゃったので、「ハンド君」「敵」表示ロジック修正。
いざ、テスト。
おぉ! キラキラしていていかにも復活っぽい!
しかもロジックそのまま。
良い感じです。
次回は敵処理Bを組んでいきます。
2024年04月16日
【ゲーム制作】面クリア型アクションゲーム 第16回
面クリア型アクションゲーム 第16回です。
今回は敵処理Aを組んでいきます。
これは、敵が「ハンド君」に負けて消滅し、ある程度の待機時間を空けて再度出現するまでのロジックとなります。
消滅・復活共に分かりやすいアニメーションをします。
これが消滅パターン。
こちらが復活パターン。
他のゲームの処理がどんな処理させているかは分かりませんが、私はこの一連の流れを1つのカウンタ(復活カウンタ)で処理する方法を採用。
敵がプレイヤーと衝突し負けたら、復活カウンタに「1」をセット。
後はカウント+1する毎に、下表の処理を実行します。
ロジック組んで実行…。
…おぅ、消滅も復活もアニメーションが早すぎる…。
各5パターンでは少なかったかな?
MSX1の16×16サイズのSPRITEは、8×8サイズのパターン4つを左上(⓪)、左下(@)、右上(A)、右下(B)の順に組んで1パターンとして表示されます。
SPRITEアトリビュートテーブルのパターンbノは、⓪〜Bのどれを設定しても同じキャラクタが表示される特性があります。
それを利用してアニメーションを4倍遅くします。
…それでも少し早い…。
止む無し、足をパタパタさせるためのアニメーションカウンタをタイミングカウンタとして利用。
アニメーションカウンタがある数値になったら、復活カウンタを加算する方法に変更。
…お、良い感じのスピードになりました。
しかし、消滅はいいが復活はなんか違う…。
開発に思ったよりも時間かかってしまいました、今回はここで終了。
次回は敵処理Aの復活処理を組んでいきます。
2024年04月15日
【ゲーム制作】面クリア型アクションゲーム 第15回
面クリア型アクションゲーム 第15回です。
敵処理は大きく3つに分けます。
@ 敵は複数匹いますので、ループ処理と、敵表示。
A 敵消滅から復活までのアニメーション。
B 敵移動。
今回は@の処理を組んでいきます。
ループは単純に面数に応じた敵匹数分のループ処理。
表示は仮想スプライトアトリビュートテーブルのアドレス計算が必要となりますので、そのロジック。
そして表示とアニメーションです。
これはプレイヤー「ハンド君」とほぼ同じ。
上手くいきました。
なんだか楽しそうな画面になりました。
詳細設計では敵は最上段横ラインに並ぶ予定でしたが、点滅が酷くなるので最左段縦ラインに変更しました。
次回は敵処理Aを組んでいきます。
2024年04月14日
【ゲーム制作】面クリア型アクションゲーム 第14回
面クリア型アクションゲーム 第14回です。
今回は「ハンド君」の見難い対策をします。
今作では、同時出現キャラクタ数が10種類(プレイヤー1、敵9)となります。
見易くするために、SPRITE同時表示枚数に余裕がある(最大32枚、現時点で10種類×2枚=20枚使用)ので、SPRITEもう1枚使って黒で縁取りする事にします。(10種類×3枚=30枚使用)
「SPRITE EDITOR」で縁取りキャラクタ作成。
しかし、MSX1で1キャラクタにSPRITE3枚使うと点滅が酷くなってしまいます。(横に2匹並んだだけで点滅の嵐。)
そこで、重ね合わせ位置を上下にズラし水平位置は同時に2枚しか重ならないように工夫します。
こうすることで、重なっているのはオレンジ枠部分の2枚だけになります。(赤ラインがキャラクタのY座標位置)
「ハンド君」表示ロジックを、3枚表示にして上記のとおりズラして表示するように変更します。
おぉ、良い感じです!
敵も同じパターンで行きます。
次回は敵を動かします。
2024年04月13日
【ゲーム制作】面クリア型アクションゲーム 第13回
2024年04月12日
【ゲーム制作】面クリア型アクションゲーム 第12回
面クリア型アクションゲーム 第12回です。
今回は、前回「ハンド君」を表示した際、感じた違和感を解消します。
「ハンド君」は、じゃんけんキャラクタの前の面に、目と足のキャラクタを表示しています。
よって、「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」処理がしてあると、2枚重ね1キャラクタ内で前後が入れ替わってチラつきます。
動画でないと、どういう感じか掴めませんよね。
画面右下の「ハンド君」に注目。
これは、敵キャラクタも同じ。
と、言う訳で、「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」処理を32キャラクタ×4バイトではなく、16キャラクタ×8バイトにするように変更します。
要は簡単、1キャラクタ4バイトずつ転送かけていたのを、1キャラクタ8バイトずつの転送にすればいいのです。
四角で囲った部分は追加(一括転送にした方がいい)、丸で囲った部分は変更です。
こうすることで2枚重ねのキャラクタを1セットとして点滅させることが出来るようになります。
これで1セット内での前後入替は無くなります。
次回は、いよいよ「ハンド君」を動かせるようにします。
2024年04月11日
「BlueMSX」で音が出なくなった!?
今日、プログラムのデバッグ中、突然、音が鳴らなくなりました!
なぜ?
とりあえず「BlueMSX」再起動。
…駄目。
パソコン再起動後、「BlueMSX」起動。
…駄目。
「BlueMSX」アンインストール後、再インストールし起動。
…駄目。
「BlueMSX」アンインストール後、パソコン再起動、再インストールし起動。
…駄目。
駄目だ、直らない…。
突然鳴らなくなったので、サウンド設定変更していません。
「WebMSX」でイメージディスク起動すると音鳴るので、プログラムが悪い訳でもなさそう…。
…なぜ?
原因不明です…。
ミキサーは音鳴らしてるみたいなので、Windowsの方なのかな?
Windowsと「BlueMSX」って何かで紐付けられてる?
うーん…、このままでは音のテストが出来ない…。
取り敢えず、しばらくはプログラミングなのでこのまま続けます。
BGMや、効果音作成時にこのままだったらどうしよう…。
どなたか対応策ご存じでしたらご教授お願いします。
なぜ?
とりあえず「BlueMSX」再起動。
…駄目。
パソコン再起動後、「BlueMSX」起動。
…駄目。
「BlueMSX」アンインストール後、再インストールし起動。
…駄目。
「BlueMSX」アンインストール後、パソコン再起動、再インストールし起動。
…駄目。
駄目だ、直らない…。
突然鳴らなくなったので、サウンド設定変更していません。
「WebMSX」でイメージディスク起動すると音鳴るので、プログラムが悪い訳でもなさそう…。
…なぜ?
原因不明です…。
ミキサーは音鳴らしてるみたいなので、Windowsの方なのかな?
Windowsと「BlueMSX」って何かで紐付けられてる?
うーん…、このままでは音のテストが出来ない…。
取り敢えず、しばらくはプログラミングなのでこのまま続けます。
BGMや、効果音作成時にこのままだったらどうしよう…。
どなたか対応策ご存じでしたらご教授お願いします。