Home > Minecraft

Minecraft Archive

Minecraftのグラフィックライブラリの更新方法

またまたMinecraftネタです。

Minecraftを起動すると画面が真っ暗になったりする人向けのおはなしです。

起動できるけど問題がある人向けです。OpenGL系のエラーで起動できないという人はPCかグラボ買い換えましょう。

特に問題なくプレイできている場合は弄らなくても良いと思います。

Minecraftが利用しているライブラリはlwjgl(Light Weight Java Game Library :軽量なJava用ゲームライブラリ)という物です。

Minecraftに同梱されているlwjglは古いものなので環境によっては正しく動作しないかもしれませんし、一部のバグが未修正のままであるようです。

公式フォーラムではancient version(古代のバージョン)なんて言っている人もいます。

というわけで最新版に更新してみましょう。

http://sourceforge.net/projects/java-game-lib/files/Official%20Releases/

環境によっては最新版が安定するとは限らないので、いろいろ試してみましょう。

lwjgl-2.x.x.zip みたいな感じのファイルをダウンロードしましょう。

展開すると中にjar, native , doc, res という4つのフォルダがあると思います。

そのうちjarフォルダの中にあるjinput.jar, lwjgl.jar, lwjgl_util.jar を.minecraft\binに上書きします。

nativeフォルダに各OS用のネィティブライブラリがあるので、自分のOSにあったものを.minecraft\bin\nativeに上書きします。

これで更新は完了です。試しにMinecraftを起動してみましょう。

この作業はMinecraftの更新があるたびにやらないといけないので多少面倒ですけどね。

Windowsの場合は.minecraftフォルダはファイル名を指定して実行(Windowsキー+Rキー)に %AppData%\.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からネットワークまわりが改善されて、これらの記事の操作をする意味は殆どなくなっています。

イカが大量発生@Minecraft

はい、就職活動中のharuです。

ここ2~3日はスケジュールがハードすぎて死にかけたので土曜日は何も考えずに休養してます。

作ってるソフトウェアなどはしばらく作成休止してますので悪しからず。

もとからちまちま作ってて更新は遅いですけどね。

さて、Minecraftネタです。

バージョン1.4のアップデートとかもあり1.5更新の噂もされて何だか熱い感じのMinecraftですが・・・

先日うちのMinecraftサーバを利用している友人から「鯖が重い」との報告を受けました。

色々と忙しかったのでうちのク○鯖のスペックが足りなくなったのか・・・それとも1.4更新のバグかと悩みつつ放置してました。

少し調査したところ特定のエリアだけ重くなっていることがわかりました。

その周辺を調査したところ、近海に大量のイカが湧いていました。

これは一箇所のスクリーンショットですけど、他にも何箇所かこんな状態になっている場所がありました。

そりゃこんだけmobが密集して湧いてたら重くなるよなぁと思いつつ処理しておきました。

大量発生したイカのせいで重くなっていた関係でラグが半端無く処理中に忘れた頃に来た窒息ダメージとかで死につつもなんとか・・・

イカの処理が完了したらそれまで重かったのが嘘のように平常に戻ったので原因はイカだと推測できます。

ただ、少し待つとまた同じように湧いて近くのエリアが重くなってしまうんですよね。

これは1.4になってイカのスポーン率が調整でもされたんでしょうかね?それともCraftBukkit特有のバグか・・・

同じように1.4になってからサーバの一定箇所、特に海辺が重くなっているのであれば近海を調査してみることをおすすめします。

トラップタワーなんかを作っていると生物の数に偏りがでて全てのモンスターの総数=イカの数くらいになってしまうので海辺にトラップタワーなんかを作るときは注したほうが良いかもしれません。

CraftBukkitならMobControlとかのプラグインを入れてスポーン数を制御すると良いかもしれません。

まーたCraftBukkitのプラグインの互換性が・・・

Minecraftネタです。

サーバMOD?のCraftBukkitのプラグインの仕様がまた変わって互換性がなくなりましたよっと。

記事を書いている現在(2011/3/27)でけっこうなプラグインが動かなくなっています。

仕様変更ってのがイベントのパラメータに渡すクラスの名前変更と、プラグインを有効にする前にイベントを登録しているとエラーとかなので怠い事この上ないですね。

以前書いたトロッコブースタのバグが修正されたバージョンがJenkins Build #564Git 554e5e62)なのですが、これだといろいろ更新があってプラグインの互換性がなくなるみたいです。

Jenkins Build #560Git e3850a1b)が今のところプラグインの互換性が失われない最新のバージョンみたいです。

というわけで#560でトロッコの修正を加えたものを私の管理する身内鯖でも使ってます。

置いておくので使いたい人が入ればどうぞ

craftbukkit.zip

トロッコブースター

MinecraftでCraftBukkitを使ってサーバを運用している人向けのネタです。

Gitの73647864179cbab9f340あたりの変更からマインカートのブースタがおかしくなります。

こんな感じで4つのマインカートを設置するタイプのブースタです。

全文を読む

ホーム > Minecraft

検索
フィード
メタ情報

Return to page top