NegaTogg 製作過程 その2

Home PC-6001mkII Program etc

 このページでは、NegaToggのV1.0作成過程を書いています。

NegaTogg 製作過程 製作過程


2013/10/28:当たり判定
 ようやく、当たり判定の処理に移る。

 当たり判定処理の基本的な部分は、ActBarrierから持ってくる。今回は、自機と敵の色が同じかどうかで運命が変わるので、衝突判定の距離に差をつけるか。うーん、距離にしてざっと√600ドットと√2000ドット位。数値は割と適当だ。

 ちなみに、なぜ√付きの表記かというと、実際にはこの2乗の数値で判定しているからだ。2点間の距離の計算は、

√(X座標差分の2乗+Y座標差分の2乗)

で求まるが、距離の判定ではなく距離の2乗で判定すると、以下のように√の処理が省ける。
l = (tx(cnt) - mx)*(tx(cnt) - mx) + (ty(cnt) - my)*(ty(cnt) - my)
if tc(cnt) == mc and l < 2000 and tm(cnt) != 0{
  ; 同じ色の敵に当たった時の処理
}

 異なる色にぶつかった時に、納得がいく見た目になっているかどうかを確かめるため、実際に動かしてみる。

画像

 まあ、多少重なっている位が良いかな?

2013/10/29:方針転換
 ここまで作っておいて言うのもなんだが、どうも面白くない。これはピンチだ。

 モノトーンで揃えようとしていた色合いが崩れてきたというのもあるだろうが、それよりも自機の色を「変えさせられる」点が面白みを削いでいる大きな原因だろう。

 なにか、プレイヤーが積極的に色を変えたくなる要素はないだろうか?

 やはり、得点かな?短時間に連続して取ると倍率が上がるとか…。…白と黒を交互に取ると倍率が上がるというのはどうだろう?うん、なんか行けそうな気がしてきた。

 とはいえ、実際に試してみないとわからないな。という事で、倍率処理部分を追加して試してみる。同色だけ取り続けた場合と比べてスコアの伸びが極端に変わった。

 こうなれば、「白黒交互取得」をゲームの主体にするか。という事で、これまで作りこんだ敵の色変更カウンタと制限時間を廃止し、代わりに、同色の敵を取った時の得点表示を行う事にする。

 残り時間もあと2日だし、これで行ってみよう。

2013/10/30:一気に作成
 急いで、残りの部分を消化していく。

 まずは4番目の敵、と。ランダムなタイミングで、ゆっくり自機に近づく感じにするか。実際試した感じでは、敵同時が完全に重なる場面も少ないし、まあまあだろう。ただあまり長時間留まるとウザったいかな?

 次!ゲームスタートの表示を作成する。Y座標にsin関数を使って高速で波打たせようとしたが、少々高速すぎたか。まあでも、これはこれでいい感じなので採用する。

 あと、Bubbriskのようにレベルアップで光る演出を入れる。今回は、背景で流れている四角の色を変える事にする。

 ちなみに、この色を変える処理はレベルアップの時だけでなくゲーム中ずっと行われている。四角の色のR成分だけ変数に持っておき、フレーム毎に明るさ128に4ずつ近づく処理を行っている。

 このため、普段はずっと明るさ128で見た目上変化はないが、レベルアップ時にR成分の変数に252を代入する事で、赤みがかった灰色から灰色へと滑らかに色が変化する演出となる。

 次!ランキング画面を作成する。

 基本的な処理はActBarrierからそのまま持ってきて、表示部分を変えていく。ああ、タイトルを考えなきゃな…。

画像

 全体的な調整はこれからだが、とりあえず一通りの要素は入った。

 この時点で、start.axのサイズは6714バイト。700バイト程度なら経験上なんとか削減できるだろうが、問題はあと1日で投稿できる状態になるかどうかだよな。

2013/10/30〜31:サイズ削減
 さて、次は毎度恒例のサイズ削減だ。

 まず、試行錯誤の最中で追加したけど結局使わない変数を削除する。だいたいこれだけで数10バイト削減できる。

 次に使わなくなった処理を削除する。今回の場合は、敵の出現待ち状態の時も敵番号別に分岐を入れていたが、これを削除。これで120バイト削減。

 次!使用する命令のパラメータ数を減らす。
 全面塗りつぶしなら boxf 0,0,640,480→boxf、赤色表示なら color 255,0,0→color 255 のレベルはすでに変換済だが、例えば黄色表示も color 255,255→palcolor 13と変換できる(palcolorの色設定が効かない命令もあるので条件付きだが)。

 次!配列変数の登場回数を極力減らす。同じ配列変数の値をおおむね3回以上使う場合は、dup命令を使うとサイズを削減できる。配列変数を多く使っていると、これだけでも数100バイト削減できる場合が多い。今回の場合は450バイトちょっと削減している。

 あとは細かい修正を加えて、無事6000バイトを切った。時間がないので、ここではそれ以上の削減には踏み切らなかったが、あと何10回かリストを見直すと、もっと削減できると思う。

2013/10/31:V1.0完成
 さて、あと残すは...タイトルだ。毎度の事ながらここには悩まされる。

 ちなみに、この時点のhspファイルのファイル名はsirokuro.hsp。Code Name:SiroKuro といえば少しは格好良くなるだろうか?いやいや、そんな事を言っている場合ではない。もう最終日の夕方だし。

 自機の色切り替えを主体にしているので、それっぽい単語を入れたいな。ChangeとかToggleとか。あとは白黒の世界なのでMonochromeのような感じか。

 Googleで単語を検索しつつ、ヒット件数が少ないパターンを探す...良いのがない。
 まてよ、白と黒ってネガの関係にあるよな。じゃあNegativeとToggleを組み合わせてNegaTogg!という事で、半ば強引にタイトルを決めた。

 あとは、投稿の文章とスクリーンショットを作成して...完成!

 こうして、V1.0のお披露目となった。


その1 NegaTogg 製作過程