WakuTeki 製作過程 その1

Home PC-6001mkII Program etc

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

WakuTeki 製作過程 製作過程


2014/08/xx:はじめに
 さて、今年もプログラムコンテストの季節がやってきた。さて、今回は何にしようか。

 ネタに悩んでいた時に、UPLのアーケードゲームNOVA2001の話題がTwitter上に流れてきた。当時は割と難しくてそれほどプレイしていなかったけど、わらわらと大量に敵が来るところは結構好きだったんだよな。

 …最近シューティングもどきが続いたので、今年はこういうわらわら系のシューティングにするかな?自機は蛇型で尻尾が弱点とか。


2014/08/09:蛇っぽいもの
 蛇だけに、急には方向転換できないようにするか。

 カーソルキーを押した方向に徐々に向かうような感じだから…atanとActBarrierのオプション処理を組み合わせればなんとかなるかな?という事で、簡単にサンプルを作ってみる。

画面

 カーソルキーで動かす事しかできないが、動きとしてはまあまあ良さげだ。

2014/08/17:連射
 次は自機弾の処理に移る。

 基本的に自機を起点として自機の方向に向かう弾、といった動き自身はさほど難しくない。手で連射する事は重要ではないので、自動連射させる事にする。
 あと、キーを押している間は自機が動けない代わりに、攻撃力が高くなって全方位攻撃できるるようにしてみようか。

画面

 こんなところかな。

 うーむ、ただ、これだと自機が動くメリットがないな…。この辺りのバランスについては、また追々考えねば。

2014/08/24:敵追加
 次は敵だろう。という事で、敵の出現,移動,消去、自機弾との当たり判定の処理を作成する。

画面

 うー…む。敵をやっつける部分は割と良いんだけれど、しっぽが弱点だと、全然避けきれないな…。蛇型にするのは失敗だったかな?

 とりあえず、蛇の処理自身は残しておいて、胴体部分の長さを0にするか。初期段階から、蛇の胴体部分が可変になる事を見越した処理を書いていたので、変数の値を変えるだけで胴体なしの状態になる。

 備えあれば憂いなし、だな。

2014/08/24:ゲームバランス
 少しゲームバランスを考える。

 前に書いた通り、自機が動けるけど前方のみ攻撃できるモードと自機が動けないけど広範囲に攻撃できるモードを作った。
 この両方のモードを使い分けて欲しいところだけど、敵が一撃で倒される状況では、前者のモードの出番は正直ほぼない。

 とりあえず、動かないとダメな状況を作るか。という事で、画面内の任意の位置から出現する敵を新たに加える。いきなり出現してゲームオーバーになるとさすがに理不尽なので、出現中は敵と自機との当たり判定を行わないようにしよう、後日。

 あとは、なにかパワーアップアイテム的なものを出して、積極的に自機を動かす事にしようかな?パワーアップがあるなら、耐久力がある敵も良いかも?

 まだ全体像が見えないので、方向性にブレがあるな…。

2014/08/24:見た目向上
 ここらで見た目を良くしていこう。という事で、HSPTV素材を使った表示に変更する。

 敵は、移動方向を向くよう回転表示に切り替える。片方の敵はクルクル回転させながら動かすかな?後は、別のバッファ画面に、水面(?)の絵をタイリング描画しておき、ゲーム画面の背景にする。

 パワーアップアイテムは、リンゴで良いかな?せっかくなので色違いバージョンも作って4色出すか。色の順番は、もちろん緑→黄→青→赤だ。パワーアップの効果は後日考えるとして、とりあえず斜め45度に動かし、画面の端で反射させるようにする。

画面

 見た目としては、かなり良くなったような気がする。ただ問題が一つ、この時点でstart.axのサイズが6054バイトになった(応募規定は6000バイト以内)。

 毎回、コンテスト用に出すプログラムは後で削減する事を当てにして規定サイズより大きめに作るのだが、さすがに基本部分も入ってないのに6000バイトを超えているのはマズい。
 とりあえず先に進むのは止めて、サイズ削減に力を入れよう。4000バイトまで減れば良いけどな、と他人事のように言ってみる。

2014/08/25〜30:サイズ削減その1
 というわけで、毎日少しずつ時間を割いて、サイズ削減にいそしむ。元ソースがわからないと伝わらないだろから、少し小さ目に書いておく。
  • 8/25 (start.ax 6054 → 5714)
    実数定数(20.0)の変数化
    gcopyのコピーの大きさをgcopyに一部まとめる
    自機回転処理の簡略化
    敵状態変数(tz())のdup化
  • 8/26 (start.ax 5714 → 4890)
    オプション(蛇胴体)処理の削除
    自機回転処理の更なる簡略化
    繰り返し使う配列変数のdup化
    敵初期化の一部をまとめる
  • 8/27 (start.ax 4890 → 4760)
    2種類のモードで回転処理を共通化する準備
    リンゴの種類変更処理の簡略化(am ++ : if am == 3: am = 0 → am =(am + 1) and 3
    繰り返し使う配列変数のdup化
  • 8/28 (start.ax 4760 → 4676)
    画面外に消えた直後の自機弾と敵との当たり判定を省略
    敵表示処理の見直し
  • 8/29 (start.ax 4676 → 4668)
    自機弾移動処理の見直し
  • 8/30 (start.ax 4668 → 4499)
    自機回転方向決定の関数化
    リンゴ各色画像作成処理の見直し
    不要となった変数の削除
    敵初期化の代入処理をまとめる
 4500バイトを切ったし、そろそろ続きを行うかな。

2014/08/31:パワーアップ
 パワーアップ要素について考える。つい勢いでリンゴの色を4種類にしたので、必然的に4種類の効果を考えなければならなくなった。どうしようかといった感じで、色々考えてみた。
  • 自機弾の威力アップ
    → 今のところ、敵も一撃でやられるし、あまり意味ないか…。
  • 自機弾の連射力アップ
    → 自機弾を発射する周期を変えるだけだから簡単かな?採用!
  • 自機の旋回力アップ
    → 初期状態でかなり小回りが利かない状態にすれば面白いかな?採用!
  • 得点アップ
    → 得点表示を行うようにすれば、これもありかも?ちょっと保留。
  • 得点倍率アップ
    → やっぱり倍率アップはあった方が良いかな…。ちょっと保留。
  • 自機のスピードアップ
    → 旋回能力と少しかぶるかな。いうほどメリットなさそうだし、保留。
  • 敵数増加
    → 敵が多くなると点も入りやすいかな?まずは採用。
 一部、デメリットが大きいものもあるが、このあたりをあえて入れる事で、戦略が出てくる、ような気がする。


WakuTeki 製作過程 製作過程