解決・解決・解決
*****
当記事でコメントをお寄せいただきました皆様
大変ありがとうございました!
無事解決いたしましたっっ
真相は・・・「アイテムから電話した」
でした!!
わ、わ、忘れてた……ぁ
電話はショートカットキーだけじゃなかった……!
作った本人が忘れておりましたっ
いや~~~~よかった!!
しかし忘れるか、普通……
自分で書いた仕様書にすら書き忘れてました!
すごいなあ
やはり記事を書くと名探偵たちが現れるものですねっ
本当にありがとうございました!
記事は自戒もこめて残しておきます。
どうしてもこちらで再現できない不可解なバグがありましたので、記事にまとめることにしました。
これまた長い記事なので、お読みになるのはお手すきのときに、しょうもないミステリーを読むようにお読みになっていただければと思います。
結論から申し上げますと、解決できてません。
有志の方からの大変なご協力を賜ったにもかかわらず、真相はまだ闇の中です。
そこでこの件を書き記し、広く真相究明のお知恵を拝借したいというのが、この記事の趣旨でございます。
題して「あれできちゃうの? メルフィと交代バグ」です。
(1)
この事件は当初、一通のご報告から始まりました。
"I found a bug that allows you to free roam as Melfi if you call her"
私はその手紙を受け取ったとき、上質な紙の透かしに入った大文字のEと小文字のgを発見して「これはボヘミア製ですよ」と助手に言ったりはせず、「おや、このバグはちょっと予想外です」と思いました。
2章ではまだメルフィ単独で出歩くことはできません。
電話で交代を要請しても「あ、体験版ではまだできないんだった」とシズマが言うのが正しい挙動です。
ところが……
「ドルジェル夫人、電話でメルフィと交代できてしまいますよ」
と、書かれているのでした。
その後、他の方からも同様のご報告を頂くことになります。
最初私は「あれあれ、なんと単純なバグを見逃していたことでしょう。しかし直すのは容易です」と、このバグを簡単に考えていました。
バグというものは「あるよ」とご報告さえ頂ければ、それを残した反省こそございますものの、中身を開けばそこに確かな失敗が鎮座しているものです。
ところが……
この電話バグだけは、中を開いても、問題が、なかったのです。
少々込み入ったお話になってしまいますが、この事件の内容を正確にお伝えするためには避け得ぬところでございますので、そのあたりも踏まえつつ、以降順を追ってご説明したいと思います。
メルフィアスの電話の機能はまず「電話ですよ」というのを、'コモン58'というメカ執事がたえず監視しております。
このメカ執事は普段はしっかり者で、ページアップ/ダウンボタンの押下を昼となく夜となく見張るのが仕事です。
彼はボタンが押されたやいなや、’1章’の電話機能なのか、’2章’の電話機能なのかを判別して、それぞれの役割をもったコモン(使用人)を呼び出します。
メルフィと交代できるのは1章の電話機能を持った使用人、交代できないのは2章の電話機能をもった使用人です。
使用人が二人いるのは、電話機能を一つにまとめると一人の使用人の仕事が膨大になるための救済措置でした。
さて問題の’2章なのにメルフィと交代できてしまう’のは、2章でも1章用の使用人が呼ばれてしまっていることにより発生している。
ここまではすぐにわかりました。
要はメカ執事が仕事でミスをした、というわけです。
どういうミスだったのでしょうか。私は即座に彼を問いただしました。
メカ執事の仕事は役割の重要さのわりには内容は単純です。
彼は変数91という箱に入っている中身を確認します。
電話がかけられたやいなや、「91」の箱の中身を見るわけです。
すると、2章なら中に2と入っていて、彼は2章用の使用人を呼びます。
ところが2章なのに1章用の使用人を呼んだということは、「91」の箱の中身が間違えていたのではないか。彼は涙ながらに反論しました。
そこで私は、電話機能が使えるようになったタイミング付近にいる者たちに証言を取りました。
コモンやイベントたちに「誰か91番の箱に触った者はいませんか」と。
ところが誰も彼も、その箱には触っていない、というのです。
どんどん調査範囲を広げ聞き込みを続けましたが、結果は同じでした。
それもそのはず、「91」の箱の中身は1章から2章にいくその時しか、入れ替えることはされないからです。
これはいったい、どういうことなのでしょうか……。
(2)
そこで私は書斎に帰り、ご報告くださった方々にお願いしてセーブデータをお借りすることにしました。
数人の方からのご報告だったので、いずれの方にもお願いしたのですが……、
そのころ、時間は深夜で「ご連絡してもすぐにはお返事いただけないでしょう」と半ばがっかりしながらメッセージを書いたものでした。
しかしなんとご親切にも、すぐさま、セーブデータだけでなく、動画で撮影してくださったり、データフォルダ一式をお送りくださって同じ環境を提供してくださったり、わざわざ再度テストプレイまでしてくださったり、感謝してもしきれないご協力を賜りました。
私はこのご厚意を一生忘れることはないでしょう。
さて、そういうわけで手元にセーブデータがやってまいりました。
これでもう解決です。
どういうことが起こったか、事件の夜を再現する手はずが整ったわけなのですから。
真犯人が誰で、どういう手口で、犯行に及んだか、もうわかります。
ところが……
どのデータをこちらで開いても、その電話バグが再現されないのです。
私はいそいで、バグの発生しているセーブデータの変数91を見てみました。
中身は……
「2」
なるほど、再現されないのは道理です。
しかし……
では、なぜプレイしていただいた方々のほうではメカ執事が勘違いをしてしまったのでしょうか?
変数91の中身が「1」とか「3」なら間違うのもわかります。
実はそのバグを撮影していただいた動画の中で、変数が「1」だとか「3」だとか、とにかく「2」でなかったら出てこないキャラが映りこんでいました。仮に「A氏」としましょう。
A氏が映っている以上、やはり変数91は、このバグが発生している方の環境でも、中身が「2」で間違いありません。
ただ一つだけ注意するべき点が。
メカ執事が変数91を見るとき、その見方は「変数91の中身は2であるか」でした。
しかしA氏の出現条件は「2以上であるか」でした。
2であるか、と、2以上であるか。
これは同じようでまったく異なります。
たとえば。2.5とか小数点以下があった場合。
2.5だったら、メカ執事の「2か?」という問いにはNO、しかしA氏の「2以上か?」という問いにはYES、と、理屈が合います。
ところが……
変数91の箱には、整数しか入らないのです。
つまり小数点以下は切り捨てられ、入らないようになっています。
もし、もし仮に何かの間違いで入ったとしても、それなら、そのセーブデータをこちらでリプレイしたときに再現できるはずです。
変数を開いていたら、2.5、とかそういう数字が確認できるでしょう。
しかし確認した数字は「2」。
いったい何が、起こっているのでしょうか……。
もし、これをお読みになっている方の中で、自分にそのバグが起きているかどうか、すぐにわかる判別法があります。
それは、電話を開き、そこに、「レイコ」と出ていたらそれは1章用の使用人の仕事です。
「レイコ」には2章では電話を掛けられないはずで、目下のところ、2章用の電話機能にないからです……!
(3)
さあここまでお読みになって、この謎を解ける方はいらっしゃいますでしょうか。
ちなみに私はまだ解けません。
じつは、このバグの一歩手前で、2章の旅館から1章のグスタフNTRシーンに飛ぶというバグがありました。
これはある条件下でのみ発生するもので、1章に戻るのだから、これが原因だろうと思いました。
ところが、その辺りをいくら調査しても変数91に触った者はおりません。
また、そのバグを経過なさらなかったプレイヤーの方からも、メルフィと交代できるというご報告をいただきました。
ということは、グスタフバグは直接、この事件には関係していないということになります。
重要容疑者が一人減ったわけです。
この問題のもっとも重篤なことは、変数の中身が私の環境とプレイヤーの方の環境で違う、などということになったら、もうゲーム制作は困難である、ということです。
変数という箱は電話だけでなくあらゆるところで使っています。
それがそれぞれの環境でバラバラになる、ではテスト不可能です。
ただし、もしそうなら、そういう理由で今回の事件が発生しているのだとしたら、そもそもこのメルフィ電話バグが発生した環境で、2章体験版を最後までプレイできるわけがないのです。
ですから、つまり何か、どこかにこの変数91固有の問題があるはずです。
事件のてがかりをまとめます。
1,メルフィと交代できるのは変数91が2ではないからである
2,しかしバグ発生のセーブデータをこちらで確認しても変数91は「2」と確認できる
3,なのでこちらでメルフィ交代のバグが再現されない
4,事実2でないと出ないキャラが出ているが、その出現条件は2「以上」であること
5,しかしそのキャラは変数91が「3」だと出てこない
6,変数91には整数しか入らない
ちなみに、こちらではすべてのバージョン、つまり最初に公開したバージョン、修正パッチを当てたバージョンを、開発機と検証機の両方で試してみましたが、再現されませんでした。
しかし複数人の方からの情報ですので、必ず発生しているバグです。
いったい真犯人は誰でしょうか!
これはこういうことではないか?というコメントや情報、お待ちしております。
最後に、この記事を書くためにご協力いただきました皆さま、本当にありがとうございました。