node.jsを使った偽ピグ作り

最近彼女がアメーバーピグで遊んでいるがブラウザベースのアプリケーションで
リアルタイムでここまで動かせるゲームってすごいなぁと感心。
技術基盤がブラウザである以上、スマートフォンなど応用分野は広いと言える。

またこういうコミュニティ系のサービスだとMMOなどのゲームと違って、コンマ何秒というような
微妙なタイミングのレスポンスが求められるわけではなさそうなので、比較的実装しやすそうな気もするなぁ。
といっても安定して動作させるにはそれなりのノウハウが求められる。

千里の道も一歩からということで以前作ったnode.jsのチャットを改良して、偽ピグなるサービスを
作ってみようとプログラムを書いてみる。

インストール

前回のメモを参考にする。node.jsとexpressフレームワークでサーバー側を構成。
http://d.hatena.ne.jp/oggata/20110913/1315924766

①接続と切断について

クライアントからの接続がある度に、
サーバー側は一意なIDをクライアント側に返す。
これを行うことで切断時には誰がログアウトしたかを判断し、
アニメーションの削除を行うことができる。
以前参考にしたチャットサンプルは確か、切断と切断したユーザーのハンドリングが
取れないが故にずっと残りっ放しになっていた気がするので
このあたりの仕組みを入れる必要がある。

②表示座標の要求

表示座標はとても簡単で、各クライアントからemmitした座標を
サーバー側で受取、一斉に配信broadcastする仕組みになっている。
受け取った自分以外の座標を、自分のクライアントで表示する。

自分の座標はあくまで他のクライアントの表示のためにサーバー側に送るわけだが、
例えば、アクションゲームなどで「他人から攻撃を受けたら吹っ飛ばされる」
要素をいれた場合は一旦自分の座標についても、サーバー側を通して
受取る必要がある。

③実際のソースを使った解説