Lingrをメッセージサーバに用いたFlashのリモート通信



FlashのXMLSocketを用いて,サーバ側で動いているサーバプログラムと通信させてオンラインゲームなどを作りたいと思っても,「レンタルサーバじゃ自前のデーモン動かせない」,「自サーバだと本格運用しんどそう」,「かと言って専用サーバはちょっとなぁ・・」というような理由で諦めてしまうことは多いのではないでしょうか?


試して遊ぶ分には,ローカル環境でデーモン走らせて,Flash動かして・・って出来るんですが,公開したいと思ったときに上記の理由がネックになってしまうため,作るモチベーションが今一・・みたいなことが僕はありました。


そこで今回,Lingrをメッセージ送受信用のサーバに仕立てて,別の場所で開かれたFlashムービー同士に通信をさせるという実験を行いました。これが実験結果の動画です。



http://www.youtube.com/watch?v=-5iVZ8rZ0wI


即興で作った動画なのでちょっと分かりにくいですが,左がFirefox,右がIEで,別のFlashムービーが表示されています。


Flashムービー内の黒い玉はキーボードの矢印キーで操作ができるようになっています。
動画を見ていただくと,マウスカーソルが左のブラウザに行き,右のブラウザに行き・・って操作しているのが分かるかと思います。


両方黒い玉でこれまた分かりにくいのですが(後日マシなものをアップしなおします),左で操作した結果が右に反映され,右で操作した結果が左に反映されているのがお分かりになりますでしょうか?


仕組みは単純で,チャットで送受信される文字データをFlashで表現するって感じです。
以下は,このLingrを用いてFlashのリモート機能を実装するときの懸念事項です。


Lingrをメッセージサーバに用いているので,Lingrに大量の負荷を与えるような大容量かつ頻繁なメッセージ送受信はできない
Lingrの稼動状況に依存して,通信に遅延が発生することがある
Flash側のメッセージの解釈・実行を丁寧に作りこんでおかないと,ちゃんと同期が取れてないときがある(これはLingrを用いていることに関係ないかな)


Lingrを用いているため本格的なオンラインゲームなんて作れず,貧弱な通信しかできなさそうなわけですが,これはこれでなかなか面白そうなものを作れそうな気がしませんかね。思いついたものをプロトタイプで作るときに,手軽に素早く作ることができそうです。