Home > Minecraft > Minecraftのネットワークコード

Minecraftのネットワークコード

Minecraftのマニアックなネタです。

某所でMinecraftのネットワークコードが残念という書き込みを見たので、いろいろ調べてみました。

ネットワーク関連の不具合

Minecraftのネットワーク関連のエラーで有名なのは「サーバを建てて管理者がログインする分には大丈夫だけど、外部のユーザがログインするとネットワークインターフェイスがダウンする。」というものがあります。原因は同様だと思いますが、「外部のユーザがログインしようとするとLogging in …の表示のまま止まる」というのもあります。前者はなったことがありませんが、後者は私のメインPCで発生する症状です。
また、クライアント側でも「破壊したブロックが巻き戻る。」等の所謂通信ラグっぽい不具合が起きることがあり、これもMinecraftのネットワーク周りの実装の問題っぽいです。

原因とか

Florianという方(参考URLを参照)の主張によるとMinecraftのソフトウェアがバッファを使わずにネットワークインターフェイスに処理を投げていることが原因っぽいです。高価なネットワークインターフェイスであれば多少の無茶をしても処理しきれますがデスクトップ用の安価なものだと耐え切れないみたいです。

自分で接続したときはネットワークインターフェイスがダウンせずに、外部の人が接続した場合にだけダウンするのはlocalhostでの接続時にはネットワークインターフェイスではなくループバックインターフェイスというのを使用しているためです。

よく知られている対策方法

NICを弄る

1つはネットワークインターフェイスの送信バッファを多めに設定するということです。これはぐぐれば簡単に出てくると思うのでググってと言おうとしたら簡単に出てきませんでしたね。

まず、デバイスマネージャを開いてネットワークアダプターを探します。

2つ以上ある場合はメインで使ってるっぽい方を選びます。

右クリックメニューからプロパティを選んで、詳細設定タブを開きます。

バッファを多めに設定します。

OKを押すとおkです。押すとネットワークが一時的に切れるので注意しましょう。

これでもダメな場合でサーバを立てたいというのであればNICの購入を検討したほうが良いかもしれません。

1000円程度から購入できます。高いのは数万行きますけど、金に多少余裕があるならintelのデスクトップ向けNIC(4000円程度)がおすすめです。

tcpbuffer

2つ目はtcpbufferを使う方法です。

Florianがこの問題に対する暫定的な解決方法としてtcpbufferという外部ツールを用意してバッファを確保する方法を提案しています。

ダウンロードは参考URLのページから、最新版はv5です。

こんな感じで英語さえ読めれば分かりやすいUIなので説明の必要は少ないかと思います。

あくまで暫定的な手段であり、Mojang(Minecraft開発元)がソフトウェアを修正するべきだと主張しています。

サーバ側、クライアント側の双方で効果があるようです。

ちなみにCUIでも起動できます。

java -jar -Dgui=false -Dport=25500 tcpbufferv5.jar

サーバ側を弄る

3つ目の解決法ということでharuがやってみた方法がサーバソフトウェア自体を改変して内部にバッファを持てるようにするということです。

Florianが内部的にバッファを確保して通信を行うべき、例えばBufferedOutputStreamを使え的なことを言っているので実際にやってみただけです。

公式サーバは弄りにくいのでソースコードが公開されているCraftBukkitを弄ってみました。

弄ったファイルを置いておくので興味があれば使ってみてください。

craftbukkit.jarの中に加えるだけです。

buffered_patch.zip

ソースコードはこちら
https://github.com/haruArc/CraftBukkit

tcpbufferでperiodを50msに設定したのと似たような挙動をします。

同様の手法でクライアントを改変しても良いかもしれませんね。

簡単にできることなのでForumを探せばMODとして誰かがつくっているかもしれませんね。

参考URL

Clients lose connection with exeption “disconnect.overflow” after few seconds on the server.
http://getsatisfaction.com/mojang/topics/clients_lose_connection_with_exeption_disconnect_overflow_after_few_seconds_on_the_server

追記

Minecraft 1.6からネットワークまわりが改善されて、これらの記事の操作をする意味は殆どなくなっています。

スポンサード リンク

コメント (Close):2

たにくん 11-04-14 (木) 22:41

こんばんわ、初めまして。
Glitterに所属しているたにくんと申します。
今回アヴァレコを使用させて頂く事になりましたので報告をと思い、コメントしました。
有効に使わせて頂きます。
ありがとうございました。

haru 11-04-15 (金) 7:11

>たにくん
あらこちらこそ、わざわざ報告ありがとうございます。
なにか不具合やら要望等ありましたらフォーラムの方までお願いします。

Home > Minecraft > Minecraftのネットワークコード

検索
フィード
メタ情報

Return to page top