changeset 2:374871d138f5

chapter1-chapter2_fixed
author Yuki HAMASE <e155718@ie.u-ryukyu.ac.jp>
date Tue, 19 Feb 2019 14:24:35 +0900
parents d7993a65995e
children baaf2d2f3f19
files final_hamase/chapter1.tex final_hamase/chapter2.tex final_hamase/chapter4.tex final_hamase/fig/castto.png final_hamase/fig/generator.png final_hamase/fig/lag.png final_hamase/fig/lag2.png final_hamase/fig/lag3.png final_hamase/fig/timeline.png final_hamase/future.tex final_hamase/main.pdf
diffstat 11 files changed, 84 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/final_hamase/chapter1.tex	Mon Feb 18 20:50:52 2019 +0900
+++ b/final_hamase/chapter1.tex	Tue Feb 19 14:24:35 2019 +0900
@@ -6,7 +6,7 @@
 %英語発表者は,最終予稿の「はじめに」の英訳などを載せてもいいかも.
 
 \section{背景と目的}
-現代の社会は娯楽に満ち溢れている。スポーツ、絵画、音楽など古来から楽しまれてきたものはもちろん、近年では電子回路やコンピュータグラフィクスを用いたコンピュータゲームが広く遊ばれるようになった。そのコンピュータゲームにも様々な形態が存在する。例えば画面上に次々に現れる敵を撃ち落しながらその撃破数や技術を競うSTG(ShootingGame)というジャンルはよく知られているが、これとは別に、音楽に合わせて楽器の演奏技術やリズム感の良さを競う音楽ゲームというジャンルがある。音楽やそのリズムは人類の歴史と切っても切れない関係にあるが、実際に楽器を自由に演奏できるようになるには短くない訓練期間を要する場合が多い。そのため、より気軽に音楽と触れ合えるような娯楽として、音楽ゲームは広く遊ばれている。
+現代の社会は娯楽に満ち溢れている。スポーツ、絵画、音楽など古来から楽しまれてきたものはもちろん、電子回路やコンピュータグラフィクスを用いたコンピュータゲームが広く遊ばれるようになった。そのコンピュータゲームにも様々な形態が存在する。例えば画面上に次々に現れる敵を撃ち落しながらその撃破数や技術を競うSTG(ShootingGame)というジャンルはよく知られているが、これとは別に、音楽に合わせて楽器の演奏技術やリズム感の良さを競う音楽ゲームというジャンルがある。音楽やそのリズムは人類の歴史と切っても切れない関係にあるが、実際に楽器を自由に演奏できるようになるには短くない訓練期間を要する場合が多い。そのため、より気軽に音楽と触れ合えるような娯楽として、音楽ゲームは広く遊ばれている。
 
 現代のゲームと切り離して考えることができない技術にVR(VertualReality:仮想現実)というものがある。VRは、HMD(HeadMountDisplay)という装置を使用し、装着者の視界を外界と遮断することによりHMD内部のディスプレイが映し出す映像があたかも現実であるかのような体験をすることができる技術である。この技術はゲームとの親和性が非常に高く、発表当初からVRに対応する様々なゲームが開発されてきた。
 
@@ -15,5 +15,7 @@
 本論文ではこの問題を解決するため、入力装置を把持する必要のない入力方法を提案し、これを使用したVR音楽ゲームを実現する。
 
 \section{論文の構成}
-ほげほげ
+本論文は全5章で構成される。2章では現在主流の音楽ゲームをカテゴリ別に紹介する。3章では\name の概要を紹介する。4章では\name の具体的な実装を紹介する。5章はまとめとなっている。
+
+また、本論文末尾には付録としてBluePrintsの簡易的な解説を掲載した。4章に入る前に読んでおくと実装の理解がしやすいだろう。
 %\section{Introduction}
--- a/final_hamase/chapter2.tex	Mon Feb 18 20:50:52 2019 +0900
+++ b/final_hamase/chapter2.tex	Tue Feb 19 14:24:35 2019 +0900
@@ -1,10 +1,13 @@
 \chapter{既存の音楽ゲーム}
 \label{chap:concept}
 
