# HG changeset patch # User koba # Date 1288693153 -32400 # Node ID 45ffa0e20c0ff0daaf2bd455d3bae9566e8c0d02 # Parent 0e914374d8139ddc128e7f34e07ce596a34959cf add presentation. diff -r 0e914374d813 -r 45ffa0e20c0f document/presentation/image/dependency.png Binary file document/presentation/image/dependency.png has changed diff -r 0e914374d813 -r 45ffa0e20c0f document/presentation/semi10_08_10.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi10_08_10.html Tue Nov 02 19:19:13 2010 +0900 @@ -0,0 +1,159 @@ + + + + + +ゼミ資料 10/08/10 + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + +
+ + +
+

Cerium を用いた
+Game Programming における
+テスト手法の提案

+

小林 佑亮

+

琉球大学 理工学研究科 情報工学専攻

+

No.098581D

+
+ + +
+

研究背景・目的

+
    +
  • 我々は学生実験においてPlayStation3を用いたGameProgramの作成を行っている
  • +
  • PlayStation3上の開発ではCell Architectureを考慮した並列プログラミングが必要である
  • +
  • そこで当研究室ではCerium Game Engineを開発した
  • +
  • CeriumではObjectの描画やMove,Collisionを全てTaskという単位で管理している
  • +
  • しかしSequentialなProgramに比べて期待した動作を保証する事が難しい
  • +
  • 本研究ではCeriumを用いたGameProgramの信頼性を上げることを目的とする
  • +
  • Task単位での単体テストを行う
  • +
  • Input DataとOutput Dataの比較を行う
  • +
  • Taskの依存関係・実行順序も考慮する
  • +
  • 最終的には上記のテストから得られた結果を元にTest Frameworkの作成を行う
  • +
+
+ +
+

今週やったこと

+
    +
  • Cerium OpenGL の透過処理
  • +
  • Super Dandy
  • +
+
+ +
+

Cerium OpenGL の透過処理

+
    +
  • 透過処理完了
  • +
  • 以下の箇所にコードを追加
  • +
    +  glEnable(GL_DEPTH_TEST);
    +  glEnable(GL_ALPHA_TEST);
    +  glAlphaFunc(GL_GREATER, 0);
    +  glDepthFunc(GL_LESS);
    +  glShadeModel(GL_SMOOTH);
    +
    +
+
+ +
+

Super Dandy

+
    +
  • EXC_BAD_ACCESSなバグの処理
  • +
  • PropertyにcreateSceneGraphでもらったアドレスを格納->使用していたのが原因
  • +
  • allExecuteでSceneGraphの再生成をする為、上記のアドレスは使えない
  • +
  • 毎フレームSceneGraphのアドレスを取ってくる必要がある
  • +
  • とりあえずMove関数でSceneGraphのアドレスをPropertyに格納してみる
  • +
  • TaskでPropertyの値を計算
  • +
  • post_funcでPropertyの値をSceneGraphに反映させる
  • +
+
+ +
+

Super Dandy

+
    +
  • 描画に反映されていない
  • +
  • 毎フレームSceneGraphの座標を加算しているが反映されていない
  • +
  • 処理の順序が以下のようになっている気がする
  • +
      +
    1. allExecute(SceneGraphの破棄&生成)
    2. +
    3. 描画
    4. +
    5. post_funcで反映
    6. +
    +
+
+ +
+

Super Dandy

+
    +
  • allExecute&全Taskの実行順序を調べてみる
  • +
      +
        +
      1. DataAllocate
      2. +
      3. LoadTexture
      4. +
      5. allExecute
      6. +
      7. GameTask
      8. +
      9. CreatePolygonFromSceneGraph
      10. +
      11. GameTask->post_func
      12. +
      13. CreateSpan
      14. +
      15. DataUpdate
      16. +
      17. allExecute
      18. +
      19. GameTask
      20. +
      21. CreatePolygonFromSceneGraph
      22. +
      23. TitleMove->post_func
      24. +
      25. CreateSpan
      26. +
      27. DataUpdate
      28. +
      29. DrawSpanたくさん
      30. +
      31. allExecute
      32. +
      +
    +
+
+ +
+

Super Dandy

+
    +
  • post_funcがTaskの直後に実行されていない(バグ?しかしFifo)
  • +
  • post_funcじゃなくてMove関数で反映させれば関係ない(しかし1フレーム遅れる)
  • +
  • DrawTaskとGameTaskを一緒に管理できる仕組みが欲しい
  • +
  • DrawTask->wait_for(GameTask)とか出来ると良い
  • +
