diff paper/dandy.tex @ 9:028ed9741872

finish chapter 8.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Tue, 08 Feb 2011 05:18:27 +0900
parents 2dcc784d62e0
children d711f469cdb7
line wrap: on
line diff
--- a/paper/dandy.tex	Mon Feb 07 15:47:01 2011 +0900
+++ b/paper/dandy.tex	Tue Feb 08 05:18:27 2011 +0900
@@ -1,6 +1,6 @@
-\chapter{Super Dandy}
+\chapter{テストに用いるゲームプログラム Super Dandy}
 
-\section{Super Dandy}\label{sec:dandy}
+\section{テストプログラムに最適なシューティングゲーム}\label{sec:dandy}
 Super Dandy は我々が PlayStation でのゲーム開発を行っていた 1998 年に
 開発されたシューティングゲームである。PlayStation アーキテクチャの
 スプライト描画機能を用いて宇宙空間を表現しており、タイトルからゲーム本編中の
@@ -29,8 +29,25 @@
 本研究を進めるにあたり、Super Dandy を Cerium の Task で書き換えた 
 Task Dandy を作成した。Task Dandy はできるだけ元の Super Dandy のコード
 やデータ構造を流用し、比較、テストが容易に行えるように設計した。
+その為、Super Dandy で Move や Collision の処理を行う state\_update() や
+collision\_detect() において Move Task や Collision Task を生成している。
+また、obj\_draw() はオブジェクトの描画を行う関数であったが、Task Dandy では
+SceneGraph の tree を生成している。そしてゲームの処理を抜け、Cerium の処理に
+入ると、さきほど生成した SceneGraph の tree から描画処理を行う 3 つの Task 
+を生成する(\ref{sec:rendering})。この一連の処理を繰り返すことによって
+シューティングゲームである Task Dandy が形成される。(図\ref{fig:taskdandy})
 
-\subsection{データ構造}
+\begin{figure}[h]
+\begin{center}
+\includegraphics[scale=0.5]{images/taskdandy.pdf}
+\end{center}
+\caption{Super Dandy と Task Dandy の処理}
+\label{fig:taskdandy}
+\end{figure}
+
+\newpage
+
+\subsection{Super Dandy のデータ構造}
 データ構造は Super Dandy のものを流用している。Super Dandy では主に以下の
 ようなデータが存在する。
 
@@ -52,16 +69,7 @@
 これらのデータは オブジェクトの情報として管理されるだけでなく、
 その他のオブジェクトの移動や衝突判定時にも使用される。
 
-\subsection{Task Dandy の Task}
-
-Task Dandy では オブジェクトの動きや衝突判定をそれぞれ Move Task、Collision 
-Task として並列に処理させることが出来るように分割している。それぞれの Task は
-Super Dandy の Move や Collision が実行されるタイミングで生成され、
-その後処理に必要なデータをセットして各 CPU に送られる。処理を終えた Task は 
-post\_func により、計算結果をメインメモリ内のデータ領域に反映させ、全ての 
-Task が終了した時点でゲームの 1 フレームが終了する。
-
-\subsection{Property}\label{sec:property}
+\subsection{データ転送に用いる Property}\label{sec:property}
 Task Dandy の Task は処理のために、複数のデータを set\_inData する
 必要がある。特に Collision Task に使用するデータはオブジェクト自身の情報の
 他にプレイヤーの機体、プレイヤーの出した弾など、種類が多く、全てを set\_in
@@ -87,6 +95,8 @@
 追加した。以下のようなコードで状態が遷移する条件に入ると Task ID が
 書き換えられる。
 
+\newpage
+
 \begin{verbatim}
 static int
 state6(SchedTask *smanager, void *rbuf, void *wbuf)
@@ -111,6 +121,8 @@
 }
 \end{verbatim}
 
+\newpage
+
 書き換えられた ID は次に Task を生成する際に使用され、別の種類の Task を
 生成するようになる。