2011年9月17日土曜日

Puppy LinuxにMinecraftのサーバ(fCraft)を建てよう(前編)

ちょっと長いです。興味のある方だけどうぞ。

Minecraftと言うゲームをやってみた。
無料で出来るClassic版。

シングルプレイの他にマルチプレイで多人数の参加ができる。
見知らぬ人が建てたサーバにお邪魔して、ゲームをプレイできるのだ。
ただし、お邪魔する身分では利用できる機能の制限がある。

なので、自分でサーバを建ててしまおうと言う目論見。

サーバには公式で提供するサーバと、カスタムサーバがある。
機能的にはカスタムサーバの方が良さそうなのでココで紹介されている
fCraftと言うのを使ってみよう。


先ずは、WindowsXPでサーバを建ててみる。ココを参考にしたら、
あっけないくらい簡単にできてしまった。

しかし、サーバマシンと自分でプレイするPCが同じになってしまうので、
別PCでサーバを建てられないものかと思案。

fCrsftはLinuxにも対応してるらしいので、Puppy Linuxで出来ないかと
トライすることにした。

例によって、Puppy Linux + fCraft などと言う日本語の情報量が圧倒的に
少ない状況。

http://www.fcraft.net/wiki/Installation_Instructions

さあ、英語のお勉強かぁ?

とりあえず、LinuxではMonoなるものが必要と、更にGUIで動かすならlibgdiplus
も必要とな。
じゃあ、Puppy Linux用のPETパッケージを探してみましょうか。

うん、あった、あった。

http://openbve.freeforums.org/openbve-in-puppy-linux-mono-t692.html

openBVEって言う鉄道シミュレーションのフォーラムらしいが、そこに
mono-2.4-i486.pet
libgdiplus-2.4-i486.pet
2つとも紹介されている。(Google先生。流石です!)

この2つが入ったら、Monoで「.exe」ファイルを実行させるようにする。
ターミナルでコマンド入力

mono SomeFile.exe

あれ?エラーですね。
これって、.exeファイルをmonoで起動させるってコマンドじゃないのかな?

よく解らんので別の方法を試してみる。
先に、fCraftのファイルに実行属性を付加しておいて、クリックでMonoを呼び出すように
ファイルの関連付けをする。
んでもって、ConfigTool.exeをクリック。

おおー!!
起動したじゃないですか!

Monoってのは、.NET Framework環境をLinux上に構築するらしく、.NETアプリがLinuxで
動いてしまうと言う事らしい。(凄いですね)

あとはWindowsとほぼ同じ、って書いてある。問題はファイアーウォールの設定か?
とりあえず細かい設定は置いといて、ファイアウォールをoffにした状態でやってみる。
fCraftUI.exeを起動したが、何故か一瞬だけウィンドウが出て消えてしまう。
fCraft.logを開いて眺めて見ると、

ERROR: Could not parse Mono version.
Warning: You are using a relatively old version of the Mono runtime ().
It is recommended that you upgrade to at least 2.8+

うーん、Monoのバージョンが解析不能なくらい古いらしい。
fCraftのページを見ると最低でも2.6.4、推奨は2.10.2となってる。
2.4じゃ駄目って訳か、、、。
検索してみたが、該当バージョンのPETパッケージが見つからない。
Debianのmono-runtime2.6.3を見つけたので試しに入れてみた。
やはりfCraftUI.exeを起動すると、ウィンドウが出て消えてしまう。
fCraft.logで確認すると、今度はバージョン解析はできているが、まだ古いと。

こうなったら、推奨バージョンのmonoソースを落として、自分でビルド、インストール
するしかないな!


検索して次のページがあったので、これを参考にしながらやってみる。
http://smdn.jp/programming/mono/build_install/mono-2.10/

通常はPuppy Linux4.3.1を使っているが、新しめのバージョンの方が無難だろうと
考えて、手持ちのCDにあるLucid Puppy5.2.5をCDブートで使うことにする。
更に、makeなど低スペックPCでは荷が重いので、メインで使っているPCで作業する。
(OKになれば、同じ手順を古いPCでやってみる)
Lucid Puppy5.2.5を初期状態のまま、LANとブラウザの設定だけ。

