Croquet では P2P ネットワークを通して空間を共有出来るようになっている。この共有部分はまだまだ開発途上なのだが、とりあえず現在どうなっているのかを簡単に調べてみた。
クラス
- TeaHost: 実際に通信を行うオブジェクト
- mapNameToObj 名前->本物
- TeaParty: ネットワーク上の架空の場を現す。
- TeapotMorph: 画面の表示とやってきた信号の処理を行うバーチャルマシンのような物(まずい設計だ!)
- TeaName: 物理的に他のマシン上にあるものを参照する名前
あらすじ
Croquet ユーザは、同じ TeaParty に参加する事によって三次元空間を共有する事が出来る。お互いの位置はアバターとして表示され、空間の中で動いたり物を動かしたり何か作ったりすると他のユーザからそれを見る事が出来る。
流れ
- 募集
- 参加
- TeaParty の blistner はずっと 41434 ポート を監視している。
- 接続要求メッセージが来るとそれを受け入れ、TeaParty>>hello:nickname: を実行
- 以下のような 接続先TeaHost が作られる。
- TeaHost>>tunnelOut: () 41436 で相手に繋がっている(用途不明)
- TeaParty teaHostSet に登録
- 共有
- 共有されるべき操作は TMeta というプロキシオブジェクトを通じて行われる。
- TMeta は自分の世界に操作を反映させると、他のホストにも同じ操作をブロードキャストする。
- 終了
- TeaParty>>resign によってTeaParty から離脱終了する。
通信フォーマット