view poster/master-lt.html @ 19:c20d7b72cd4a default tip

finish?
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Fri, 18 Feb 2011 05:39:37 +0900
parents a5fb2dea1c60
children
line wrap: on
line source

<!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>master_lightning talk</title>
<!-- metadata -->
<meta name="generator" content="S5" />
<meta name="version" content="S5 1.1" />
<meta name="presdate" content="20050728" />
<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="projection" id="slideProj" />
<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" 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="projection" 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>[date:11/02/18]</h1>
<h2>Game Framework Cerium を用いたゲームプログラミングにおけるテスト手法の提案</h2>
</div>

</div>


<div class="presentation">

<div class="slide">
<h1>Game Framework Cerium を用いた<br>
    ゲームプログラミングにおける<br>
    テスト手法の提案</h1>
<h3>発表者:小林 佑亮</h3>
<h4>所属:琉球大学 理工学研究科 情報工学専攻 並列信頼研究室</h4>
<h4>指導教員:河野 真治</h4>
</div>

<div class="slide">
<h1>研究背景・目的</h1>
<font size="3"><ul>
<li>シーケンシャルなプログラムを Task に分割して並列実行させても、
逐次実行させた時と同じ動作をするとは限らない。</li>
<li>オブジェクト同士のデータの同期や、処理の実行順序など、シーケンシャルな
プログラムに比べて、バグを発生させる要因は多い。</li>
<li>また、ゲームプログラムの特徴はプレイヤーの入力やプログラム内にある乱数
などの非決定的な要素が多いことが挙げられる。</li>
<br>
<li>本研究では Task に分割されたゲームプログラムがシーケンシャルなバージョン
と同じ動作である事を確認できるテスト環境の構築を目的とする。</li>
</ul></font>
</div>

<div class="slide">
<h1>並列処理をすることによって発生するバグ</h1>
<table>
  <tr>
    <td><ul>
	<li>Task の実行順序の違いによりバグが発生</li>
	<li>Task 間のデータの同期による衝突判定のバグ</li>
	<li>Task の実装の違い</li>
	<li>オブジェクトの生成時、衝突時にゲームの状態が遷移する</li>
	<li>オブジェクトの生成時、衝突時のログを見ることでバグを発見する</li>
    </ul></td>
    <td>
      <img src="images/test_log.png" width=350 height=300/>
    </td>
  </tr>
</table>
</div>

<div class="slide">
<h1>SPE 内での予測可能な乱数の使用</h1>
<table>
  <tr>
    <td><ul class="simple">
	<li>シーケンシャルプログラムでは 1 つの乱数列から順番に乱数を取得</li>
	<li>Cell における並列プログラムでは各 SPE 内で 独自の乱数列を生成</li>
	<li>シーケンシャルと並列で異なる結果が出る</li>
	<li>PPE 内で乱数を生成し、Task に渡して計算させる</li>
	<li>シーケンシャルと同じ乱数が使用できる</li>
    </ul></td>
    <td>
      <img src="images/cell.png" width=300 height=200/>
    </td>
  </tr>
</table>
</div>

<div class="slide">
<h1>Capture モードと Trace モード</h1>
<ul class="simple">
  <li>プレイヤーからの入力を 1 フレーム毎に記録する</li>
  <li>記録したファイルを読み込むことで過去のプレイヤー入力を再現できる</li>
  <li>旧バージョンの入力を記録し、新バージョンで読み出すことができる</li>
  <li>非決定的なプレイヤー入力を固定することができる</li>
</ul>
</div>

<div class="slide">
<h1>結論</h1>
<h2>本研究では並列環境におけるゲームプログラムのテスト手法を提案した</h2>
<ul class="simple">
  <li>衝突判定時のテストログ出力によるデバッグは OpenGL と Task Dandy の
    実行結果が同じであることから、効果的であった</li>
  <li>Task への乱数受け渡しによって逐次実行、並列実行で使用する乱数を
  同じものにした</li>
  <li>入力の自動化により、描画を行わずにテストを行ったところ、
    テスト時間を短縮することが出来た</li>
</ul>
</div>

</div>
</body>
</html>