Cerium を用いた
Game Programming における
テスト手法の提案
小林 佑亮
琉球大学 理工学研究科 情報工学専攻
No.098581D
概要
- 当研究室ではこれまで家庭用ゲーム機上での開発を行ってきた。過去には PlayStation や PlayStation2、 GameBoyAdvance を用いており、現在は PlayStation3(以下 PS3) て動作するゲーム開発を行っている。
- PS3 の Archtecture である CellBroadbandEngine では複数の SPE を使用する並列プログラミングが求められている。
- そこで当研究室では CeriumGameEngineを 開発した。Cerium では Program 動作や使用するデータを全て Task という単位で管理している。この Task を各 SPE に渡し、Pipeline で実行することで Program を動作させている
- しかし Task の Dependency や データの同期の問題があり、Sequential に書いたコードと同じ動作を保証するのは難しい
- 本研究では Cerium を用いた GameProgram を使った実験を行い、期待した動作を保証できるテスト手法の提案をする。
- また GameProgram の並列度やパフォーマンスを向上させる事を目的とする。
Task Dandy
- MoveとCollisionのTask化
- 必要なパラメータを add_inDataし、set_post で値を更新
- 送ったデータ量はCollisionで約7KB(Moveだともっと少ない)
- SPEに置くバイナリデータは現状で約100KB
- TaskのDependencyの設定が必要
Task Dandy
- Player、tokutenのTask化も
- SPE内でのPutSprite, Putenemyの扱い
(入力されたデータを保持して返す、renew_task->post_func)
- データ毎に最適化が必要
- 1frame内に複数回書き換え&SPE間で共用->mainMem_alloc?
- 共通のデータを使用するTaskは同じSPEで(Dataはglobal_alloc)
論文内容
- Task の Pipeline の図示(開始、終了時間を記録する)
- Task の Dependency の可視化