changeset 6:cd0acbe8f5e0 default tip

add pdf file.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Sat, 28 Aug 2010 17:08:49 +0900
parents 14fe10070ae5
children
files Makefile paper-koba.pdf paper-koba.tex
diffstat 3 files changed, 38 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sat Aug 28 03:37:51 2010 +0900
+++ b/Makefile	Sat Aug 28 17:08:49 2010 +0900
@@ -19,4 +19,6 @@
 	dvipdfmx $<
 
 clean:
-	rm -f *~ $(TARGET).dvi $(TARGET).aux $(TARGET).log $(TARGET).pdf
\ No newline at end of file
+	rm -f *~ $(TARGET).dvi $(TARGET).aux $(TARGET).log $(TARGET).pdf
+clean-p:
+	rm -f *~ $(TARGET).dvi $(TARGET).aux $(TARGET).log
\ No newline at end of file
Binary file paper-koba.pdf has changed
--- a/paper-koba.tex	Sat Aug 28 03:37:51 2010 +0900
+++ b/paper-koba.tex	Sat Aug 28 17:08:49 2010 +0900
@@ -198,7 +198,7 @@
 
 set\_postにより、ユーザ側でも Task が終了したということを検知できる
 
-\section{Cerium を用いたゲーム開発}\label{section:game_develop}
+\section{Cerium を用いたゲーム開発の手法}\label{section:game_develop}
 多くのゲームでは毎フレーム、オブジェクトのパラメータを計算し、その結果によって 
 Rendering や collision の判定を行う必要がある。
 Cerium 環境では毎フレーム、オブジェクトの動作(Move)を記述した Task を生成し
@@ -228,11 +228,14 @@
 \label{figure:reflect}
 \end{figure}
 
-\section{発生したバグとその対処}
+\section{Cerium を用いたゲーム開発におけるデバッグ}
+Cerium を用いたゲーム開発を進める過程で発生したバグの例と
+それを解決する為に用いた手法を示す。
+
 \subsection{Task の依存関係によるバグ}
-Cerium を用いたゲーム開発を進めたところ、
+\ref{section:game_develop}章の方法を用いてゲームの作成を行ったところ、
 Task による Property の計算が描画に反映されなかった。そこでプログラム上で動作している 
-主要な Task の実行順序を調べてみたところ、以下のようになった。
+主要な Task の実行順序を調べてみると、以下のようになった。
 
 \begin{enumerate}
 \item GameTask(Game 本体の Task)
@@ -243,9 +246,9 @@
 \end{enumerate} 
 
 Cerium による Rendering は 3つの Task によって実現されているが\ref{subsection:rendering}
-そのプロセスが SceneGraph への Property の値の反映より先に実行されているのがわかる。
+その最初プロセスである CreatePolygonFromSceneGraph が SceneGraph への Property の値の反映より先に実行されているのがわかる。
 
-このバグに対しては全ての GameTask の終了をwait\_forで待つ DummyTask(何も動作しないTask)を Rendering Task との
+これ対して、全ての GameTask の終了をwait\_forで待つ DummyTask(何も動作しないTask)を Rendering Task との
 間に挟むことによって Task の 実行順序を調整した(図\ref{figure:debug_dependency})。
 
 \begin{figure}[tb]
@@ -256,9 +259,32 @@
 \label{figure:debug_dependency}
 \end{figure}
 
-\subsection{Task に送る}
+\subsection{Task に送る Input Data と Output Data の比較}
+コントローラーの入力を見て、Property の値を変化させる Task を作ったところ、期待通りの動作をしなかった。
+この為、この Task で処理する Input Data と Output Data の比較を行ったところ、Output Data の Property に
+でたらめなパラメータが入っている事がわかった。この時点で Task 内になんらかの不当な処理がされていると予想した。
+
+この Task では SPE に コントローラーの入力の値と Property を送っているが、Cerium の仕様により、
+これらのデータは void* 型でInput され、Task 内で必要な型に cast されて使用される。
+今回のバグは Task 内において、コントローラーの入力と Property の型を逆にして cast してしまったのが
+原因であることがわかった。
+
+\section{まとめと今後の課題}
+今回は Task の依存関係を列挙することにより、実行順序に関するバグを発見することが出来た。
+また、 Task の Input, Output を調べることにより、Task 内での不正な処理を発見した。
 
-\section{まとめ}
-Task の dependency を把握することは
+今後はゲームの実装を進めるとともに、コードのメトリクス(数値データ)を取りながらテストの評価をしていく予定である。
+
+\begin{adjustvboxheight}
+\begin{thebibliography}{99}
+\bibitem{}宮國 渡. Cell 用の Fine-Grain Task Manager の実装.
+ 琉球大学大学院 理工学研究科 情報工学専攻 平成20年度 学位論文 2008.
+
+\bibitem{}高橋 寿一. 知識ゼロから学ぶソフトウェアテスト. 翔泳社 2005.
+
+\bibitem{}KENT BECK. テスト駆動開発入門. PEARSON Education Japan 2003.
+
+\end{thebibliography}
+\end{adjustvboxheight}
 
 \end{document}