縦スクロールシューティング11

縦スクロールシューティングの作成

ここからは前回までに作った「自作八方向」を実際に組み込んでシューティングゲームを作るという試みと、その解説です。 

今回、縦シューティングゲームを作る際に参考にさせて貰ったのが1986年製のゲーム「魔城伝説」。一部特殊なゲーム仕様はこの「魔城伝説」からパクっており、ベースは縦シューティングなんだけどいわゆる一般的な縦シューティングとは仕様が多少異なっています。

  • (障害物が無ければ画面右から左、左から右へワープできる)
  • (障害物がマップ上に配置されており、プレイヤーの進行や操作を妨害するが、接触しただけではプレイヤーは自機をロストしない。障害物は破壊できるものもあるが、アイテムに変わったりする場合もある)
  • (強制縦スクロールで、障害物に挟まれた時には自機をロスト)


サンプルのダウンロードと内容説明

ダウンロードはこちらからどうぞ→
動作確認用(SWF版)→

これはMMF2で縦シューティングを作るためのサンプルです。標準以外の特別なエクステンションをほぼ必要としません。MMF2 R251日本語版で作成しました、英語版MMF2では開けません。敵の動作部分を除けば約200行程度のイベントです。イベントグループを活用してあるので、どこでどんな作業をしているかは比較的わかりやすい・・はずです。使用しているグローバル変数のリストやローカル変数(アクティブオブジェクトが持てる可変変数を筆者は時々ローカル変数と呼んでいます)のリストが内部ドキュメントに入っています。

サンプルファイルが対応しているビルド種類はJava系全般、SWF、スタンドアロン(PC)。しかしそれぞれフレームを切り替えたときに多少互換性に問題があって、完璧に製作者の意図した通りに動くのは唯一スタンドアロン(PC用)のみですが、それ以外は問題ありません。フレームのプロパティ部分が各エクスポーターごとに対応が異なるので、JavaとSWFでもすでに異なるフレームに処理を移した時点で動作にも非互換性が現れます。この部分は共通化するのが厄介だったので手間を省かせてそのままにさせてもらいました。ゲームとは直接関係ない蛇足部分なのでお許しください。

使用している外部エクステンションは唯一「Advanced Direction」だけです。しかしこのエクステンションはJava全般、SWF、そして最新のiOSエクスポーターでも使えるのでMMF2では「ほぼ標準」と言って良いエクステンションだと思います。つまりほぼ標準機能だけで作ったので今後どんなビルド形式にも比較的簡単に対応できるはず。

  • 特定のエクステンションやビルド形式に偏らない
  • なるべく標準機能でいかに工夫して作るか

こういう意図でも作ってあるので専用のエクステンションを利用した場合より色々めんどくさいことをしてる部分もあります。

その他:雑記(本音は英語版で作り直したい・・)

いずれ作るだろうけど今はできないので一応予定として書いておきます。英語版で作ったMFA(アプリケーション)は日本語版でも開けるのですが、日本語版あるいはユニコードパッチで作ったMFAは英語版(ユニコード非対応)MMF2では開けないし、イベントやアクションも全く互換性が無いのでコピー&ペーストが一切効かず、非常に最悪なことに一から作り直しです。これを知らなかったのでユニコード対応版で作ってもあとからイベントやアクションはコピペできるだろ、とか勝手に思っていました・・。 

このサンプル、もともとモバイル用Java(MIDP2.0)の仕様制限内で作っていたのでスプライトの拡縮・回転機能は使ってないのですが、高速ループは多少使っています。また途中から衝動買いしたSWFエクスポーターを使ってビルドテストも行っていたのですが・・

  • SWFだと動作がJavaより重い?

これはどうも高速ループ使うと現状のSWFエクスポーター(R251)ではこれが原因で重くなる=高速ループが鈍足ループになるバグが含まれているようです。しかしJavaビルドでもバッドのウハウハがかなり必要だったので、トラブルが起こる度に機能を削ったり実装を替えたりして工夫したのですがSWFのビルドにもこういうのがあるので、もう標準機能だけで作ってるのに納得いかんぜよ・・とは思うのですがForeach使うと日本語版ユーザー向けのサンプルにならないしでいかんともしがたく・・。

こんな感じなので本サンプルは英語版では開けないし流用してHWAで作りたくてもかなり手間がかかってしまいます。

とりあえず来週からは今回作ったこのサンプルを元にチマチマ解説をしていきます。