# HG changeset patch # User koba # Date 1299425903 -32400 # Node ID 7e707cabd73a52643cf8f690bda4864fd5ab8325 # Parent 7ea21aa275eb6da00ad75f80c4c2e6d2c596ea00 fix(not finish). diff -r 7ea21aa275eb -r 7e707cabd73a presen/sigss-presen.html --- a/presen/sigss-presen.html Sun Mar 06 19:47:14 2011 +0900 +++ b/presen/sigss-presen.html Mon Mar 07 00:38:23 2011 +0900 @@ -39,12 +39,13 @@
-

Game Framework Cerium を用いた
- ゲームプログラミングにおける
- テスト手法の提案

-

発表者:小林 佑亮

-

所属:琉球大学 理工学研究科 情報工学専攻 並列信頼研究室

-

指導教員:河野 真治

+

GameFrameWork Cerium における
+ Sequential な Game Program の分割と
+ 動作の検証

+ +

小林 佑亮

+

多賀野 海人 金城 裕 河野 真治

+

琉球大学 理工学研究科 並列信頼研究室

-

研究背景

-
    -
  • 我々は PlayStation3(以下 PS3) 上においてゲーム開発が行えるフレームワーク - Cerium を開発した。
  • -
  • Cerium ではプログラムを Task という単位に分けて管理し、これを PS3 の -アーキテクチャである Cell B.E に渡して並列処理を行う。
  • +

    研究要旨

    +
      +
    • 我々は PlayStation3(以下 PS3) のマルチコアアーキテクチャ Cell B.E を用いて + 並列処理を行うゲームフレームワーク Cerium を開発した。Cerium では + プログラムを Task という単位に分け、Cell B.E に渡して並列処理を行う。
    • シーケンシャルなプログラムを Task に分割して並列実行させても、 -逐次実行させた時と同じ動作をするとは限らない。
    • -
    • オブジェクト同士のデータの同期や、処理の実行順序など、シーケンシャルな -プログラムに比べて、バグを発生させる要因は多い。
    • -
    • また、ゲームプログラムの特徴はプレイヤーの入力やプログラム内にある乱数 -などの非決定的な要素が多いことが挙げられる。
    • -
    • これによってバグの再現性が低下するため、ゲームプログラムのテストは - 一般的なソフトウェアのテストに比べて難しい
    • + データの同期や実行順序の違いなどにより逐次実行させた時と同じ動作をするとは + 限らない。また、ゲームプログラムにはプレイヤーの入力や乱数などの非決定的な + 要素が多く、バグの再現性が低い。 +
      +
    • 本研究ではシーケンシャルなゲームプログラムを逐次実行した時と Task に分割 + した時の動作が同一である事を確認できるテスト環境を構築する。 + ゲームプログラムにおける非決定的な要素を固定化し、ゲームの状態遷移時に + おいてバグの検出を行うことで並列実行時のバグを発見する。
    • +
    • ゲームの状態数を数え上げ
-
-

研究概要

-
    -
  • 本研究では Task に分割されたゲームプログラムがシーケンシャルなバージョン -と同じ動作である事を確認できるテスト環境を構築した
  • -
  • プレイヤーの入力や乱数などの非決定的な要素を固定化した
  • -
  • 動作の同一性を確かめるために必要なパラメータの書き出しを行った
  • -
  • 高速なテストを行う為、テストに影響しない範囲で実行時間が大きい処理を -排除した
  • -
-
- +

Game Framework Cerium

+

オブジェクトの管理や描画、Task の管理を行う

+
+
SceneGraph
+
オブジェクトのパラメータやポリゴン情報を tree 構造のノードで管理
+
Rendering Engine
+
3 種類の Task によって並列に描画処理を行う
+
TaskManager
+
Task を動的に SPE へ割り振るカーネルとして振舞う
+
+
+ + +

並列処理によるバグ

- +
-
  • 逐次処理と異なり、並列処理では、敵オブジェクトの処理が弾の動く処理より先に行われる場合がある
  • @@ -287,11 +292,11 @@
+ +

バグの検出方法

@@ -555,11 +563,13 @@ -->
-

ビデオモードによる実行時間の比較

-

SuperDandy と TaskDandy の描画の有無による実行時間を観測

+

描画の有無による実行時間の比較

+ +

プレイヤー入力の固定化により描画処理を省略することができる

+
- +
TaskDandyTaskDandy(no video)
描画有り描画無し
実行時間6643.16 sec385.17 sec
@@ -577,11 +587,11 @@

まとめ

    +
  • ゲームにおけるランダム要素であるプレイヤー入力、乱数生成を固定化した
  • ゲームの状態遷移時におけるバグの検出を行った
  • -
  • ゲームにおけるランダム要素であるプレイヤー入力、乱数生成を固定化した
  • 描画の除去によるテストの高速化を行った

  • -
  • ゲームの状態遷移数を数えることにより、ゲーム内の全ての事象をテストできる
  • +
  • ゲームの状態遷移数を数えることにより、ゲーム内の全ての状態をテストできる
  • 並列環境上における、ゲームプログラムのテストを自動化する事が可能
  • 今後はゲームの状態遷移数の数え上げを行う