マイクラMODメモ九条へいしの開発ノート
柱 1・プラグイン開発

参加者が来てから見つかった「アイテムが増える」不具合 3 つと、その直し方

広場で赤いドラゴンのラクガキをペットとして連れて歩くプレイヤー

この記事でわかること

  • プラグインが「なくなったら作り直す」ものは増やせてしまう、という落とし穴
  • 樽を開いているときだけ左手の道具が動かせた理由
  • 自動で配るのをやめて、広場のチェストでもらう形にした話
  • 置物が分身して見えた 2 つの原因

ラクガキ街は 10 月 10 日にテストサーバーとして住民の人を迎えました。オープンまでに撮影用サーバーで何度も試していたのですが、実際に何人もが自由に遊びはじめると、自分では思いつかない動き方がたくさん出てきます。中でも多かったのが「アイテムが増える」たぐいの不具合でした。

増える不具合は、放っておくと持ち物があふれたり、ほかの人に配れてしまったりして、遊びのつりあいがくずれます。この記事では、オープンから数日のあいだに見つかった 3 つと、その直し方を書きます。

その 1:樽を開いていると、左手のキャンバスが増える

報告と、最初の空振り

最初の報告は「キャンバスが複製された人がいる」というものでした。ここでいうキャンバスは、アトリエで絵を描いているあいだ左手に持たせている、部位を選ぶための道具(見た目は絵画)です。

まずサーバーの記録を調べましたが、キャンバスがだぶっている跡は見つかりませんでした。アトリエの区画も全部見て、保存された絵の記録も確かめたのですが、どれも 1 つずつです。ここで記録だけを見ていても進まないので、本人に「どうなったか」を聞いてもらいました。返ってきた答えは「樽を開いているときに、左手のキャンバスが複製された」でした。

地下アトリエのキャンバスに、赤いドラゴンのラクガキがブロックで描かれている
地下のアトリエで絵を描いているところ。描いているあいだ、左手には部位を選ぶための道具を持っています。

原因:樽の画面には左手のマスがない

左手の道具は、ふだんは動かせないように止めていました。ところが、樽やチェストを開いているときは、その止め方が効いていませんでした。樽の画面には左手のマスが出ないので、F キーなどで左手の物を樽にしまえてしまうのです。

さらに悪いことに、プラグインは「左手に道具がない」と気づくと、新しい道具を作り直す作りでした。樽に 1 つ、左手に 1 つ。これで 1 つ増えます。何度もくり返せば、いくらでも増やせてしまいます。

直し方

このとき、同じ人のメモから「アトリエの『まえ』の表示がずっと残る」という不具合も見つかりました。描くときに正面がどちらかを示す「▼ まえ ▼」の目印が、近くにあるものしか消さない作りだったうえにワールドに保存されていたため、区画を移るたびに古い目印が残っていました。目印を作るたびに番号を覚えて、確実に消すように直しています。

アトリエの中に描いたベッドの絵と、その上に浮かぶ「▼まえ▼」の目印
描いている絵の正面を示す「▼ まえ ▼」の目印。これが消えずに残り続けていました。

その 2:帰還の羽とラクガキ帳が増える

次に見つかったのは、街へ帰るための「帰還の羽」と、メニューを開くための「ラクガキ帳」が増える件です。どちらも、コマンドを使わずに遊べるように、こちらから自動で配っていたものでした。

アイテム前の配り方増えたしくみ
帰還の羽持っていなければ、入ったとき・生き返ったときに配るチェストにしまったり人に渡したりすると「持っていない」ことになり、次に入ったときにまたもらえる
ラクガキ帳持っていなければ 5 秒ごとに戻すチェストにしまう・捨てるは止めていたが、バンドル・額縁・模様入りの本棚・飾り壺など、止めていない場所に入れると戻ってくる

