• 原田洋一

MCブロックビルダーをChromeブラウザで実行したときの「バグ」について(スクラッチでマインクラフトをプログラミング)


 今回は、Chromeブラウザを使用したときの問題についてご紹介します。この症状を、MCブロックビルダーの「バグ」というのは、本当はちょっと抵抗があるのですが、実際利用者の方がこの状況に遭遇すると絶対バグだと感じると思いますので、ここでは敢えて「バグ」と呼びます。ただ、本当はこれはMCブロックビルダーのバグというより、Chromeブラウザの「仕様」に関わる問題なのですが....。



 この画像を見てください。これは、Chromeブラウザ上のスクラッチで、MCブロックビルダーの「点」ブロックを使って、100x100、つまり1万個のブロックを積んで壁を作った結果です。プログラムは、下記です。このプログラムをChromeブラウザで実行すると、上の写真のようになってしまいます。

 


 このプログラムは、Y座標を変えながら100個のブロックを積み、それをX座標方向に移動しながら繰り返していくようになっています。こうすると、「点」ブロックを4000回繰り返した後くらいから、繰り返しの回数に対して1割程度、「点」ブロックが動作しない(=ブロックが置かれない)という症状が発生するということです。右側にところどころ穴が空いているところがそれです。



 実際にこのような大きな壁を作りたいならば、普通は「箱」ブロックを使えば一瞬でできますし、そうすれば問題は発生しません。ただ、「点」ブロックを繰り返すようなことをやると、この「バグ」に遭遇してしまうことがあります。



 実は、この「バグ」を発見したのは、僕の教室に通う、小4の生徒さんでした。彼女は、解説本にもある下の迷路プログラムを作っていたのですよね。



 この迷路の作り方は解説本を参照していただければと思いますが、もともと400個(20x20)のブロックを1つおきに「点」ブロックで置いてから、その上下左右のどこかにさらに1つ「点」ブロックでブロックを追加することによって作ります。すると、この迷路を作るだけで「点」ブロックは800回繰り返されることになります。



 その生徒さんはこの迷路を作った後に、迷路の壁をもっと高くしようとして、すべての点ブロックを3つ積むようにプログラムを「点」ブロックを使って改造したのでした。すると、ブロックが置かれない場所が出現するようになったのです。800個のブロックを3段積みすると、合計は2400個ですが、当時はまだそれくらいで「バグ」が発生していました。その後MCブロックビルダーの方の調整を行い、一番最初の例のように4000回くらいまではほぼ「バグ」が発生しないようにすることができましたので、今では上記の迷路でも、ブロックを5段積みくらいしても問題はほぼ発生しないはずです。



 で、この原因なのですが、これはChromeというより、ChromeのコアとなっているChromiumのメモリ管理の仕様に起因する問題で、ある意味Chromiumの限界を超えてしまった結果発生する問題でした。MCブロックビルダー側としては内部的にウェイトを入れたり、リトライするような仕様変更を行って、「バグ」が出現するポイントを何とか4000回くらいまで引き上げたという感じなのです。



 そのため、同じ「バグ」はChromiumがベースとなっているEdgeを使っても出現しますので、ご承知おきください。



 ということは、Chromiumがベースとなっていないブラウザである、Firefoxを使えば、最初からそのような「バグ」は気にしなくても良いことになります。実際に試してみると、まさにその通り、同じプログラムで、きれいな壁を作る事ができました。


Firefoxで同じプログラムを実行すると、ブロックの「欠け」が全く無くなる。



 このため、解説本のFAQ(158ページ)に、本件のかんたんな解説とともに「推奨ブラウザはFirefox」と記載しました(このファイルは無料のダウンロードファイル内にPDFとして含まれています)。ただ、実際にFirefoxはMCブロックビルダーを使うにあたって、Chromeより動作が遅い傾向があります。十分高速なPCを使っているのであれば、ほとんど気にならないのですが、ちょっとスペックの劣るPCですと、Firefoxの動作速度が気になることがあります。そんな場合は、上記を踏まえた上でChromeを使っていただくのが良いと思います。4000回を超える「点」ブロックの繰り返しをプログラムするというシチュエーションはそれほどないと思いますので。




 

22回の閲覧0件のコメント