name parent`s URL

(^ ^)
Ruby+dRubyを用いた
P2Pゲームの作成
B4 佐川 昭宏
B3 青柳 禎矩
アウトライン
 作成したソフトウェアの概要・特徴
 実行方法
 本ソフトウェアの仕組み
 デモンストレーション
作成したソフトウェア
 トランプゲーム(ババ抜き)
 PCで動作
 使用言語:Ruby
+ dRuby
特徴
 ババ抜きを複数ノードで楽しめます
 開発言語にRuby、ノード間の通信に
dRubyを使っています
 P2P型のネットワークです
Ruby, dRubyとは
 Ruby
 手軽なオブジェクト指向スクリプト言語
 dRuby
 Rubyでネットワーク越しにメソッド呼び出しを
行なえるようにするライブラリ
ネットワーク越しに呼び出せるメソッドを
RM(Remote Method)と定義します
実行方法(1)
 実行ファイル名は
baba.rb
 親として起動する場合
 baba.rb
name
 子として起動する場合
 baba.rb
name parent’s URL
実行方法(2)
 ゲームの操作方法を書く
本ソフトウェアの仕組み
 準備
 ネットワーク確立
 ゲーム開始
 メッセージ送信
 メッセージの解釈
ネットワーク確立(1)

親になる人がbaba.rbを実行


自分のURLが表示される
子は、親のURLを指定して
baba.rbを実行



druby://sagawa:10000
子は親の公開オブジェクトを使
用できる
親は子のURLを取得し、子の
公開オブジェクトを使用できる
相互に公開オブジェクトを使
用できる
druby://sada:10000
ネットワーク(2)
 二人目以降の子は、
グループのいずれか
のノードに接続要求
 接続されたノードは、
今自分に接続してい
るノードに接続先変更
要求を出す
 3ノードでのネットワー
ク完成
druby://sagawa:10000
druby://ichiriki:10000
druby://sada:10000
ネットワーク確立(3)
 このようにして複数のノードを環状に連ね
ることができる
メッセージ送信(1)
 公開オブジェクトメソッ
ドを用いて、メッセージ
をホップさせる
 ichirikiがsadaにメッ
セージを送信する場合
druby://sagawa:10000
from
 ichiriki→sagawa

sagawa:自分宛のメッ
セージではないと判断
 sagawa→sada

sada:自分宛のメッセー
ジなので受信
to
druby://ichiriki:10000
druby://sada:10000
メッセージ送信(2)
 ゲーム中に必要な情報はメッセージを使い、
ノード間で交換する
 ゲーム中に必要な情報
 所持しているトランプの枚数
 何番目のトランプをひこうとしているか
 そのトランプは何か
 ゲーム終了宣言
 etc
メッセージ処理
 受信したメッセージはノードのキューに
pushされる
 各ノードのゲーム処理スレッドは、キュー
からメッセージをpopして処理
POP
ゲーム処理
スレッド
PUSH
メッセージ
キュー
公開オブジェクト
メソッド
作業分担
 ネットワーク・ゲーム部分の実装
 佐川
 ネットワーク部分の実装&雑用
 青柳
デモンストレーション
 スライドはこれで終了です
 これからデモを行います