-\section{レーン固定方式}
-レーン固定方式では、ターゲットがレーン(ターゲットの移動経路を示すオブジェクト)に従って移動してくる。レーンは通常画面に対して静止している。ターゲットが判定ラインに重なったタイミング、または、その他タイミングを示すオブジェクトに従ったタイミングでプレイヤーがアクションを起こすことにより、点数を得るものである。
+音楽ゲームの視覚的分類には大きく分けて2種類がある。
+入力方法の分類には様々な種類があり、その一部を紹介する。
 
-レーンは一般に直線状であり、複数のレーンが並行に配置される。ゲーム内容が非常にシンプルでわかりやすい上、入力装置の設計にもほとんど制約がないため、様々な種類のレーン固定方式を採用した音楽ゲームが存在している(図\ref{gitadora})。
+\section{レーン方式}
+レーン方式では、ターゲットがレーン(ターゲットの移動経路を示すオブジェクト)に従って移動してくる。レーンは通常画面に対して静止している。ターゲットが判定ラインに重なったタイミング、または、その他タイミングを示すオブジェクトに従ったタイミングでプレイヤーがアクションを起こすことにより、点数を得るものである。
+
+レーンは一般に直線状であり、複数のレーンが並行に配置される。ゲーム内容が非常にシンプルでわかりやすい上、入力装置の設計にもほとんど制約がないため、様々な種類のレーン方式を採用した音楽ゲームが存在している(図\ref{gitadora})。
 \begin{figure}[htbp]
 	\begin{center}
 		\includegraphics[height=7cm]{fig/gitadora.jpg}
@@ -13,8 +16,7 @@
 \label{gitadora}
 \end{figure}
 
-\section{カメラ進行方式}
-カメラ進行方式では、ターゲットはあらかじめレーンに対して固定されている。カメラ(プレイヤー)が判定ラインと共にレーン上を進行し、ターゲットが判定ラインに重なったタイミング、または、その他タイミングを示すオブジェクトに従ったタイミングでプレイヤーがアクションを起こすことにより、点数を得るものである。プレイヤー自身がゲーム空間を進行するため、スピード感を重視したゲーム演出が可能である。
+レーン方式には、カメラ(プレイヤー)が判定ラインと共にレーン上を進行し、ターゲットが判定ラインに重なったタイミング、または、その他タイミングを示すオブジェクトに従ったタイミングでプレイヤーがアクションを起こすことにより、点数を得るものもある。プレイヤー自身がゲーム空間を進行するため、スピード感を重視したゲーム演出が可能である。
 
 この方式ではゲームの設計上でカメラの移動速度やカメラの角度が自由に調整可能となるため、あえてプレイヤーがターゲットを認識しづらくするような演出が可能となるなど、ゲームプレイ上の演出の幅をひろげることができる。
 
@@ -26,21 +28,8 @@
 \label{sv}
 \end{figure}
 
-\section{ガンシューティング方式}
-ガンシューティング方式ではレーンの概念はない。画面上の任意の点に撃ち抜くべきターゲットと撃ち抜くべきタイミングを示すオブジェクトが生成される。プレイヤーは銃型コントローラーでターゲットに狙いを定め、タイミングよくターゲットを撃ち抜くことで点数を得ることができる。
-
-この方式を採用したアーケード音楽ゲームはかつては人気を誇っていたが、現在ではそのほとんどが稼働を停止している。
-
-\begin{figure}[htbp]
-	\begin{center}
-		\includegraphics[height=7cm]{fig/mgg.jpg}
-	\end{center}
-	\caption{銃型コントローラーでリズムよくオブジェクトを撃ち抜く音楽ゲーム}
-\label{mgg}
-\end{figure}
-
 \section{タッチパネル方式}
-タッチパネル方式はガンシューティング方式同様、レーンの概念がない。画面上にターゲットとタイミングアイコンが生成されるので、プレイヤーはこの指示に従いタイミングよくターゲットをタッチすることで点数を得ることができる。
+タッチパネル方式にはレーンの概念がない。画面上にターゲットとタイミングアイコンが生成されるので、プレイヤーはこの指示に従いタイミングよくターゲットをタッチすることで点数を得ることができる。
 この方式はスマートフォンとの相性が良いため、複数のスマートフォン向け音楽ゲームがこの方式を採用している。
 この方式の派生として、タッチではなくマウスクリックでプレイすることにより、タッチパネルではなく通常のモニタでプレイ可能な音楽ゲームも存在する。
 