+
+ +
+ + diff -r 0e914374d813 -r 45ffa0e20c0f document/presentation/semi10_10_12.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi10_10_12.html Tue Nov 02 19:19:13 2010 +0900 @@ -0,0 +1,118 @@ + + + + + +ゼミ資料 10/10/12 + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + +
+ + +
+

Cerium を用いた
+Game Programming における
+テスト手法の提案

+

小林 佑亮

+

琉球大学 理工学研究科 情報工学専攻

+

No.098581D

+
+ + +
+

研究背景・目的

+
    +
  • 我々は学生実験においてPlayStation3を用いたGameProgramの作成を行っている
  • +
  • PlayStation3上の開発ではCell Architectureを考慮した並列プログラミングが必要である
  • +
  • そこで当研究室ではCerium Game Engineを開発した
  • +
  • CeriumではObjectの描画やMove,Collisionを全てTaskという単位で管理している
  • +
  • しかしSequentialなProgramに比べて期待した動作を保証する事が難しい
  • +
  • 本研究ではCeriumを用いたGameProgramの信頼性を上げることを目的とする
  • +
  • Task単位の単体テスト
  • +
  • Input DataとOutput Dataの比較
  • +
  • Taskの依存関係・実行順序
  • +
  • 可視化?
  • +
+
+ +
+

学会発表について

+
    +
  • 発表締切:10月20日 ディペンダブルコンピューティング研究会[鳥取](2011年12月10日)
  • +
  • 発表締切:11月5日 コンピュータシステム研究会[東京](1月17日 - 1月18日)
  • +
  • 発表締切:11月15日 コンカレント工学研究会[山口](2011年1月20日 - 1月21日)
  • +
  • 発表締切:1月7日 ネットワークシステム研究会[沖縄](2011年3月3日 - 3月4日)
  • +
  • 発表締切:未定 ソフトウェアサイエンス研究会[沖縄](2011年3月7日 - 3月8日)
  • +
+
+*発表締切順 +
+ +
+

学会発表について

+
    +
  • 発表締切:10月20日 ディペンダブルコンピューティング研究会[鳥取](2011年12月10日)
  • + +
  • 発表締切:11月5日 コンピュータシステム研究会[東京](1月17日 - 1月18日)
  • +
  • 発表締切:11月15日 コンカレント工学研究会[山口](2011年1月20日 - 1月21日)
  • +
    + +
  • 発表締切:1月7日 ネットワークシステム研究会[沖縄](2011年3月3日 - 3月4日)
  • +
  • 発表締切:未定 ソフトウェアサイエンス研究会[沖縄](2011年3月7日 - 3月8日)
  • +
    +
+
+ +
+

Super Dandy

+
    +
  • dependency の追加
  • +dependency
    +
+
+ +
+

Super Dandy

+
    +
  • Pad の値を task に渡して計算する例題完了
  • +
  • 各 SceneGraph の move 関数で Property の値を SceneGraph に反映していた
  • +
  • 汎用的ではない
  • +
  • post_func で値の反映をしたい
  • +
+
+ +
+ + diff -r 0e914374d813 -r 45ffa0e20c0f document/presentation/semi10_10_19.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi10_10_19.html Tue Nov 02 19:19:13 2010 +0900 @@ -0,0 +1,122 @@ + + + + + +ゼミ資料 10/10/19 + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + +
+ + +
+

Cerium を用いた
+Game Programming における
+テスト手法の提案

+

小林 佑亮

+

琉球大学 理工学研究科 情報工学専攻

+

No.098581D

+
+ + +
+

研究背景・目的

+
    +
  • 我々は学生実験においてPlayStation3を用いたGameProgramの作成を行っている
  • +
  • PlayStation3上の開発ではCell Architectureを考慮した並列プログラミングが必要である
  • +
  • そこで当研究室ではCerium Game Engineを開発した
  • +
  • CeriumではObjectの描画や動きを全てTaskという単位で管理している
  • +
  • しかしSequentialなProgramに比べて期待した動作を保証する事が難しい
  • +
  • 本研究ではCeriumを用いたGameProgramの信頼性を上げることを目的とする
  • +
  • Task単位の単体テスト
  • +
  • Input DataとOutput Dataの比較
  • +
  • Taskの依存関係・実行順序
  • +
  • 並列度の低い部分を知らせる
  • +
  • 可視化
  • +
+
+ +
+

超弾帝

+
    +
  • 色々なタイミングで Bad_Access になる問題の発生
  • +
  • メモリの allocate 時のサイズの指定が問題だった
  • +
  • メモリの allocate の不具合を解消
  • +
+
+ +
+

超弾帝

+
    +
  • Property の値が不正に変わる問題の発生
  • +
  • init 時、task 実行時、post_function 実行時でそれぞれ検証
  • +
  • init 時の data と task 実行時の inData、outData は正常
  • +
  • init 時の data と post_func 時の data の address は一致
  • +
  • post_func 時の data が異常
  • +
  • 何が原因かわからない…
  • +
  • TaskArray への対応を先にやる
  • +
