ブラフマーバグの分析と所感
この記事を見て思ったことがある。
そういえば《創造機神ブラフマー》もバグってたよなーと。記事内容はバグとはあまり関係ないんですけどね。
せっかくなのでブラフマーバグの原因を追ってみましょうか。
以下パート。
・ブラフマーバグってなにさ?
・なんでこうなったの?
・で、誰が悪いの?
・私が開発側なら
-
ブラフマーバグってなにさ?
《創造機神ブラフマー》は前からちょこちょこバグの報告が上がっていた。一度修正されて直ったと思っていたが、1.4EX1追加に伴いあらたなバグが発見されたようだ。
元ネタは信頼と安心のTwitter。いつものように該当ツイートは各自で検索してください。
状況は以下
相手 左から
《デビルウィンナー》《デビルウィンナー》《マーヤ》《オータムロイド》《クローニャ》
自分 左から
《ブラフマー》《ロキ》
丁度《ブラフマー》を召喚した時だと思われる。そこから
①墓地にあった《ミイラくん》を特殊召喚(1体目)
②《ミイラくん》にフィールド効果適用、《ミイラくん》の破壊フラグが立つ
③《ミイラくん》被破壊時効果発動、相手の手札を1枚捨てる
④《クローニャ》の効果発動、《ブラフマー》を選択。《ブラフマー》の消滅フラグが立つ
⑤《ブラフマー》の消滅処理が行われる
⑥《クローニャ》の処理終了
⑦《ミイラくん》の処理終了
⑧《ミイラくん》の破壊処理が行われる
たしかこのような流れになっていたと思います。⑥や⑦は実際の動作では見えていませんがプログラム的には多分こんな感じ。CoJのルール的には《ブラフマー》が消滅して2体目以降は特殊召喚されず、が正しいのかな?
-
なんでこうなったの?
いくつかの原因は思い浮かびますね。
説1「2体目の召喚時に《ブラフマー》がいないから処理が止まったよ説」
《ブラフマー》というインスタンスを生成したけど処理の途中で消してしまったので参照場所が分からなくなったよ、的な事が起こったのかな。一番あり得そうだとは思う。
説2「前回のバグで例外処理を記述したけどそれが仇になったよ説」
前回のバグでは特殊召喚中に破壊→《ネクロポリス》で5体目以降を召喚しようとするとエラーを吐いた(らしい)。もし例外処理として"4体まできっちり召喚する"みたいな事を記述していれば、その辺りでまたエラーを引き起こしそうではある。
-
で、誰が悪いの?
《ブラフマー》が悪いんや!………と見せかけて実は《マーヤ》が悪さをしている。より正確に言うなら「フィールド効果」というものが諸悪の根源。
この「フィールド効果」というものが厄介で、私もこの効果がどのタイミングで発動するのかは正確に理解していない。
かなり昔の話ではあるが、
《ドラグーン・レイア》に対して手札から《ベルゼブブ》を3枚→2枚になるように召喚。結果は《ドラグーン・レイア》生存。
ユニット召喚時より手札減少が先に参照されるのか、ならば《ファントム》はどうだ。しかし《ファントム》を投げても生存する、という報告もあった。
最近では《慧眼のサジタリウス》に《軍神アテナ》の効果が乗らないという報告も見たかな。《軍神アテナ》の効果が「フィールド効果」ではなく「ユニット効果」なら正しい処理ですけどね。
結局のところ「フィールド効果」の所為でややこしい処理になっているのではないだろうか。より正確にいうならユニットがフィールド効果を参照するタイミングがバラバラ(だと思う)なのでそこも今一度見直してもらいたいですね。まあ今回の件は《ブラフマー》側の記述に何かありそうですが…。
…………あれ、そういえば「フィールド効果」の方が先に出てる(Ver1.1)のか。やっぱり《ブラフマー》の方が悪いんじゃない?(テノヒラクルー)
-
私が開発側なら
もし私がコードを書く側の人間だったら。どういうコードを書くかなぁ…。
普通に"ブラフマーが破壊される時実行中の処理を停止する~"みたいな事を書きますかね…。そもそもの原因が分かってないんで適当ですけど。
新しいVerになってどんどんいろんな効果が追加されていきますね。人の手でプログラムを書いている以上、"想定外"は必ず起こるものです。私は表に出てこないプログラマ達を陰ながら応援しています。
2015/10/15 初校