view paper/introduciton.tex @ 14:19be75493fbb

fix.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Tue, 15 Feb 2011 18:04:22 +0900
parents 398e732edfb6
children
line wrap: on
line source

\chapter{序論}
\pagenumbering{arabic}

\section{研究背景・目的}
我々は、これまで家庭用ゲーム機上におけるゲームプログラミングをサポートする
オープンな開発フレームワークの研究を行ってきた。
過去には PlayStation や PlayStation2、GameBoyAdvance での
ゲームプログラミングを行っており、現在は PlayStation3 上での開発を行っている。

本研究では、我々が PlayStation3 用に開発した開発フレームワーク Cerium を
使用し、ゲームプログラムをシーケンシャルに動作させた場合と、Task という
単位に分割して動作させた場合に、その挙動が同一であることを確認することを
目的とし、テスト環境を実装した。テストデータとして過去に PlayStation2 上で
動作していたゲームプログラムを選択し、新たにこのゲームを Task に分割した
バージョンを作成した。テストを進めるにあたって、プレイヤー入力や乱数などの
非決定的な要素を固定化し、動作の同一性を確かめるのに必要なパラメータの
書き出しを行った。また高速なテスト駆動を実現するために処理時間の大半を
占めているレンダリング処理を排除するビデオモードを作成した。

PlayStation3 のアーキテクチャは Cell Broadband Engine と呼ばれ、
1つの制御系プロセッサ PowerPC Processor Element (PPE) と、
8つのデータ処理演算プロセッサ Synergistic Processor Element (SPE) 
から構成される。我々は、このような Many Core Architecture を用いた
並列プログラムの開発フレームワークとして Cerium Game Engine を開発した。
Cerium では、 プログラムを Task という単位で管理しており、この Task と計算に
必要なパラメータを PPE や各 SPE に並列に処理させる事により、プログラムの
動作を実現している。

Cerium はゲームプログラムをサポートしている。
ゲームプログラムの特徴として、オブジェクトの数だけパラメータが存在し、
それらが衝突判定などで相互に影響すること、プレイヤーのゲームパッドからの
入力やコード内に埋め込まれた乱数などの非決定的な要素が多いことが挙げられる。
その為、遷移する状態数が膨大であり、状態遷移が仕様の範囲に収まるかを
テストする一般的なテスト駆動のようなテストにはならない。
また、Cerium におけるゲーム開発ではプログラムを Task に分割するが、
Task 間でのパラメータの同期や Task 処理のタイミングによって
生成される乱数が異なるなどの問題があり、単純にシーケンシャルに
書かれたゲームプログラムを Task に分割して処理させても、元のプログラムを
逐次実行させた時と同じ動作をすることは保証されない。

そこで本研究ではシーケンシャルなゲームプログラムと Task に分割した
ゲームプログラムの動作が同一であることを確認するためのテスト手法を提案する。
シーケンシャルに書かれたゲームプログラムとそれを Task に分割したゲームプログラム
をテストモデルとし、プレイヤー入力や乱数などの非決定的な要素の固定化や、
動作の同一性を確かめるのに必要なパラメータの書き出し、そしてより高速な
動作でテストを行うことができる環境を構築する。