@@ -52,6 +41,19 @@
 \label{synchronica}
 \end{figure}
 
+\section{ガンシューティング方式}
+ガンシューティング方式では画面上の任意の点に撃ち抜くべきターゲットと撃ち抜くべきタイミングを示すオブジェクトが生成される。プレイヤーは銃型コントローラーでターゲットに狙いを定め、タイミングよくターゲットを撃ち抜くことで点数を得ることができる。
+
+この方式を採用したアーケード音楽ゲームはかつては人気を誇っていたが、現在ではそのほとんどが稼働を終了している。
+
+\begin{figure}[htbp]
+	\begin{center}
+		\includegraphics[height=7cm]{fig/mgg.jpg}
+	\end{center}
+	\caption{銃型コントローラーでリズムよくオブジェクトを撃ち抜く音楽ゲーム}
+\label{mgg}
+\end{figure}
+
 
 \section{etc.}
-ここに紹介した以外にも、多数の音楽ゲームの形態が存在する。
\ No newline at end of file
+ここに紹介した以外にも赤外線センサを用いた入力を行うものや、レーン方式を採用しているにもかかわらず入力は感圧式タッチパネルを使用するものなど、多数の音楽ゲームの形態が存在する。
\ No newline at end of file
--- a/final_hamase/chapter4.tex	Mon Feb 18 20:50:52 2019 +0900
+++ b/final_hamase/chapter4.tex	Tue Feb 19 14:24:35 2019 +0900
@@ -322,7 +322,7 @@
 \label{LT01}
 \end{figure}
 
-ここで、特に違いがあるのはSequence4が追加されたである。
+ここで、特に違いがあるのはSequence4が追加されたことである。
 
 Sequence4では、AddParticleSystemComponentによって帯状のParticleSystemを追加する。これはロングターゲットの軌跡を表示するParticleSystemである。帯状のParticleSystem自体は RibbonEmitterを使用して簡易に実装できるため、省略する。
 
@@ -332,15 +332,58 @@
 
 また、ロングターゲットに対するアクションで得られる点数はPlayerが加点していくので、ロングターゲット自身は点数加算を行わない。
 
+\section{音楽ゲームの実装}
+
 \subsection{プレイヤーの移動}
 
-\name では、プレイヤーは自動で曲ごとに固定された方向に移動し、角度を変える。
+\name では、プレイヤーは自動で曲ごとに固定された方向に移動し、角度を変える。プレイヤーの移動を管理するActorは、移動内容を定義したのちターゲット・ロングターゲットの生成を行う(図\ref{generator})。このActorをGeneratorと名付ける。
+
+\begin{figure}[htbp]
+	\begin{center}
+		\includegraphics[width=16cm]{fig/generator.png}
+	\end{center}
+	\caption{GeneratorのうちPlayer移動定義部分}
+\label{generator}
+\end{figure}
 
+GeneratorはイベントBeginPlayが呼ばれるとGameInstanceにアクセスする。その後、GameInstance内に用意したイベントResetscoreを実行し、スコアを0にする。GameInstanceの作成およびスコアのリセットは簡易に実装できるため、省略する。
 
-\section{音楽ゲームの実装}
+PlayerCharacterがLeapFloatingHandsCharacterであることを確認すると、Sequence0のタイムライン\_0で一秒間、プレイヤーの位置・角度を原点に固定し続ける。この一秒は、画面遷移の演出に用いられる。一秒経過すると、TimelinePlayerPositionによってプレイヤーは移動し、角度を変えるようになる。PlayerPositionの内容を変えることで、プレイヤーの移動内容を変更する(図\ref{timeline})。
+
+\begin{figure}[htbp]
+	\begin{center}
+		\includegraphics[width=16cm]{fig/timeline.png}
+	\end{center}
+	\caption{PlayerPositionの例}
+\label{timeline}
+\end{figure}
 
 \subsection{曲と譜面タイミングの同期}
 