ファイアウォールは起動しないままにしておく。
(動作確認が目的なので、日本語化もせずにそのまま使う)

ソースコード(mono-2.10.2.tar.bz2)を展開するだけでも相当な時間が掛かってしまった。
(この時点で長い戦いになることは、容易に想像できるw)
まずは、libgdiplus-2.10からビルドする。
configureにはパラメータを付けずにそのまま実行。
make、make installは終わった。
/usr/local/lib/にインストールされた。
ふと嫌な感じが頭を過る。
「libgdiplus-2.4-i486.petとディレクトリが違うぞ?」

ま、いっか。って事で、次にmono-2.10.2のビルド。
これもパラメータは付けずに実行。
いざ、make。ポチッとな!
しばらく、流れる文字を見ているとErrorやらWarningやらが非常に目につく。
が、止まることはなかったので、長時間になることを覚悟して席を外した。

1時間後戻ってみると、makeは終わってる。
続いて、make install

終了後に、mono -V を実行してみると、ちゃんとバージョンが表示された。
お!行けるのか?
fCraftを実行、、、。

何も起こらない。
monoファイルを探すと、/usr/local/bin/にインストールされている。
「これもmono-2.4-i486.petの時と違うぞ?」

exeファイルの関連付けがおかしいのかもしれない。
改めて、/usr/local/bin/monoに関連付けしてクリック。

何も起こらない。

mono関連のディレクトリを色々開けてみると、何かファイルが少ない気がする。
(気がするって、ヲイヲイ!)。
と言うか、空のディレクトリさえ在る??
これは、ディレクトリだけ作られて中のファイルがコンパイルされてないのか。
やはり、パラメータ無しだし、インストール先も変だし、やり直しだなぁ。

調べてみると、monoビルドの際、先にインストールしたlibgdiplusを参照するので、
その参照先が違っていると駄目らしい。

今度は、configureにprefixを付けて、2.4を入れた時と同じディレクトリに
インストールするようにした。
(実際には、prefixの指定方法を間違えて、/usr/lib/lib/や/usr/bin/bin/に
インストールしたり、何回かやり直してる、、、orz)

先ずは、libgdiplus。

./configure prefix=/usr/
make
make install

/usr/lib/にインストールされたのを確認。

次に、monoでもprefixを付け、更にlibgdiplusを参照できるようにと
--with-libgdiplus=/usr/lib/ を付加し、その他は参考ページに記載してあったパラメータを付けた。

./configure --prefix=/usr --with-libgdiplus=/usr/lib/ --with-ikvm-native=no --with-profile4=yes --with-moonlight=no --with-monotouch=no --with-mcs-docs=no --with-x
make
make install

今回もWarningが大量に流れていく。が、Errorは見当たらないかも、、、。
1時間程掛けて、作業が終了。

mono -V で確認し、インストール先も/usr/bin/に入っていることを確認。
exeファイルの関連付けを、今入れたmonoにする。
よし、クリック。

ヤッホー!!
起動しましたぜ。ConfigTool.exeで設定をし、続いてfCraftUI.exeを起動。
こんどは、ウィンドウが消えることなくサーバを建てる事ができた。

Lucid Puppy5.2.5でfCraftサーバ起動


次は、古い低スペックPCへのビルド、インストールを試してみる。
どこまで対応できるか不明だけど、古いPCをサーバにして、メインPCからアクセス
できれば、当初の目論見は完了することになる。
(この後、何も低スペックPCでビルドしなくても、能力のあるPCでPET化して、それを古いPCへ
インストールすれば良い事に気が付いた。PETの作成から実際にサーバを動かすまでは次で)

※注意※
個人保存ファイルのサイズを充分大きく取っていないと失敗するかも


0 件のコメント :

コメントを投稿