# HG changeset patch # User e055722 # Date 1235627665 -32400 # Node ID 39dcb690610163897c95a22739d8d874dca6dbea # Parent ba9f928959ce498527ce47a06afc07ef5699a7c0 add many images diff -r ba9f928959ce -r 39dcb6906101 presentation/image/SGcreate.jpg Binary file presentation/image/SGcreate.jpg has changed diff -r ba9f928959ce -r 39dcb6906101 presentation/image/SceneGraph.graffle Binary file presentation/image/SceneGraph.graffle has changed diff -r ba9f928959ce -r 39dcb6906101 presentation/image/SceneGraph.jpg Binary file presentation/image/SceneGraph.jpg has changed diff -r ba9f928959ce -r 39dcb6906101 presentation/thesis_pre.html --- a/presentation/thesis_pre.html Thu Feb 26 10:54:43 2009 +0900 +++ b/presentation/thesis_pre.html Thu Feb 26 14:54:25 2009 +0900 @@ -41,66 +41,59 @@

SceneGraphを用いた
ゲームプログラムの為のテスト作成手法

発表者:小林 佑亮

-

所属:琉球大学 工学部 情報工学科

+

所属:琉球大学 工学部 情報工学科 並列信頼研

指導教員:河野 真治

研究背景・目的

- -研究背景
+研究背景 -
-研究目的
+研究目的 -

PlayStation3のアーキテクチャ


-Cell-main -SPE - +
+Cell-main +SPE +

Cerium Rendering Engine

-Ceriumは以下の3つから構成される。 -
-

TaskManager

- -
@@ -113,22 +106,14 @@

SceneGraph

-
- -
-

RenderingEngine

- -
@@ -137,45 +122,66 @@
-
- +
+

超弾帝(スーパーダンディ)

+ +
+ +
+

超弾帝(スーパーダンディ)

+
+ +
+
+ +

move,collision

-boss1_action.cpp
- -
-static void
+
+
 boss1_move_right(SceneGraphPtr node, int screen_w, int screen_h) {
-  node->xyz[0] += node->stack_xyz[0];
-  if(node->xyz[0] > screen_w-280) {
-    node->set_move_collision(boss1_move_left, boss1_collision);
-  }
-}
-
-static void
-boss1_move_left(SceneGraphPtr node, int screen_w, int screen_h) {
+
+
   node->xyz[0] -= node->stack_xyz[0];
   if(node->xyz[0] < 280) {
+    
      node->set_move_collision(boss1_move_right, boss1_collision);
+
   }
 }
 
+ + +boss1_move_left(SceneGraphPtr node, int screen_w, int screen_h) { -
+
+  node->xyz[0] += node->stack_xyz[0];
+  if(node->xyz[0] > screen_w-280) {
+  
+    node->set_move_collision(boss1_move_left, boss1_collision);
+
+  }
+}
+
    -
  • boss1_move_right,left…boss1が左右に移動する動きを記述
  • -
  • boss1_collision…boss1の衝突判定を記述
  • -
  • set_move_collision…新しいmoveとcollitsionを設定する
  • +
  • ボス1が右や左に移動
  • +
  • 引数のmoveとcollisionに変化
+
@@ -186,35 +192,22 @@
  • テストケースを増やす事が容易
  • テストケース群は一括で実行し、結果の表示も行える
  • -
    -
    -
    - -
    -
    -
    -
    -

    テストを行うゲームプログラム

    - -
    - +
      -
    • 3つのSceneGraphを持つ
    • -
    • 本体の他に左右にパーツを1つずつ持つ。
    • -
    • 本体をTreeのrootとして左右のパーツがその子供となっている
    • +
    • CPPUNIT_ASSERT( )
      + 引数が真なら成功、偽なら失敗
    • +
    • CPPUNIT_ASSERT_EQUAL( , )
      + 第1引数と第2引数が同じなら成功、違えば失敗
    • +
    • CPPUNIT_FAIL( )
      + 必ず失敗する
    +
    -
    -
      -
    • 各オブジェクトのSceneGraphはその親や子、兄弟に対するアドレスを保持している
    • -
    • パーツオブジェクトのテストを行いたい場合、Rootである本体から辿れば、パーツオブジェクトの各パラメータを参照できる
    • -
    -
    @@ -225,11 +218,12 @@
  • rootアドレスから本体オブジェクトの各パラメータを参照
  • rootアドレスを走査してパーツオブジェクトの各パラメータを参照
  • -
    +
    @@ -263,15 +256,17 @@

    評価・今後の課題

    +
    • 全てのオブジェクトの座標の初期位置が正しい事を確認
    • move,collision中の各オブジェクトの座標は確認出来ない
    • 今後各moveとcollisionを抜き出してテストする手法を実装する
    +
    -

    ご清聴ありがとうございました。

    +

    ご清聴ありがとうございました。

    +
     void
     sgTest::rootTest() {
    @@ -253,7 +247,6 @@
           CPPUNIT_ASSERT_EQUAL(0.0f, sg_root->brother->xyz[0]);
     ...
           sg_root = sg_root->brother;
    -    } else {
     	...