+Generator内部において楽曲を再生する関数であるPlaySound2Dの直前にDelayを挟むことで、曲再生タイミングの調整を行うことができる。
+
+楽曲のBPMは\name の外部で計測し、Generatorに記述する。Generator内部でBPMを調整することで、譜面全体の進行速度を調整することができる。このようにして、譜面の進行速度と今日の進行速度が同期するまでBPMと曲再生タイミングの調整を繰り返す。
+
 \subsection{遅延の原因とその解決方法}
 
+Generator先頭部分で楽曲再生タイミングとBPMを正確に調整しても、楽曲後半になるにつれて譜面再生速度が楽曲進行速度に対して遅くなっていく問題がある。この問題は、ターゲット生成、ディレイ、ターゲット生成というイベントの流れを繰り返すことで発生する。この現象の原因はターゲット生成によるわずかな時間の蓄積であると考えられる。
 
+この時間の蓄積を回避するため、\name ではディレイとターゲット生成を直列的に接続せず、Sequenceを用いて並列的に記述することで遅延を最小限に抑える(図\ref{lag01})。ここでSequenceは並列的に記述され、並列処理であるかのような挙動をするが実際には逐次処理であることに注意する必要がある。そのため、遅延の回避のためにはディレイをSequence0に、ターゲット生成をSequence1に接続しなれば十分な遅延回避効果を得ることはできない。
+
+\begin{figure}[htbp]
+	\begin{center}
+		\includegraphics[width=16cm]{fig/lag.png}
+	\end{center}
+	\caption{ターゲット生成とSequenceノードによる並列記述}
+\label{lag01}
+\end{figure}
+
+ここで、さらに遅延回避効果を高めるため、1小節(音楽の時間的な区切り方のひとつ)ごとにさらにSequenceで並列的に記述することでSequence分岐によるごくわずかな遅延を回避する(図\ref{lag02})(図\ref{lag03})。
+
+\begin{figure}[htbp]
+	\begin{center}
+		\includegraphics[width=10cm]{fig/lag3.png}
+	\end{center}
+	\caption{Sequenceノードによる並列記述の全体像}
+\label{lag03}
+\end{figure}
Binary file final_hamase/fig/castto.png has changed
Binary file final_hamase/fig/generator.png has changed
Binary file final_hamase/fig/lag.png has changed
Binary file final_hamase/fig/lag2.png has changed
Binary file final_hamase/fig/lag3.png has changed
Binary file final_hamase/fig/timeline.png has changed
--- a/final_hamase/future.tex	Mon Feb 18 20:50:52 2019 +0900
+++ b/final_hamase/future.tex	Tue Feb 19 14:24:35 2019 +0900
@@ -1,3 +1,15 @@
 \chapter{結論}
 \section{まとめ}
+\name はフリーハンドでプレイ可能なVR音楽ゲームであり、仮想空間に対する強い没入感を得ることができる。
 \section{今後の発展の余地}
+今後\name を改良するにあたって、大きく2つの改善点が挙げられる。
+
+一つは、よりビジュアルな、視覚に訴えるような華やかな装飾やエフェクトを追加し、商用に耐えるグラフィックを挿入することである。
+
+二つめは、遅延の低減についての改善点である。現在、Sequence並列記述による遅延回避を行なっている。これは、Sequenceを使用しない直列記述と比較すると非常に強力に遅延を回避しているが、これにはまだ改善の余地があると考えられる。
+
+現在Sequenceによる遅延回避は小節毎、ターゲット毎に行なっている。例えば、小節数$N$、小節毎のターゲット数$T$の楽曲を考えた時、最悪Sequence経由数は$N+T$で与えられる(Sequence並列記述を行わない場合、ターゲット生成による遅延数は$NT$となり、膨大になる)。
+
+ここで、ターゲット生成部分のBPを木構造的に構築することで、最悪Sequence経由数は$\log_2{NT}$となり、さらに強力に遅延を回避することができることが予想できる。
+
+但し、この木構造を構築するには問題がある。なぜならばBP上に木構造を構築すると、譜面作成者がターゲット生成順序を把握し、ターゲットが何小節目の何分音符の位置に存在しているかを理解し調整することが非常に難しくなるからだ。これを実現するためには現在の譜面作成方法から大きく異なる手法を取らざるを得ないだろう。
\ No newline at end of file
Binary file final_hamase/main.pdf has changed