新規記事の投稿を行うことで、非表示にすることが可能です。
2024年11月10日
【ゲーム制作】シューティングゲーム 第31回
2024年11月09日
細かく修正㉜


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

2024年11月08日
【ゲーム制作】シューティングゲーム 第30回
2024年11月07日
【ゲーム制作】シューティングゲーム 第29回
2024年11月06日
【ゲーム制作】シューティングゲーム 第28回

シューティングゲーム 第28回です。
今回は、敵の弾処理を組んでいきます。
敵の弾の数は16発。
敵表示と同様に16回ループさせます。
今回は狙撃弾なので、過去に「Laboratory」でやった、テーマ№6「自機に向かって飛んでくる敵弾」を、ほぼそのまま流用します。
Laboratoryテーマ№24「簡単な、自機に向かって飛んでくる敵弾(なんちゃって弾道計算)」をまだやっていないので、今回はこちらを採用します。

Laboratoryテーマ№6「自機に向かって飛んでくる敵弾」サンプルより弾移動と初期値セット部分を抽出
「自機に向かって飛んでくる敵弾」は、弾道を三角関数で算出するタイプなので、弾発射時の各値設定に若干時間かかりますが、最大16発なので特に気にならないかと思います。
このロジックを、今作のExcelファイルに組み入れ、変数と飛び先指定を書き換える必要があります。
次回も、敵の弾処理の続きを組んでいきます。

2024年11月05日
【ゲーム制作】シューティングゲーム 第27回
2024年11月04日
【ゲーム制作】シューティングゲーム 第26回

シューティングゲーム 第26回です。
今回は、敵表示処理のみ組んでいきます。
なぜ、敵表示だけなのか?
それは敵移動を組むのが大変なので後にして、それ以外を先に組んでしまおうと言う逃げ根性です。(冗談です。)
敵の表示は、敵の弾の発射起点であったり、当たり判定チェック用であったりと、しておかなくてはならないので、先に表示のみを組みます。

敵の数は10匹。
10回ループさせ初期位置にちゃんと指定のキャラが表示されるのを確認。
ループ処理の中に敵移動サブルーチンを呼び出すため用のスペースを開けておきます。
ついでに、共通ロジックとして敵が画面外に出た時の処理も組んでおきます。
もうひとつ、共通ロジックとして敵死亡アニメーションを組み入れます。
敵の死亡フラグを立てたら、ちゃんとアニメーションするか確認。

問題なく上手くいきました。
…アニメーション、ちょっと早いかな…?
まぁ、いいか。
敵の死亡、生物なのになぜ爆発なのかは、触れてはいけません。

次回は、パワーアップアイテム出現処理を組んでいきます。

2024年11月03日
【ゲーム制作】シューティングゲーム 第25回

シューティングゲーム 第25回です。
今回は、SPRITEパターン№の指定について考えます。
今作は敵の種類が多く、動きも多種となりますので、SPRITEパターン№を指定する際のルールを決めます。
なぜなら、今までならSPRITEパターン数が少なかったので、空いていても問題なかったのですが、今作はパターン数が多いので、空いているところがないように効率よく配置する必要があるからです。
これを決めないと、SPRITEがいつまでたっても完成しない。
まず、動作タイプの種類を挙げます。
№ | タイプ | パターン数 | 主な敵種 |
① | ・向きあり ・アニメなし | 2 | 直進する敵 動きの速い敵 |
② | ・向きなし ・アニメあり | 2 | イソギンチャクなどの固定砲台 カニなどの甲殻類 |
③ | ・向きあり ・アニメあり | 4 | 通常攻撃してくる敵 |
④ | ・向きなし ・アニメなし | 1 | パワーアップアイテム 岩などの地形 |
今作では、向き(右・左)と、アニメーション2パターンで、敵1種につき最大4パターンとなります。
配置順は、右方向のアニメパターン1、右方向のアニメパターン2、左方向のアニメパターン1、左方向のアニメパターン2の順とします。
この時、気を付けなければならないのが①のタイプ。
アニメパターンがないので、ひとつパターンが飛びます。(下表参照)
効率よく配置するためには①のタイプは偶数種用意する。
難しければ、間に④のタイプを入れる事で、無駄なく配置できます。
上記ルールに則って、各面のSPRITEを描き直し、再配置します。
うーん、あまりキャラクタに時間掛けてられないので、とりあえずこれにて完成とします。
1面

2面

3面

一部海の生物じゃないものもいますが気にしない…。

次回は、敵の表示のみを組んでいきます。

2024年11月02日
【ゲーム制作】シューティングゲーム 第24回
2024年11月01日
【ゲーム制作】シューティングゲーム 第23回

突然敵の弾や、敵が消えたりする現象発生!
原因不明。

もしや!と思い、走査線割り込み処理からメイン処理に全ロジック移したら、現象が発生しなくなりました…。
なんでだろう…?
メイン処理と走査線割り込み処理で、ワーク変数等ダブってるとおかしくなるのでわざわざ全部分けたのに…。
うーん、考えてるだけ時間の無駄、バグが出る以上止む無し、走査線割り込み処理にはBGM演奏ルーチンのみ残し、あとは全部メイン処理に持っていきます。
メインプログラム | 走査線割込み |
プレイヤー処理 プレイヤー弾処理 敵処理 敵弾処理 当たり判定 背景処理 SPRITE水平ライン5枚以上点滅 他 | BGM・効果音演奏 |
「SPRITE5枚以上表示」もメインに持っていくのは、例のバグ解消のためです。
振替えはそれほど手間ではないので、ゲームの完成が見えてきたら改めてチャレンジします。
過去の未完成パワーアップ型縦スクロールシューティングゲーム「セイバー」で、同じ処理やってて問題なくできてるんだけどな…。
既にソースがないので、詳細は追えませんが…。
今作と同じ、衝突判定とスクロールのみメイン処理で、残りは全て走査線割り込み処理内ですが、何の問題もない…。
私が何か忘れてるのかな…。
知見がある方ご教授お願いします。

