カベジマ研究所2

Legasyswareのゲーム開発と日常をゆるく適当に綴っていくブログ

MMF2のエクステンション『Stringparser2』オブジェクトについて

ども。予期せず久しぶりの更新となりましたが健在でした。
ずっとシュマップス・アカデミーの開発を続けていましたよ!!


なんせ、暖かい頃合・・・春完成を目標にしてますから。
・・・ただまあ正直その目標の達成はかなり難しいので?
自身内ではこの締め切りは『絶対』ではないんですけど。


なるべく目指していた時期から期間空けずにリリースするよ。
なるべくですけどね。『なるべく』に関しての約束のみ守るっ!!


さて・・・今回はタイトルにもある通り、MultimediaFusion2の
エクステンションの一つである、Stringparser2オブジェクトについて
簡単に解説してみたいと思います。


え?何故かって?
・・・自分で忘れないように・・・と言うのは冗談で、
このエクステンションは初心者には相当難しいだろうと思われるからです。


レガシスウェアでも結構長い間使い方が分かっていなかったんですよ。
ずっと研究はしてきたんですが、どうも上手く行った試しがない。何故!?


それは・・・基本的な使い方を解説した記事がネット上に少ないから?
だと思うんですよ。使い方が分ってみれば実は簡単でした。でも!?


「このエクステンションは具体的な使い方が分り難い!!」


ハイ、間違いないです。
だって私自身が初心者みたいなもんですから。
私に分んなきゃぁ、そりゃMMF2始めたての人にはもっと分らないでしょう?
なので簡単に・・・ではありますが、Stringparser2オブジェクトのコツ?
記事にしてみたいと思います。我々同様に悩んでる皆さんのお役に立てるように。


先ず・・・Stringparser2とはなんぞや?・・・と言いますと、
これはMMF2エディタ内で扱える様々な文字列の・・・好きな区間だけを
抜き出したり書き換えたり、後ろに指定の文字列を付け加えたり
指定箇所を削除したりできる・・・と言う、実は案外すごい機能を
秘めたエクステンションなのであります。


ちなみに文字列とは、『文字列オブジェクト』のパラグラフであるとか
『グローバル文字列』であるとか、或いは『iniファイル』であるとか、
MMF2内部でテキストデータとして保持される類のもののことです。多分。


書き換えて何が出来るのか・・・と言うと?先ず一番解りやすいのが
セーブデータですね。


セーブデータなんて普通に書き換え出来るでしょとか?少し甘い!!
好きな部分だけを書き換えることが出来る・・・と言うことはですよ?
プレイヤーの得点と到達ステージ数の最高記録を同じグループ内の
アイテムとして一綴りで保存して、後に記録更新した箇所だけを
書き換えることも簡単に出来るのです!!


もちろんそれぞれを別々に保存しておけばわざわざStringparser2
(以下ストパー)使う必要なんてないですが、それだとiniのグループと
アイテムを書き換える度にいちいち呼び出す必要があり面倒くさい。


区切り文字を挟んで一個のデータにしてしまえば管理が楽です!!
これはセーブする項目が少ないゲームにはあまり縁が無いかもですが
セーブファイルをたくさん持てるようなゲームを作る場合などは


「プレイヤー3のレベルと持ち物を変えるには・・・えーとグループは
これでこのアイテムとこのアイテムとこのアイテムを全部書き換えて・・・」


なんて何行もイベント処理を書かなければならなくなります。
面倒だし管理もややこしくなりデバッグが大変です。
シュマアカではコレクションルームが複雑怪奇で鬼・厄介です。
それに特定箇所に付け加えたり特定箇所を削除したりはストリングス系の
エクステでしか出来ません。これが使えると出来ることが倍増します。


ストパーが便利なのはセーブファイルの管理だけではありません。


例えばRPGならば予め用意している文章内のプレイヤーの名前部分だけを
変えて表示させる・・・とかも可能なんですよ!!どうやるかって?


具体的には・・・予めデフォルトのキャラ名が入った文章を作っておきます。
そしてキャラ同士の会話であるとかキャプションであるとかゲーム中の同じ
名前が出てくる全ての箇所を・・・ゲーム開始時にプレイヤーが入力した
主人公名=iniに保存されていると置き換えてから表示する・・・だけです。


これだとプレイヤーが名前を入力しなかった場合も用意してある文章を
そのまま表示するだけなので複雑な処理は必要ありません。


ちょっと長くなってしまったので今回はストパー使う為の基本的な
準備だけに絞って説明しますが機会があれば、応用編もやってみたいですね。


さて・・・ストパーを使うために先ずしなければならないこと・・・それは
『ソースストリングスの設定をする』ことです!これをしないと何も起きません!!
イベントエディタ上でストパーアイコンの真下の枠にてSet Sourse stringsを
実行してください。


グローバル文字列でも文字列オブジェクトでも何でも構いません。
ソースとして取り込む・・・取り込んだ文字列はストパー内部で保持されます。
ここで注意!!ストパーは単純に「ソース文字列を保持してるだけ」です。


複数箇所書き換えを行っても、読み出したら最後に書き換えした部分のみ異なる
文字列を返されるだけです。要は書き換えする度に保存してやらないと駄目なわけです。
でも・・・ソース文字列の保存なんて項目はありません。どうすればいいかって?


・・・もう一度「ソースストリングスの設定をする」これです。
書き換えをする前に一々ソースストリングスを設定しなおしてください!!


ソースストリング設定⇒内部で保持⇒書き換え行う⇒ソースストリング設定⇒
書き換えた文字列を新たに内部に保持・・・と言う流れです。


区切り文字を使うのであればそのフレームの開始時にでもList Tokenizingから
Delimiter⇒Add DelimiterとSet Default Delimiterをそれぞれ実行してください。


Add Delimiterで""の中に入力した区切り文字(任意の記号など)を
Set Default Delimiterで再び""の中に入力すれば以降はソースストリングスに
予め指定した区切り文字があれば、何番目の区切りからでも抜出しが可能です。


・・・これだけなんですよ。簡単でしょう?
でも、これが実は意外と分かり難かった。日本語の解説が少ないですからね。
おかげでウチはコマンドの解析と検証に大分時間を使ってしまったです。
でも、その代わり使い方はバッチリ!!その成果はシュマアカでは、
ランキング閲覧画面で遺憾なく発揮されているようです。


ストパーについてもっと詳しく知りたい方は以下のリンクよりご確認下さい。
MMF2 Wiki、Stringparser2のコマンド解説ページ


かなりザックリと解説したので解り難かったとは思いますが何事も勉強です。
あとは自分で試してみてください。そして面白い使い方を発見したら是非、
それをご自身のゲームで活用してみてください。


それでは今回はこの辺で。画像なども時間があれば貼っておきましょう。
ではいつの日かまた次回。