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

サンプルについて解説:Init

日本語版MMF2でサンプルを開いて見てください。
最初に見てほしいのがフレームエディタからの画面で、まず雰囲気を。
次にイベントエディタからの画面で大まかな役割を決めたイベントグループを見てください。

フレームエディターでの画面

フレームエディターでの画面



イベントグループと各役割

イベントグループと各役割

一番最初にある「Init」というイベントグループは正真正銘ゲームループの一番最初に一回だけ実行される処理をまとめてあります。「Init=initialize」は初期化という意味で、具体的には初期設定ファイルを読ませたりそこから変数への代入をあらかじめ行う処理などをまとめたものです。 

イベントエディタからの様子

イベントエディタからの様子

ソースコードの効率の良い見方

アクションは「イベントリストエディタ(ショートカット:Ctrl+L)」から眺めるのが一番良く分かると思います。イベントの順番はやはりイベントエディタが把握しやすいのですが、詳細なアクションの順番などはイベントエディタだけを眺めていてもほぼ分かりません。他人が書いたソースを効率良く見るためにはMMF2独自の「エディター」3種類の特徴をまず把握することです。

  • フレームエディタ:オブジェクトの追加や配置、プロパティ画面と組み合わせた初期設定
  • イベントエディタ:イベントの追加・編集。イベントグループなどの管理
  • イベントリストエディタ:イベント内のアクションの編集・管理、とくに実行順など
イベントリストエディタからの一覧

イベントリストエディタからの一覧

この時点ではプレイヤーの初期位置を決めたりアイテムや通し番号の割り振りなどをやってますが、アイテム(障害物)の配置はイベントグループ「init」の中に含まれる「mapping」で特に重要な処理をやっています。早い話設定ファイルの内包ができなかったし、String Parser2も使えないしという予定外が連続したため代替の代替の代替みたいな処理を行っています。

Init>>mapping

Init>>mapping

図を見てもらうとちょっとややこしいことをやってるのが分かるかと思いますが・・

  • まずグローバル文字列を初期値設定ファイル代わりに使っている
  • あらかじめ割り振られた通し番号を使ってMMF2標準の文字列操作で抽出
  • 文字列の抽出は二段階で行い、テンポラリとしてローカルの可変文字列も使う
  • 無事抽出した文字列を数値としてローカルの可変変数に代入=アクションループ

・・こんな感じの処理を行っています。MMF2の標準にも文字列操作機能が少しは付いているのでこういうこともできます。ただしこういうのはParser機能を持ったエクステンションでやりたかったわけで、String Parser2がダメならもう一つの方法としては「配列」を使う方法も考えつきます。しかし結局、配列に代入する際にどうすんだってことになり頓挫しました。標準機能の中で作ろうとするとMMF2の不器用な仕様で作ることになるので、つまりご自分で作る際は素直に使えるエクステンションの中から便利そうなものを選んで使ってください。このやり方をおすすめはしませんが何も使えないときはこういう手法でなんとかします。あと良く見たらデバッグ用の仕様が残っていて、途中ローカルの可変文字列に処理中の文字列を代入してる工程が残っていますがこれは不要。
Val(Right$(Left$(visible_set,通し番号”object”),1))でいけます。
この処理は「文字列の左から何番目の文字を(1つ)抽出して、抽出した文字列を数字に変換して可変変数にぶち込む」・・という意味です。抽出する文字列の並びは通し番号に一致させてあるので、通し番号が1は非表示、2番は表示、3は非表示・・・という具合に処理されます。アイテムも同じ要領です。

推奨

推奨

通し番号とかアクションループ処理については基礎概念でさんざんやってるので説明は省きます。