このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください

  --  スターフォースいろいろ   注意事項及び連絡先    ホームページ

スターフォースいろいろ

スターフォースのゲームに関する事。特に注記が無い限りアーケード版のものです。

※普通の紹介や攻略法についてはGoogle等で他のページを探してください。

敵の動作

サインカーブ系

スターフォースでは多くの敵が、サインカーブの軌跡を描く。

x方向の加速度 x" = -(x - C) / B (Bは2のn乗) として実装されている。 nは通常8〜11の整数。 xをフレーム単位の時間tで表すとたぶん x(t) = D・sin((t - E) / √B) + C となる。 x方向の周期はたぶん 2・π・√B となるが、実際は固定小数点演算の誤差によるずれが生じる。

Galli

Zoffは、性質(アルゴリズム)が全く同じ。

敵の位置は自機を右に移動すると左へ、逆に左に移動すると右へずれるが、カーブの基準位置(上の式でのC)は変わらない。 従って敵の動きに合わせて自機を左右に動かすと、振幅を大きくしたり小さくしたりできる(ブランコを漕ぐ要領)。具体的には

振幅を大きくする場合
敵が中心より右側にいるときは自機を左に動かす。敵が左側にいるときは自機を右に動かす。
振幅を小さくする場合
上記と逆の操作をする。

Lope

この敵は自機を狙って来るようにも見えるが、自機の位置は全く影響していない。

周期は固定

(1) 自機と対称方向から出現し、画面の端の方でサインカーブを描きながら下に進んでいく。

(2) 画面下半分でX方向の速度が中心方向に1.000〜1.999dots/frameの範囲の時、カーブの中心を画面中央にずらす。

(3) その後X方向の速度が(2)とは逆方向に1.000〜1.999dots/frameの範囲の時、カーブの中心を(1)とは反対側にずらす。

Riva はY方向の動きも時間軸に対するサインカーブとなっている。軌跡は楕円に近いが、正確にはリサージュ図形の一部である。(x = sin(7t), y = sin(5t))

Guiler 弾の代わりにQuiriを発射する。こいつが1機出ている間は敵の同時出現数が1減る。

Topper は、出現時のX方向周期は291程度だが、撃たれる毎に周期は半分になっていく。 振幅については、端で撃った場合は変わらないが画面中心(振動の中心)で撃つと小さくすることができる。

Gadohaも出現時の軌跡はサインカーブである。

体当たり系

出現時の自機の位置を目標とするもの。

Quiri,

Patartaは自機の先っぽを狙って来る。 Patartaは画面下半分に差し掛かった辺りで停止する。

Amaraは基本的には自機中央を狙い、Y方向が自機と一致すると戻っていくが、自機の手前を狙い体当たりせずに戻っていくパターンもある。

※Super Sonicの進行方向は出現位置によって決まっており、自機に向かってくるわけではない(ゼビウスのギドスパリオとは違う)

誘導系

だんだん速くなって、最終的には自機の速度より速くなる。従ってファミコン版のように延々と逃げることは出来ない。

Splitta 分裂パターンの基本は図の通り。 白矢印は自機の弾が当たった時の挙動、緑の矢印は時間の経過を示す。

出現時は裏と表が一体となって動いている。 ここで弾を当てると、表はそのまま、裏はひっくり返って表を向く。 その後、両方とも一定時間赤く光るが、ひっくり返って光っている間は撃っても何も起こらない。 それから両方の「裏側」が新たに出現するが、「裏側」の速度は最初の遅い状態となっているので、 表側とは別々に動くようになる。表側は分裂した8秒後に速度が遅くなるので、この性質を利用すると、時間稼ぎが出来る。

ところで裏側を狙って撃った場合は図の通りにはならず、裏側のみが突然表になり分裂する。

Lariosは合体後, x方向については自機を追尾するが, Y方向は単純に下方向への移動である。従って永遠に誘導することは出来ない。

実は、最後の合体までは中心部に50,000点ボーナス用の当たり判定があるのだが、通常では弾を当てる手段がない。(Mameのチートモード等のインチキを使うしか無い)

弾の速度

弾の速度は方向のみでは決まらない。図の通り、自機と相手の相対位置によって変化する。 この速度は弾だけでなくquiri, amara等自機をねらってくる敵の動きにも適用される。

図の見方: XY軸=相対位置の絶対値(dot), 色=1フレームあたりの速度(図の右側が凡例)

変わった遊び方

出来るだけ長くプレイする。

ここではバグを利用せずにできるだけ長くプレイする方法を述べる。普通にプレイしてスコアが50万〜200万点取れる方が対象。(これ以上上手い方は正攻法で行けるはず)

50万以上は点数による自機の増加が無いため、長くプレイしたい場合は高得点を狙っても意味が無い。かえって危険である。

全ての操作を自動化

