■
WebGLを利用したHTML5なquake2
WebGLを利用したHTML5なquake2 がリリースされたらしいので試してみた。
http://jp.techcrunch.com/archives/20100401google-html5-quake/
マシン:windows xp
スクリプトをどうさせるサーバ: VMWARE(debian lenny)
とりあえずやったことを書いときます。
とりあえずWebGLを体験してみる。
HTML5なquake2は、結構手順が複雑なので、挫折する前に WebGLを体験してみることにした。
WebGL対応の Chromeをダウンロードしてくる。
http://code.google.com/p/quake2-gwt-port/wiki/CompatibleBrowsers
現在WindowsXPを利用しているので、 windows版をダウンロード。
http://build.chromium.org/buildbot/continuous/win/LATEST/chrome-win32.zip
chrome を立ち上げるときに、以下のオプションをつけて実行する。
面倒ならバッチファイルを作るのも手か。
こんな警告がでているなら、とりあえずコマンドラインは正しいと思われる。
では、WebGLのデモである地球と火星がくるくる回る奴にアクセスしてみる。
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/demos/webkit/Earth.html
前置きはこんな感じで HTML5で quake2 を遊ぶためにセットアップを行ってみる。
サーバをwindowsで作るのは大変そうなので、vmware 上にlinuxをインストールして構築してみた。
まずjavaが必要らしい。
java嫌いなので当然インストールしていない。
quake の java への移植 maven2 を基にしているらしいので、maven2 を入れてみた
#apt-get install maven2 (このとき build-depにしなかったのはミスだった気がする)
よし、プログラムを hg サーバから export してこよう。
#hg clone https://quake2-gwt-port.googlecode.com/hg/ quake2-gwt-port #cd quake2-gwt-port
よし、では HTML5なquake2をビルドしてみよう。。。
#./build-dedicated-server [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Command [[ /bin/sh -c /usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/jre/bin/java -Xmx512m -classpath "/home/rti/public_html/quake2-gwt-port/maven-build/client/../../src":"/home/rti/public_html/quake2-gwt-port/maven-build/client/src/main/resources":"/home/rti/public_html/quake2-gwt-port/maven-build/client/target/classes":"/root/.m2/repository/com/google/gwt/gwt-servlet/2.0.0/gwt-servlet-2.0.0.jar":"/root/.m2/repository/com/google/gwt/gwt-user/2.0.0/gwt-user-2.0.0.jar":"/root/.m2/repository/com/google/gwt/gwt-dev/2.0.0/gwt-dev-2.0.0.jar" com.google.gwt.dev.Compiler -gen "/home/rti/public_html/quake2-gwt-port/maven-build/client/target/.generated" -logLevel INFO -style OBF -war "/home/rti/public_html/quake2-gwt-port/maven-build/client/target/gquake-client-1.0-SNAPSHOT" -localWorkers 1 jake2.GwtQuake ]] failed with status 1 [INFO] ------------------------------------------------------------------------ [INFO] For more information, run Maven with the -e switch [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 minute 24 seconds [INFO] Finished at: Sat Apr 03 03:08:56 GMT+09:00 2010 [INFO] Final Memory: 40M/58M [INFO] ------------------------------------------------------------------------
ビルドエラー....なにー。
何が悪いのかよく分からないけど、 debian の java は sun の javaではなく、 gij っていうのを使っているのがダメなのか?
java と入力すると gij が文句を言ってくる
#java Usage: gij [OPTION] ... CLASS [ARGS] ... to invoke CLASS.main, or gij -jar [OPTION] ... JARFILE [ARGS] ... to execute a jar file Try `gij --help for more information.
よくわからないので、sun の javaをインスコすることにした。
これが結構メンドイ。
(centosだとOS yum install java でOKだったんだけどなぁ、、、)
参考
http://www.net-phantom.jp/blog6/2009/03/debianjavajava6.html
(今思えば、 apt-get install openjdk-6-jdk の方がよかったかも。。。)
non-free をaptラインに追加する
#vi /etc/apt/source.list ---------- source.list ---------- deb http://cdn.debian.or.jp/debian/ lenny main contrib ↓ deb http://cdn.debian.or.jp/debian/ lenny main contrib non-free ---------------------------------
一度アップデートして non-freeなデータを読み込ませる
#apt-get update
#aptitude install sun-java6-jdk sun-java6-demo sun-java6-source sun-java6-doc sun-java6-plugin sun-java6-fonts
途中でなにやらライセンスを聞いてくるので、とりあえずOKを選ぶ。
ところが途中でまた文句を言ってきた。
ドキュメントがらしい。知らねーよ、そんなもの。。。メンドイなぁ。
Setting up sun-java6-doc (6-12-1) ... This package is an installer package, it does not actually contain the JDK documentation. You will need to go download one of the archives: jdk-6u12-docs.zip jdk-6u12-docs-ja.zip (choose the non-update version if this is the first installation). Please visit http://java.sun.com/javase/downloads/ now and download. The file should be owned by root.root and be copied to /tmp. [Press RETURN to try again, 'no' + RETURN to abort]
仕方ないので sunのサイトからダウンロードする。メンドイ。
アクセス
http://java.sun.com/javase/downloads/
そして、 tmp にこんな感じに展開する。
/tmp/jdk-6u12-docs-ja.zip
そしたら、インストーラーを再び起動させると、今度はうまくいった。
//もう一回インスコ
#aptitude install sun-java6-jdk sun-java6-demo sun-java6-source sun-java6-doc sun-java6-plugin sun-java6-fonts //こんどはうまくいった。 Writing extended state information... Done Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Reading task descriptions... Done
念のため java と入力してみる。
#java Usage: gij [OPTION] ... CLASS [ARGS] ... to invoke CLASS.main, or gij -jar [OPTION] ... JARFILE [ARGS] ... to execute a jar file Try `gij --help for more information.
あれーなんで?
何かシステムで呼び出す優先度を変えるらしい。
//まずjava #update-alternatives --config java There are 3 alternatives which provide `java'. Selection Alternative ----------------------------------------------- 1 /usr/bin/gij-4.3 *1270239708*+ 2 /usr/lib/jvm/java-gcj/jre/bin/java 3 /usr/lib/jvm/java-6-sun/jre/bin/java ←これを選択 Press enter to keep the default[*], or type selection number: 3 //次に javac #update-alternatives --config javac There are 4 alternatives which provide `javac'. Selection Alternative ----------------------------------------------- 1 /usr/bin/ecj 2 /usr/bin/gcj-wrapper-4.3 + 3 /usr/lib/jvm/java-gcj/bin/javac *1270239709* 4 /usr/lib/jvm/java-6-sun/bin/javac ←これを選択 //ついでに JAVA_HOME も定義する #export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre/
こんどは、どうだ
#java Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file) where options include: 以下略
OKOK。3つも設定した会があったというものだ。ちゃんといったっぽい。
javaアレルギーなんでよくわかんないけど、これでOKらしい。
やっと、本題の HTML5なquake2をビルドしてみよう。。。
最初に失敗したビルドコマンドは今度こそ大丈夫だろうか。
#./build-dedicated-server 〜略〜 [INFO] [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] ------------------------------------------------------------------------ [INFO] GwtQuake .............................................. SUCCESS [2.186s] [INFO] GwtQuake Client ....................................... SUCCESS [52.139s] [INFO] GwtQuake Dedicated WebSocket Server ................... SUCCESS [8.680s] [INFO] GwtQuake Demo Installer ............................... SUCCESS [7.819s] [INFO] ------------------------------------------------------------------------ [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 minute 11 seconds [INFO] Finished at: Sat Apr 03 03:46:22 JST 2010 [INFO] Final Memory: 36M/63M [INFO] ------------------------------------------------------------------------
おー今度はうまくいったよ。
さらに次のコマンドを実行する(さっき実行した./build-dedicated-serverとは別)
#./install-resources 〜略〜 lame not found textures/e1u1/+9comp11_1.wal models/objects/r_explode/skin3.pcx textures/e1u1/c_met5_1.wal sound/world/curnt1.wav lame not found env/unit1_bk.pcx textures/e1u1/floor3_3.wal textures/e1u1/rocks16_2.wal sound/world/force3.wav lame not found
げげ、lame がないらしい。
debianでは特許の問題で lame がないらしい。ちきしょー
仕方ないのでソースからlameを入れる。
参考:
http://d.hatena.ne.jp/paraches/20061215/1166191102
//必須ライブラリがないとか言われるので先回りして入れておく #apt-get install libsndfile1-dev nasm libncurses5-dev //lameのソースを拾ってくる。 #wget http://jaist.dl.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz #tar zxvf lame-3.98.4.tar.gz #cd lame-3.98.4 //パッケージの作成 #dpkg-buildpackage -rfakeroot //作成したパッケージのインスコ(一つ上の階層にできるらしい) #dpkg -i ../lame_3.98.3_i386.deb //動作確認 #lame LAME 32bits version 3.98.4 (http://www.mp3dev.org/) usage: lame [options] <infile> [outfile] <infile> and/or <outfile> can be "-", which means stdin/stdout. Try: "lame --help" for general usage information or: "lame --preset help" for information on suggested predefined settings or: "lame --longhelp" or "lame -?" for a complete options list
OKOK。ちゃんと入ったぞ。
んぢゃあ、さっきの失敗したコマンドをもう一度やってみよう。
#./install-resources 〜略〜 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 11 seconds [INFO] Finished at: Sat Apr 03 04:34:05 JST 2010 [INFO] Final Memory: 19M/61M [INFO] ------------------------------------------------------------------------
よし。できた。
今までのできたサーバを起動させてみよう。
#./run-dedicated-server 8080 2010-04-03 04:35:43.538::INFO: Logging to STDERR via org.mortbay.log.StdErrLog 2010-04-03 04:35:43.578::INFO: jetty-6.1.x 2010-04-03 04:35:43.622::INFO: Started SocketConnector@0.0.0.0:8080 couldn't exec config.cfg couldn't exec config.cfg ServerWebSocketImpl(27910) 2010-04-03 04:35:44.107:INFO::Logging to StdErrLog::DEBUG=false via org.eclipse.jetty.util.log.StdErrLog Starting Server 2010-04-03 04:35:44.110:INFO::jetty-7.0.1.v20091125 2010-04-03 04:35:44.153:INFO::Started SelectChannelConnector@0.0.0.0:27910 Server started ServerWebSocketImpl(27901) Starting Server 2010-04-03 04:35:44.155:INFO::jetty-7.0.1.v20091125 2010-04-03 04:35:44.158:INFO::Started SelectChannelConnector@0.0.0.0:27901 Server started ==== ShutdownGame ==== ==== InitGame ==== ------- Server Initialization ------- ====== Quake2 Initialized ======
うーん何かいいかんじぢゃなーい?
ブラウザでアクセスしてみる。
http://192.168.195.129:8080/
(注意:192.168.195.129はVMWAREのIPアドレス。)
OKOK。サーバは動いているな。
では、めいんでぃっしゅの quake2 起動。
http://192.168.195.129:8080/GwtQuake.html
あれー?
もしかして、127.0.0.1 ではないから?
IEの信頼されたホストみたいなもんがchromeにもあるのかなー?
よくわからないけど、これではダメらしい。
で、そんなこともあろうかと、 stone を用意しておいたのさ。
http://www.gcd.org/sengoku/stone/Welcome.ja.html
stone でポートを転送してあげれば、ブラウザから見て、ローカルホストになるだろう。これで万事問題なし!!
ローカルのwindows xp で実行。
ローカルの127.0.0.1:8080 を サーバを立ち上げた VMの192.168.195.129:8080 に転送。
//これはホストマシンのwindows機で実行すること。 //VMWAREでやったら意味ないよ。 stone.exe 192.168.195.129:8080 127.0.0.1:8080
もう一度アクセス。
http://localhosts:8080/GwtQuake.html
サーバには、nextmap: demo2 でとまっていた。HTTPリクエストは受け付けるから、サーバが死んだわけではないみたい。
Server started ==== ShutdownGame ==== ==== InitGame ==== ------- Server Initialization ------- ====== Quake2 Initialized ====== nextmap: demo2 ←ここでとまる
なんでー?
windowsだから?
でもさー、他の WebGLのデモは動くんだぜ。
←これとか
なぜだー