+ +
+

超弾帝

+

前回の実装

+dependency
+
    +
  • GameTask 部分と CreatePorygonFromSG 部分が TaskArray 化できそう
  • +
  • とりあえず GameTask 部分を実装してみる
  • +
+
+ +
+

超弾帝

+
    +
  • GameTask をまとめる TaskArray を SceneGraphRoot に用意
  • +
  • Application ではまず TaskArray の init をする
  • +
  • あとは set_move_task で TaskArray に Task を追加してゆく
  • +
+
+ +
+

超弾帝

+
    +
  • ゲームには自機や複数の種類の敵がいる(Task の種類も様々)
  • +
  • 1つの TaskArray に色々な種類の Task が入るのか?
  • +
  • 入りそうだからとりあえず実装してみる
  • +
+
+ +
+ + diff -r 0e914374d813 -r 45ffa0e20c0f document/presentation/semi10_10_26.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi10_10_26.html Tue Nov 02 19:19:13 2010 +0900 @@ -0,0 +1,170 @@ + + + + + +ゼミ資料 10/10/26 + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + +
+ + +
+

Cerium を用いた
+Game Programming における
+テスト手法の提案

+

小林 佑亮

+

琉球大学 理工学研究科 情報工学専攻

+

No.098581D

+
+ + + +
+

今週の作業内容

+
    +
  • Debug
  • +
  • TaskArray への対応
  • +
  • Dandy 移植のアプローチ考察
  • +
+
+ +
+

超弾帝

+

Debug

+
    +
  • TaskArray 使用 -> 謎の Bad Access
  • +
  • App->init で TaskArray を生成していた
  • +
  • App->init は一度しか呼ばれない
  • +
  • 毎フレーム TaskArray を生成する必要がある
  • +
  • Renderer 側で TaskArray 生成に必要な値(Task_id, Task_num, param, inData_num, outData_num) を保持しないといけない
  • +
  • 全部 SceneGraphRoot に持たせるのは嫌なので新しい class にまとめる
  • +
+
+ +
+

超弾帝

+

GTaskArray の作成

+
+
+
+class GTaskArray {
+public:
+    GTaskArray(void);
+    ~GTaskArray(void);
+
+    HTaskPtr game_task_array;
+    TaskPtr game_task;
+
+    int task_id;
+    int task_num;
+    int param_num;
+    int inData_num;
+    int outData_num;
+
+    void init(int id, int task, int param, int inData, int outData);
+    void create_task_array(TaskManager *manager);
+    void next_task_array(int id);
+    void finish();
+    HTaskPtr get_task_array(){return game_task_array;}
+};
+
+
+
+
+ +
+

超弾帝

+

TaskArray への対応

+
    +
  • SceneGraphRoot が GTaskArray をもつ
  • +
  • GTaskArray の init の有無によって TaskArray を使用するか判断
  • +
  • Application 側では最初の init と task の設定だけでおk
  • +
  • TaskArray を用いずに SimpleTask を使える API も作る?
  • +
+
+ +
+

超弾帝

+

SceneGraph の値の更新について

+
    +
  • 各 Task の post_func で更新
  • +
  • SPE に SceneGraph そのものを送る -> パラメータが汎用的でない
  • +
  • TaskArray の post_func で更新
  • +
+
+ +
+

超弾帝

+
  • 移植のアプローチ
  • +
      +
    • allExecute なので schedule, collision によって SceneGraph木 を書き換えていく
    • +
    • 同期をどうするか
    • +
    • Move->Collision->Rendering が望ましいが並列的でない
    • +
    • 過去書いたソース(PutEnemy, Move関数)は再利用できる、と信じている
    • +
    • 特に直書きパラメータは利用したい
    • +
    +
    + +
    +

    研究内容

    +

    どんな研究に落とし込む?

    +
      +
    • 可視化
    • +
    • 並列度, Dependency, SPE のLS
    • +
    • +
    +
    + +
    + + diff -r 0e914374d813 -r 45ffa0e20c0f document/presentation/semi10_11_02.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi10_11_02.html Tue Nov 02 19:19:13 2010 +0900 @@ -0,0 +1,81 @@ + + + + + +ゼミ資料 10/11/02 + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + +
    + + + +
    + + +
    +

    Cerium を用いた
    +Game Programming における
    +テスト手法の提案

    +

    小林 佑亮

    +

    琉球大学 理工学研究科 情報工学専攻

    +

    No.098581D

    +
    + + + +
    +

    今週の作業内容

    +
      +
    • +
    +
    + +
    + +