MAME Rerecordingでは、LuaスクリプトによりRAM値の読み取り、コントローラーの操作等が出来る。この機能を用いればスターフォースの操作を自動化出来る。

敵の位置や速度はRAMから読み込んで進行方向を判断するのだが、実際に作ってみるとなかなか上手く行かない。

とりあえず作成したスクリプト: fs_auto.lua.txt

上記スクリプトを使用した動画: http://www.youtube.com/watch?v=ux5yTSxHdg0[→外]

バグ

Neira 自機が左下側にいるときは右上から、右上にいる時は左下から、と基本的に逆サイドから出現する。 しかしながら左上にいるときは右上から出てくる。どの場所にいても右下から出現することは無い。

Tittaは右上に反転する時と左上に反転する時で、垂直方向の速度が異なる。

更に左上に反転する時は画面上部に消えた後、下から現れてくる。仕様だと思っていたが実はバグかもしれない。

有名なバグとして、自機を画面外へ移動させる操作がある。 この原因となる擬似コードを下記に示す。

Y方向加算値 = 1.875; // 合体前の定数 // (1)上方向移動判定 if (上方向入力有り AND (NOT上方向移動禁止)) { Y方向カウンタ += Y方向加算値; Y位置 -= Y方向カウンタ.整数部; Y方向カウンタ = Y方向カウンタ.小数部; if (Y位置 < Y上端位置) { 上方向移動禁止 = true; Y方向カウンタ = 0.0; // このコードは下方向判定には無い } 下方向移動禁止 = false; } // (2)下方向移動判定 if (下方向入力有り AND (NOT 下方向移動禁止)) { Y方向カウンタ += Y方向加算値; Y位置 += Y方向カウンタ.整数部; Y方向カウンタ = Y方向カウンタ.小数部; if (Y位置 > Y下端位置) { 下方向移動禁止 = true; } 上方向移動禁止 = false; }

このコードは(1),(2)が同時に成立することを考慮していないが、 実際は、読み込みタイミングの差やチャタリングが理由で(1),(2)が同時に成立する場合がある。 特に筐体に年季が入っている場合はスイッチが劣化しており、再現確率が高い。 これを繰り返すと徐々に画面下にめり込んでいく。詳細な理由は敢えて書かない。

なお、mameには対称方向が同時にONとならないような仕掛けがあるため 上記バグの再現は不可能。但し inputport.c の update_digital_joysticks 関数をいじれば何とかなるかも...

空中に地上物

ヒドンが出現中、又はマジッカが反転中の時は、"アニメーション中の地上物" 管理領域に、アニメーションすべき座標へのポインタが保存されている。 この座標に対しては、数フレーム毎にキャラクタコードがインクリメントされ、キャラクタコードの下1桁が0xF(プンの場合は0x7)になると管理領域からポインタが削除される。

しかしながら、途中でファイナルスターがやられた場合はポインタがそのままとなるため、画面が切り替わった後にインクリメントが再開され、何もないところに地上物が出てくる。

敵の位置をずらす

敵の位置は通常、スクロールに合わせて左右に移動するが、この処理は、「自機が2フレーム左(又は右)に移動した時に, 敵を1dot右(又は左)に動かす」と実装されている。しかしフレームの数え方に癖があり, 微少な左右の移動を繰り返していると, 必要以上に敵が左右にずれていく。通常の操作では2〜3dot程度のずれだと思うが、意図的に30Hzの速さで左右の入力を繰り返すと数十dotずれていく。左右どちらにずれるかは敵の出現と操作のタイミングによる。

豆知識

敵の出現順序

こちらを参照。

ファミコン版とは大きく異なり、例えば次の様な違いがある

なお地上物のマップについては、 既に解析をしている方[→外] がいる。

攻撃パターン改造

「ゲームを始めてから十数分は簡単すぎて退屈」、「設定をHARDESTにしても物足りない」という方向け。 MAME向けのROMファイルを、 リンク先のスクリプト を用いて書き換え、敵の出現パターンを滅茶苦茶に出来る。 このスクリプトは手抜きの為、ゲームバランスは非常に悪い。 また、perlスクリプトの使い方がある程度分かる方が対象。下記にやり方を簡単に書いておく。

__END__ 以降の行は、各パラメータの範囲(敵の種類別)なので、改造後が難しすぎる、或いは簡単すぎる場合は 適当に範囲を調整すること。タブ区切りのデータなのでそのままExcelに貼り付け出来る。

改造後は、 こちらの動画[→外] のような感じになる。(※攻略方法としては参考にならない)

更新履歴

2012-05-11 23:08:25自動操作・バグ内容追加、その他表現修正
2009-02-21 13:00:24ROM改造用スクリプトのリンクを修正
2009-01-26 23:21:26バグについて追記
2009-01-18 22:10:09弾の速度・攻略法・攻撃パターン改造について新規追加
2008-01-05 21:55:45説明を追加
2006-02-11 22:37:02新規
ホームページ

このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください