m100simについて

これは何?

ステッパーズ・ストップのゲームであるマーガレット・ハンドレッドなどをコンピュータ上で実行しようとする試みです。同種のシミュレータは既にTHEKIさんによって発表されています。

使い方

web版では、入力欄に剣師のデータを入力すると、総当たり結果を表示します。ダウンロード版(Windows用実行ファイル+C++/Haskellソースコード)では、player.txtというファイルに剣師のデータを置いてfake-marguered.exeを実行すると、結果をresult.txtとresult.csvに出力します。

剣師の表記法は、THEKIさん制作のマアグヱリテに倣っています。一行に、HP、攻撃力、防御力、素早さ、持っている剣の一覧、名前をこの順でスラッシュ区切りで並べてください。例えば怪骨剣によってビルドされるメテオラなら、

10/5/3/2/斬斬/メテオラ

となります。名前と最後のスラッシュは省略可能です。また、この形式では剣の名前は略称で指定します。

もう一つの記法として、ステッパーズ・ストップで使われていた剣師表記も認識します。次のような形式です。

メテオラ:10/5/3/2/斬撃剣、斬撃剣

剣プール

詠唱剣など一部の剣はルールによって異なる効果を持ちます。このような剣が指定された場合、「デフォルトの剣プール」で定義された効果のものが優先的に使用されます。例として、デフォルトの剣プールがm2011α<1a>である場合、単に詠唱剣と書けばm2011α仕様の詠唱剣を意味します。一方、爆炎剣と書いた場合、m2011αには爆炎剣が定義されていないため、m100の爆炎剣が代わりに使われます。

剣指定の直前に剣プールの名前を書くことで、デフォルト以外の剣プールから剣を選択することができます。例えば「<100>詠」と書くことにより、m100仕様の詠唱剣を指定することができます。

現在、以下の剣プールがあります。

<100>
元祖マーガレットおよびマーガレット・ハンドレッドで定義された剣。
<1a>
マーガレット2011αおよびマーガレット2011で定義された剣。
<void>
マーガレット・ヴォイドで定義された剣。

戦闘記録について

マーガレット・ハンドレッドではルール上二つのパーティは対等であり、この二つを区別する用語もありませんが、このシミュレータでは表記の都合上常に片方のパーティを先に表記します。そちらを便宜的に左パーティと呼ぶことにします。

戦闘中に剣師がビルドされた場合、ビルドされた剣師の名前の末尾に識別番号が付与されます。この時、左パーティには偶数、右パーティには奇数の番号が割り当てられます。

処理の正確性について

バグを発見された方はBBSまたはメールで報告頂ければ助かります。

m100ルールの1.6.1において、「さらに」で記述される新しい分類「密結効果」が定義され、蟲毒剣などが密結効果を持つようになりました。これにより、例えば蟲毒剣と破壊剣を超同時に処理する場合、両方の剣のダメージを処理し終えてから毒与えと破壊を行うことになります。しかし、このシミュレータでは引き続き「さらに」の前後をまとめて一つの効果として扱います。このことが処理の結果に影響することはないはず(もしそういう例をご存知の方は教えてください)ですが、戦闘ログ内の記述順序が正しい順番にならないことがあります。

ゲームの性質上、極めて長大な試合展開(一ターンの行動回数が10000を越えたり、パーティ人数が億に達したり)があり得ますが、そういう場合シミュレーションが終わらないことがあります。この問題が根本的に解決される見込みはありません。

マーガレット・ハンドレッドとマーガレット2011の二つのルールは厳密には両立しません。m100にのみ、ビルドされたばかりの剣師がビルドに必ず失敗する制約があるためです。このシミュレータでは以下の規則でこの問題を回避します。