1. Linda Server

  2. Linda Serverとは?

    • データベースのひとつ
    • タプルスペースというデータを入れる箱が用意されている.
    • そこに,データを読み込んだり書き込んだりすることができる.
    • タプルスペースは多数用意されている.
  3. Federated Lindaとは?

    複数のLindaサーバーを接続したもの

  4. Federated Lindaとは?

    タプルスペースを複数個つなげて、タプルの伝搬を基にデータを共有する

    • タプルスペース間には データの伝搬などを管理する Protocol Engine と呼ばれるプログラムが存在
    • 共有して接続を分散させることでスケーラブルなプログラムを書く事ができる
  5. Linda Serverの使い方

    Linda は、以下のAPIを用いてタプルスペース上のデータの更新を行う

    • in(id)
      • データをタプルから取り出す。タプルにデータは残らない
    • rd(id)
      • データをタプルから取り出す。タプルにデータが残る
    • out(id,data)
      • データをタプルへ書き込む
  6. 水族館ゲーム

    本研究では、ネットワークゲームを例題として用いる。

    • 複数のプレイヤーの画面を並べる
    • 魚が1匹ずつプレイヤーに与えられる
    • 画面の端まで行くと、隣のプレイヤーの画面に移動する
  7. First Person Shooter Test

    同じくネットワークゲームの例題として作成したゲーム

    • Lindaにプレイヤーの座標が保存されている
    • 複数台のPS3がLindaサーバーにアクセスしプレイヤーの座標を更新・取得
    • PS3ではそのプレイヤーを自由に移動させることができる
  8. ゲームの仕組み(座標の書き込み)

    • Lindaは数値のIDをもつタプルが存在している
    • 接続されているPS3はそれぞれ固有のIDをもつ
    • IDを10倍した値をタプルスペースのアドレスとする.
    • そこに,座標などのデータを格納する.
  9. ゲームの仕組み(座標の読み込み)

    • プレイヤー座標はそれぞれのIDが10倍された場所にある.
    • その場所が更新されれば他のプレイヤーが動いたことになる.
    • 座標が保存されるIDにReadを用いるとタプルの値を取得できる.
    • Readでは値が更新されていなくても通信が発生してしまい効率が良くない.
  10. ゲームの仕組み(座標の読み込み)

    • そこでWaitReadを用いる.
    • WaitReadはタプルの値が更新されていなければ値を返さず,待機する.
    • 処理が帰ってきたときタプルの更新を検知することが出きる.
    • WaitReadで得た座標を用いてPS3の画面を描画する