uzullaがブログ

uzullaがブログです。

http://bq.cfe.jp/ browserquestサーバーをさくらのタダクラウドに立てた

一部で話題になっている、各種ウェブ技術のデモ目的でMozillaが作ったMMORPG風ウェブアプリ、browserquestですが
https://hacks.mozilla.org/2012/03/browserquest/
http://techwave.jp/archives/51737175.html (日本語)

本家(http://browserquest.mozilla.org/)がヤバい程重くてちっとも試せないので、コードが公開されている(https://github.com/mozilla/BrowserQuest)ので自分で立てました。


こちらがそのアドレスです。
http://bq.cfe.jp/


さくらのクラウドのアカウントを開始当初に取って放置してたのですが、現状タダということで乞食です。
さくらさん頑張ってください、応援しています〜。(乞食の良心)


当座放置しておきますので、遊びたい方はどうぞ。
本家とちがって、minify前のコードでうごかしているので、Firebugとかで追っかけたりとかもたのしいと思います。


以下遊ぶだけの人には全くやくだたない情報です。

たたない!!

これギッハブから落としてきてREADMEの通りにかいても動かないんですよね。
しかも、serverは立ち上がってて、Clientもなんとなく動いてる風ではあるのですけど、動かない。

なんだこれは、デバッグするのがゲームなのか。

ブチ立てろ!

まず、nodeは0.4.2でいきましょう。


駆け足で言うと

git clone git://github.com/creationix/nvm.git ~/.nvm
source .nvm/nvm.sh
nvm install v0.4.7
npm install underscore log bison websocket websocket-server sanitizer memcache
wget https://github.com/mozilla/BrowserQuest/zipball/master
unzip master
cd mozilla-BrowserQuest-???????
less server/README.md
cp server/config_local.json-dist server/config_local.json
cp server/config.json-dist server/config.json
node server/js/main.js

※別termで
cd mozilla-BrowserQuest-???????
less client/README.md
cp client/config/config_build.json-dist client/config/config_build.json
cp client/config/config_local.json-dist client/config/config_local.json
vi client/config/config_build.json
vi client/config/config_local.json
cd bin/
chmod +x build.sh
./build.sh
cd ..
cp -a client-build/* /path/to/httpd/docroot/

こんなのでいけるとREADMEはおっしゃる。


嘘だ!!!!


直す

server/js/main.jsは修正しないと、なんかisReadyがどうたら、というエラーがでます。
コード読む限り、どう考えてもバグなんですが、
main.jsの

checkPopulationInterval = setInterval(function() {
if(0 && metrics.isReady) {

このifの metrics.isReadyを評価させないようにすれば動きます。
これを評価させる(というか、metrics.isReadyにする)にはコンフィグにちまちま書いたりmemcachedたてたりしないといけないっぽい
*1


READMEにはないのですが、memcacheのライブラリも必要なんで、いれましょう。

serverは多分これで大丈夫です。

clientも直す

clientもそのままでは動きません。
サーバーに接続中、とでていても、実際にはその前でコケてます。*2


これは色々やってるウチになおっちゃったんで、絶対ではないんですけど、まずaudioファイルがたりてないので
DLしましょう。

wget 'http://browserquest.mozilla.org/audio/music/village.mp3'
wget 'http://browserquest.mozilla.org/audio/music/beach.mp3'
wget 'http://browserquest.mozilla.org/audio/music/forest.mp3'
wget 'http://browserquest.mozilla.org/audio/music/cave.mp3'
wget 'http://browserquest.mozilla.org/audio/music/desert.mp3'
wget 'http://browserquest.mozilla.org/audio/music/lavaland.mp3'
wget 'http://browserquest.mozilla.org/audio/music/boss.mp3'
wget 'http://browserquest.mozilla.org/audio/music/village.ogg'
wget 'http://browserquest.mozilla.org/audio/music/beach.ogg'
wget 'http://browserquest.mozilla.org/audio/music/forest.ogg'
wget 'http://browserquest.mozilla.org/audio/music/cave.ogg'
wget 'http://browserquest.mozilla.org/audio/music/desert.ogg'
wget 'http://browserquest.mozilla.org/audio/music/lavaland.ogg'
wget 'http://browserquest.mozilla.org/audio/music/boss.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/loot.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/hit1.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/hit2.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/hurt.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/heal.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/chat.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/revive.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/death.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/firefox.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/achievement.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/kill1.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/kill2.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/noloot.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/teleport.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/chest.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/npc.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/npc-end.ogg'
wget 'http://browserquest.mozilla.org/audio/sounds/loot.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/hit1.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/hit2.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/hurt.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/heal.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/chat.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/revive.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/death.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/firefox.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/achievement.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/kill1.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/kill2.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/noloot.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/teleport.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/chest.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/npc.mp3'
wget 'http://browserquest.mozilla.org/audio/sounds/npc-end.mp3'

※ディレクトリはちゃんと再現しましょう


あと、client-buildをつかうと、全部のJSがMinifyされるので、絶望的にデバッグができません。
clientの方を(つまりビルド前のファイルを)つかうと、minify前なので、Consoleにログがでたり、人間がデバッグできる感じになります。

clientはbuildとちがっていくつかファイルが足りませんので、shared/やconfなど、いくつかのファイルを手動で置いてあげます。Firebugで、ネットワークタブをみながら、404のファイルを一づつ補完してあげるとよいでしょう。

うごいた!

んじゃないですかね?


実際やってみると、おーって感じです。
ボクはバグ取り作業で満足してしまって、全然やってませんが。

*1:そもそもREADMEにもmemcacheいるなんてかいてないんだが、実際にはmemcacheのlibいれないと起動しないし…

*2:ただし、もともとすごい時間かかるので、気長に待ちましょう