どちらも、樽のキャンバスと同じ形の不具合です。「なくなったら自動で作り直す」しくみは、「なくなった」と思わせる方法が 1 つでもあれば増やせてしまいます。入れ物の種類を 1 つずつふさいでも、マイクラにはしまえる場所がたくさんあるので、いたちごっこになると考えました。

自動で配るのをやめた

そこで考え方を変えて、自動で配るのをやめました。入ったとき・生き返ったときには何も渡さず、なくしたときに 5 秒ごとに戻すのもやめています。そのかわり、広場の真ん中にあるチェストを右クリックすると、持っていない物だけ 1 つずつもらえるようにしました。もともとこのチェストでも羽とラクガキ帳がもらえていたので、住民の人にとっては「もらう場所が 1 か所になった」だけです。

撮影用サーバーで、持ち物を空にして 8 秒待ってもラクガキ帳が戻らないこと、倒されて生き返っても何ももらえないこと、チェストを右クリックすると 1 つずつもらえることを確かめてから本番に入れました。

まだ残っていること

しまってからチェストへ行けば、まだ増やすことはできます。ただ、自動で増え続けることはなくなり、増やすには毎回広場まで歩く必要があります。もっときびしくするなら「1 人 1 回だけ」にする方法もありますが、なくして困る子のことを考えて、今はこの形にしています。

その 3:置物が「分身」する

3 つ目は、ラクガキを小さな置物にして飾る機能です。「置物が取れるときと取れないときがある」「たまに分身する」という報告でした。

木の床の部屋に置かれた、オレンジ色のネコの形の椅子
描いた絵から作った家具(ネコの椅子)。置物や家具は、ブロックではなく「ブロックの表示」を組み合わせて見せています。

本番のワールドのデータを読むだけの方法で、置物の表示がどこに何個あるかを数えたうえで、プログラムを読み直しました。原因は 2 つありました。

  1. 同じ場所で「置物として置く」を 2 回押すと、1 か所に 2 つ重なって置かれていた。1 つを拾うと、もう 1 つが残ります。これが「分身した」ように見えて、しかも残った方は拾えませんでした。
  2. クリエイティブモードで置くと、アイテムが減らなかった。別の場所にもう一度置くと、最初の置物がそのまま残り、それも拾えなくなっていました。

直したあとは、置こうとした場所にすでに置物かブロックがあれば置かずに「そこにはもう置物があります。少し動いてから置いてください」と出します。同じ置物をもう一度置いたときは、前の置物をきれいに消してから新しい場所に置きます(移動のあつかい)。前から残っていた表示のかけらも、その場所が読みこまれたときに消えるようにしました。データを調べた時点では、本番にだぶった置物は保存されていなかったので、まとめての片付けは要りませんでした。

ついでに直した事故:押される・息がつまる

増える不具合ではありませんが、同じ時期に「ラクガキがプレイヤーを押し込む」「狭いところに入って窒息する」という事故も起きていました。ラクガキ(ペット)がぶつかってプレイヤーを押し、壁にめりこませてしまうことがあったのです。

ラクガキがプレイヤーを押さないようにしたうえで、ラクガキに乗っているとき・降りてから 10 秒のあいだ・ラクガキが近く(8 マスくらい)にいるときは、壁にめりこんでもダメージを受けないようにしました。乗っていなければ、近くの空いている場所へ出します。撮影用サーバーで、まわりを石でうめても体力が 20 のまま減らないことを確かめています。最初は「近く」の範囲がせまく、6 マスほど離れていると効かなかったので、少し広げました。ラクガキが近くにいないときは、ふつうのマイクラと同じように息がつまります。

3 つの不具合からわかったこと

テストで見つからなかった不具合は、住民の人が見つけてくれたものです。報告してもらえる場所と、聞き返せる関係があったから直せたと思っています。

この記事は、九条へいしが自分のサーバー「ラクガキ街」と撮影用サーバーで実際に試したことをもとに書いています。気づいたことや間違いは お問い合わせ から教えてください。