view poster/master-lt.html @ 18:a5fb2dea1c60

fix.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Thu, 17 Feb 2011 14:49:08 +0900
parents d39c452010ea
children c20d7b72cd4a
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>
<center>
<img src="images/cell.png" width=350 height=150/>
</center>
</div>

<div class="slide">
<h1>ゲームプログラムの特徴</h1>
<ul class="simple">
  <li>遷移する状態が膨大</li>
  <li>実際にプレイヤーがゲームをプレイするのが重要なテスト</li>
  <li>プレイヤーの入力は常に非決定的(毎回結果が異なる)</li>
  <li>乱数のランダム性がデバッグをする上でバグの再現を困難にする</li>
</ul>
</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>SPE 内での予測可能な乱数の使用</h1>
<table>
  <tr>
    <td><ul class="simple">
	<li>あらかじめ PPE 内で乱数列を生成しておく</li>
	<li>inData として Task に渡す</li>
	<li>Move Task や Collision Task の生成タイミングは Super Dandy の
	Move や Collision のタイミングと同じ</li>
	<li>Super Dandy と同じ乱数が使用できる</li>
    </ul></td>
    <td>
      <img src="images/ppe_random.png" width=400 height=300/>
    </td>
  </tr>
</table>
</div>

<div class="slide">
<h1>本研究のテスト環境における描画処理</h1>
<table>
  <tr>
    <td><ul class="simple">
	<li>プレイヤーの入力の自動化により、プログラムを実行するだけでテストが可能</li>
	<li>描画処理が不要となる</li>
	<li>描画用 Task の生成を行わない事により、テストの高速化ができる</li>
	<li>また、画面バッファの確保も不要</li>
    </ul></td>
    <td>
      <img src="images/video2.png" width=300 height=300/>
    </td>
  </tr>
</table>
</div>

<div class="slide">
<h1>シューティングゲーム SuperDandy</h1>
<table>
  <tr>
    <td><ul class="simple">
	<li>我々が PlayStation 上でのゲーム開発を行っていた 1998 年に開発</li>
	<li>タイトルからゲーム本編中の敵機の登場、ステージクリア、エンディングと
	  ゲーム的な要素が多い</li>
	<li>PlayStation, PlayStation2 Linux, OpenGL と伝統的に移植されてきた</li>
    </ul></td>
    <td>
      <img src="images/dandy.png" width=300 height=250/>
    </td>
  </tr>
</table>
</div>

<div class="slide">
<h1>Task への乱数受け渡しと検証結果</h1>
<ul class="simple">
  <li>多数の隕石オブジェクトが生成されるステージで全ての隕石オブジェクトが
  生成されるのを観察</li>
  <li>隕石オブジェクトの初期配置は乱数によるランダム配置</li>
  <li>隕石オブジェクト生成後の座標と速度を出力</li>
  <br>
  <li>生成された隕石オブジェクトのパラメータが両バージョンで一致している</li>
  <li>Task への乱数受け渡しによるバグの再現性の低下防止は有効である</li>
</ul>
</div>

<div class="slide">
<h1>実行結果</h1>
<table border="1" cellspacing="0">
  <tr><td></td><th>OpenGL</th><th>Task(no video)</th><th>Task</th></tr>
  <tr><th>実行時間</th><td>336.09 sec</td><td>385.17 sec</td><td>6643.16 sec</td></tr>
</table>
<ul class="simple">
  <li>Task バージョンは劇的に処理時間が増加</li>
  <li>描画処理の Task の処理時間が非常に大きいと考えられる</li>
  <li>描画処理の Task に比べればゲームの Task は処理が小さい</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>