WebSocketでネトゲを作るよー

いろいろあって突如就活することになり、まだ新卒間に合うので、某社の技術アピール用に一つプロダクトを作ることになった。のだが、この前作ったwebsocket使ったRSSリーダーとか、作りかけのゲームとか、どうにもパンチが弱いので、RSSリーダー作ったときに覚えたWebSocketで、作りかけのゲームをネトゲ化することにした。


提出期限は14日。やれるだけやる。

概要

基本的にDiabloのクローン。
モンスターとプレーヤーが徘徊し、お互いに攻撃する。
マップは定期的にリセットされる。
アイソメトリック(クオータビュー)
キー情報同期型。


エゴアイテム生成などゲーム的な部分も作りたいのだが、今回は技術アピールなので、拡張の余地を残しておくだけにする。
GPLv3あたりのライセンスで公開する。

構成 クライアントーサーバー

サーバー

  • Nodejs/WebSocket
  • 内部的なロジックをすべて請け負う
  • ハンドシェイク終わったらでマップデータ用の配列を返す
  • 15FPSでオブジェクト配置をブロードキャスト

クライアント

作ってあるもの

  • 不思議なダンジョン風迷路生成
  • 最短経路探索(A*)

通信方式を工夫したい

開発はlocalhostだがスケールのために通信コストは低く抑えたい。
可能ならば差分通知するようなアルゴリズムを実装したい 参考: 4Gamer.net ― [CEDEC 2010]ネットゲームの裏で何が起こっているのか。ネットワークエンジニアから見た,ゲームデザインの大原則

これから何を作るか

上記の作りかけのゲームは、昨夜ブラウザ依存を切り取って、CommonJSの仕組みに則って書きなおした。既に動いている。
現状書きなおしたことでテストコードが動かなくなってるので、TDDに基づきテストドリブンにやる。Vows。

今は受け取った座標データにアフィン変換かけてアイソメトリックな座標に変換しているテストをやっている。進捗あり次第、JSごとこのブログに貼る。昨日のブログでCanvasが動くのは確認済み。折角JS貼れるブログなので、こういうことに使わないと勿体無い。