Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb をよろしくお願いします。

Javascript+Canvasで実装したクライアント

追記: ソースを書き直した新しいバージョンがこっちにあります。

「3D空間上にキャラと地面を表示して歩かせる」というのをJavascriptとCanvasで実装したもの。

world20090404.png

http://dgames.jp/archive/world/client20090404/world2.html

※動作確認をしてるのはWindows上のChrome、Firefox、Safari。Canvasが使えないIEはまともに動かないはず。スペースキーで視点回転、その他の操作はウィンドウのテキスト参照

去年の夏から秋にかけて作っていたのだけど、キャラ画像が借り物だったので公開できないでいた。 先日良い素材を見つけたので手直しして公開。 まだまだ試作品レベルだけど。

動かす場合はChrome推奨。Firefoxより断然速く、手元の環境では秒間30〜60フレームくらい出る(FPSは画面右上)。 最初プロトタイプをStar Rubyで書いてたんだけど(ポリゴン描画ができないのでワイヤーフレーム)、 Javascriptに移したらかなり速くなった(うろ覚え)。 3D座標と変換はJavascriptでちまちま計算してる。 Javascriptを良くわかってないので、もっと速く動作するように書くことができると思う。 現時点ではあまり速度は追求してない。 とりあえず動かしてみたら思ったより快適に動いた。

ちなみに、公開しているのはクライアント部分(静的なHTML)のみだが、実際はサーバー側と連動して、複数のプレイヤーでチャットをしたり、キャラの移動情報が共有されるようになっている。 今回はサーバーサイドとやりとりする部分は切り取ってある。 サーバー側はRails+ShootingStarで実装してる。

メモ。

  • HTMLで画像を読み込んでおかないとGifアニメが動かない
  • スクリーン内のフォントは2度書きして影をつけているので、フォントによっては表示が崩れるかも

バグ。

  • たまに止まることがある。キャラ画像の切り替えがうまく言っていない模様(よくわかってない)
  • スリープに入ってから再開するとウィンドウ上をクリックしても移動できない
  • たまに視点がキャラを追随しない
permalink
category: 開発(13)
no tweet

Comments

nagachika 2009/04/05 18:40:54

Mac OS X/Firefox 3.0.8 & Safari で動かしてみました。
Firefox だとスペースキーが効かない(もしかしたら Vimperator を使ってるせいかも)のと、マップ切り変え時に下のヘルプメッセージが繰り返し表示されてスクロールする(これは Safari でも同じでした)のが気がついたところです。

けどするする動いてますよー。これは凄いですね。サーバと連動すると他のPCの動作も反映されるようになるんでしょうか。

nagachika 2009/04/05 18:42:44

あうあう。スペースキーの件はやっぱり Vimperator で奪われてたからで、Vimperator の設定でスペースを渡すようにしたら動きました。失礼しました。

hkhumanoid 2009/04/06 10:15:15

4月4日はお疲れ様でした。
休憩時間にちょっと見れたので気になってブログみたら、ありました、ゲームのやつ><
完成を楽しみにしています!

dan5 2009/04/06 20:10:17

おぉMacでも動いてますか。動くとか動かないとかの情報はすごく助かります。
ヘルプメッセージが何度も出るのは仕様です。。。

dan5 2009/04/06 20:35:52

勉強会お疲れ様でした。またよろしくお願いします。