Mercurial > hg > Events > OSC2010
changeset 5:aa125ca9d99c
added linda presen
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 02 Oct 2010 01:46:28 +0900 |
parents | 19623b8a4144 |
children | 17db5cd650c3 |
files | presen/graffle/fpslinda_waitread.graffle presen/graffle/fpslinda_write.graffle presen/img/apigraph.png presen/img/apiinout.png presen/img/apiupdate.png presen/img/connectionoftspace.png presen/img/debugring.png presen/img/fedaqua.png presen/img/fedlinda.png presen/img/fpslinda.png presen/img/fpslinda_waitread.png presen/img/fpslinda_write.png presen/img/game.png presen/img/linda_server.png presen/img/lindaserver.png presen/img/metafedlinda.png presen/img/nadeko.png presen/img/poll.png presen/img/prefedlinda.png presen/img/relay1.png presen/img/relay2.png presen/img/relay3.png presen/img/relay4.png presen/img/relay5.png presen/img/routing.png presen/img/routing1.png presen/img/tcpnodelaygraph.png presen/img/treeandring.png presen/img/treetopology.png presen/linda.html |
diffstat | 30 files changed, 217 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/linda.html Sat Oct 02 01:46:28 2010 +0900 @@ -0,0 +1,217 @@ +<html> +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>2010-10-02 (土) シーングラフとPS3 を使ったゲームプログラミング</title> +<!-- metadata --> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.2a2" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projec +tion" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="scree +n" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" +id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="project +ion" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>2010-10-02 (土) シーングラフとPS3 を使ったゲームプログラミング</h1> +<h2></h2> +</div> +</div> + +<ol class="xoxo presentation"> + + +</li> +<li class="slide"> +<h1>Linda Server</h1> +</li> + +<li class="slide"> +<h1>Linda Serverとは?</h1> +<div style="float: left; width: 59%;"> +<ul> + <li>データベースのひとつ</li> + <li>タプルスペースというデータを入れる箱が用意されている.</li> + <li>そこに,データを読み込んだり書き込んだりすることができる. </li> + <li>タプルスペースは多数用意されている.</li> +</ul> +</div> +<img src="./img/linda_server.png" style="display: block; width: 27%; margin-right: 10%; float: right;"/> +</li> + +<li class="slide"> +<h1>Federated Lindaとは?</h1> +<p class="subhead">複数のLindaサーバーを接続したもの</p> +<ul> + <li>複数のLindaを接続することで負荷を分散する</li> + <li>情報を取捨しながら伝搬する</li> + <ul> + <li>すべてのデータをレプリケーションする必要はない</li> + <li>サーバーがクライアントの必要な情報とは何かを把握する</li> + </ul> +</ul> +</li> + +<li class="slide"> +<h1>Federated Lindaとは?</h1> +<div style="display: block; float: left; width: 60%;"> +<p>タプルスペースを複数個つなげて、タプルの伝搬を基にデータを共有する</p> +<ul> + <li>タプルスペース間には データの伝搬などを管理する Protocol Engine と呼ばれるプログラムが存在</li> + <li>共有して接続を分散させることでスケーラブルなプログラムを書く事ができる</li> +</ul> +</div> +<img src="./img/prefedlinda.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> +</li> + +<li class="slide"> +<h1>Linda Serverの使い方</h1> +<div style="float: left; width: 59%;"> +<small> +<p>Linda は、以下のAPIを用いてタプルスペース上のデータの更新を行う</p> +<ul> + <li>in(id)</li> + <ul> + <li>データをタプルから取り出す。タプルにデータは残らない</li> + </ul> + <li>rd(id)</li> + <ul> + <li>データをタプルから取り出す。タプルにデータが残る</td> + </ul> + <li>out(id,data)</li> + <ul> + <li>データをタプルへ書き込む</li> + </ul> +</ul> +</small> +</div> +<img src="./img/linda_server.png" style="display: block; width: 27%; margin-right: 10%; float: right;"/> +</li> + +<li class="slide"> +<h1>水族館ゲーム</h1> +<div style="float: left; width: 49%;"> +<small> +<p>本研究では、ネットワークゲームを例題として用いる。</p> +<ul> + <li>複数のプレイヤーの画面を並べる</li> + <li>魚が1匹ずつプレイヤーに与えられる</li> + <li>画面の端まで行くと、隣のプレイヤーの画面に移動する</li> +</ul> +</small> +</div> +<img src="./img/fedaqua.png" style="display: block; width: 37%; margin-right: 10%; float: right;"/> +</li> + +<li class="slide"> +<h1>First Person Shooter Test</h1> +<div style="float: left; width: 49%;"> +<small> +<p>同じくネットワークゲームの例題として作成したゲーム</p> +<ul> + <li>Lindaにプレイヤーの座標が保存されている</li> + <li>複数台のPS3がLindaサーバーにアクセスしプレイヤーの座標を更新・取得</li> + <li>PS3ではそのプレイヤーを自由に移動させることができる</li> +</ul> +</small> +</div> +<img src="./img/fpslinda.png" style="display: block; width: 37%; margin-right: 10%; float: right;"/> +</li> + +<li class="slide"> +<h1>ゲームの仕組み(座標の書き込み)</h1> +<div style="float: left; width: 49%;"> +<small> +<ul> + <li>Lindaは数値のIDをもつタプルが存在している</li> + <li>接続されているPS3はそれぞれ固有のIDをもつ</li> + <li>IDを10倍した値をタプルスペースのアドレスとする.</li> + <li>そこに,座標などのデータを格納する.</li> +</ul> +</small> +</div> +<img src="./img/fpslinda_write.png" style="display: block; width: 37%; margin-right: 10%; float: right;"/> +</li> + +<li class="slide"> +<h1>ゲームの仕組み(座標の読み込み)</h1> +<div style="float: left; width: 49%;"> +<small> +<ul> + <li>プレイヤー座標はそれぞれのIDが10倍された場所にある.</li> + <li>その場所が更新されれば他のプレイヤーが動いたことになる.</li> + <li>WaitReadを用いるとタプルの更新を検知することが出きる.</li> + <li>WaitReadで得た座標を用いてPS3の画面を描画する</li> +</ul> +</small> +</div> +<img src="./img/fpslinda_waitread.png" style="display: block; width: 37%; margin-right: 10%; float: right;"/> +</li> + +<!-- +<li class="slide"> +<h1>ツリー型トポロジーを用いた負荷分散</h1> +<div style="display: block; float: left; width: 60%;"> +<small> +<ul> + <li>ツリー型トポロジーを用いて、負荷を分散する</li> + <li>末端にクライアントを接続する</li> + <li>末端のノードは、クライアントから受け取った座標情報をクライアントが必要か判断する</li> + <ul> + <li>必要ならば、その Linda サーバーのみで通信は完結</li> + <li>必要でないなら、親に判断を委ねるため、親に伝搬</li> + </ul> + <li>伝搬された上位ノードは、子のノードが必要か判断し、子に伝搬するか、親に伝搬するかを決定する</li> + <li><strong>データを必要としているマシンのみにデータを伝搬する</strong></li> +</ul> +</small> +</div> +<img src="./img/treetopology.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> +</li> + +<li class="slide"> +<h1>タプルの伝搬</h1> +<img src="img/relay1.png"/> +</li> + +<li class="slide"> +<h1>タプルの伝搬</h1> +<img src="img/relay2.png"/> +</li> + +<li class="slide"> +<h1>タプルの伝搬</h1> +<img src="img/relay3.png"/> +</li> + +<li class="slide"> +<h1>タプルの伝搬</h1> +<img src="img/relay4.png"/> +</li> + +<li class="slide"> +<h1>タプルの伝搬</h1> +<img src="img/relay5.png"/> +</li> +-->