1. 学生向けゲーム作成演習の様子

  2. 概要

    Cerium を用いたゲーム開発

    images/cerium_game.jpg
    SuperDandy3D
  3. 3Dモデリング

    まずはゲーム中のオブジェクトのモデリングを行う
  4. 3Dモデルの作成

    Blender: フリーの高機能なモデリングツール

  5. 3Dモデルの作成

    Blender: 作成画面

  6. モデルをCeriumに読ませる.

    PS3,Cell,Cerium

    PS3にはCell Broadband Engine が搭載されている。
  7. Cellとは

    Cellとはソニー、東芝、IBM社の3社が共同開発したマイクロプロセッサ
    Cellは1基の制御系のプロセッサコアPPEと、8基の演算系プロセッサコアSPEで構成される(Ceriumで扱えるSPEの数は6基)。それぞれ高速なバスで接続されている

  8. Ceriumとは

    Ceriumとは当研究室で開発したゲーム開発用フレームワークである

    Task Manager
     タスクと呼ばれる分割されたプログラムを管理する
    Scene Graph
     ゲーム中のオブジェクトの振る舞いや、ルールを管理する。 Rendering Engine
     Cerium独自に開発した描画用のエンジン

    の3つの要素から構成される。

    Ceriumは PS3/Cell、linux, macosx 上で動作する。
  9. SceneGraph

    Blenderで生成した3Dモデルを独自のXML形式で出力.

    SceneGraph の各ノードには MoveTask, Collision Task がある.

  10. SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

    static void
    boss1_move_right() {
      x += 1;
      if(x > screen_w) {
        set_move(boss1_move_left);
      }
    }
    
    static void
    boss1_move_left() {
      x -= 1;
      if(x < screen_w) {
        set_move(boss1_move_right);
      }
    }
    

    SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

    SceneGraph

           SceneGraph を
    MoveTask
    CollisionTask
    で書き換えていく
    MoveTask, CollisionTask は、ステートパターンで
    入れ換えられる
    これで、すべて書ける。

    つまり、

        SceneGraph の構築
    MoveTask
    CollsionTask
    だけを書けば、あとは、Cerium Task Manager が自動的に並列に実行管理してくれる

    SceneGraphの結果を描画

    SceneGraphで操作したオブジェクトの結果を、レンダリングエンジンで描画する

    Rendering Engineの構成

    Rendering Engineは主に3つのタスクから構成されている

    CreatePolygonタスク
     モデリングデータからポリゴンを生成するタスク
    CreateSpanタスク
     生成されたポリゴンを水平な直線(Span)に分割するタスク
    DrawSpanタスク
     Spanのデータを元に、画面に描画するタスク

    Rendering Engineの流れ

    CreatePolygon:
    SceneGraph をもとに回転や並行移動したポリゴンを、モデルデータから生成するタスク
    ポリゴンは三角形である
    回転や平行移動はSceneGraphが持っている変換行列を用いる

    Rendering Engineの流れ

    CreateSpan:
    三角形のポリゴンを線に分割するタスク。 生成されたポリゴンを水平な直線(Span)の集合へと分割する
    Spanとは1ドット単位で分割された線

    Rendering Engineの流れ


    DrawSpan:
    Spanを画面へ描画するタスク
    Spanを1Dotずつ見ていき、対応する画面の1Dotに色をつける
    色はSpanに対応する画像の色をみて決める

    TaskManager

    SceneGraph, RenderingEngineのTaskを管理し、SPEに
  11. Cerium Task Manager


    このような経緯で、Cell Task Manager を作成することになった。
  12. Cerium Task Manager の特徴

           PPU/SPUで、Task の互換性がある
    SPU上の最適化は当面禁止
    OS X 上でも動く
    コードのデバッグはOS X 上でやる
    並列化とチューニングだけPS3上で行なう
    SPU上のメモリをCode と Data を Hash とメモリリストで管理する
    SPUに入り切らない巨大なTaskでも実行できる
  13. 並列アーキテクチャは並列でないと...

    特に、Cell/PS3 は、SPUで実行しないとだめ
         既存のプログラミングでは、まったく歯が立たない
    トリビアルなプログラムでも、並列にする必要がある

  14. やってはいけないこと

          最初に大量のTaskをすべて作る
    Task が自分でデータを拾って来る
    Task 同士が、同期を行なう
  15. まとめ

    Blender/Linux/Cerium を用いたオープンソースなゲームフレームワーク

    SceneGraphを作れば、move/collision を記述するだけで並列に実行される

    ソフトウェアレンダリングなんで、なんでも自分で書ける

  16. 今後の課題