annotate Paper/chapter/2-Unity.tex @ 18:54229d70b7b3

updatae
author riono <e165729@ie.u-ryukyu.ac.jp>
date Sat, 29 Jan 2022 15:11:07 +0900
parents 13de88bd23ab
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
1 \chapter{ChristieのUnityへの対応}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
2
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
3 \section{Unity}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
4 UnityはUnity Technologiesが開発、公開しているゲームエンジンである。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
5 画像や3Dモデルの表示、物理演算、UIのイベント機能などゲーム制作に必要な機能が標準で備わっており、
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
6 個人でもゲーム開発が可能となっている。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
7 さまざまなプラットフォームに対応可能であり、PC、iOS、Androidやその他コンシューマ機器も開発可能である。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
8 また、非常に動作が軽いことも特徴であり、スペックが低いノートPCでも十分ゲーム開発が可能である。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
9
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
10 プログラミング言語としてはC\#がサポートされている。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
11 最新バージョンである2021.2.8ではC\# 9がサポートされており、
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
12 .NET Frameworkはバージョン4.6に対応している。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
13 C\#向けの既存のAPIや外部ライブラリ、Unity用に開発されたAPIなども使用可能である。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
14 拡張性が高く、開発に必要な機能を作成しUnityのメニューから実行することも可能である。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
15
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
16
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
17 本研究では、開発環境を整えるためのハードルの低さ、公開されている通信ライブラリの豊富さなどを考慮しUnityを採用した。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
18
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
19
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
20 \section{Christie Sharpの書き換えの基本方針}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
21 Javaで記述されたChristieと区別するため、C\#で記述するChristieをChrisite Sharpとする。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
22 Chrisite Sharpではコードの保守性や、Christie設計時の意図などを守るため、Chrisiteと同じ挙動、同じ動作をする必要がある。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
23 初めにC\#単体で動作するように、Christieの核となる部分の書き換えを行った。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
24
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
25
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
26 ChristieはJava 9から開発されていたため、現在では非推奨なコードやバージョンアップが必要な箇所が存在する。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
27 そこで書き換えを行う際に、C\#に対応しつつ処理動作の向上や最適化を行うために以下の改良を行った。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
28
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
29 \begin{itemize}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
30 \item MessagePackの変更及びバージョンアップ
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
31 \item ThreadPoolからTaskへの変更
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
32 \end{itemize}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
33
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
34
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
35 \section{attributeの実装}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
36 ChristieではDGを取得する際に、annotationを用いてTakeやPeekなどのコマンドを処理していた。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
37 Christie Sharpはannotationではなく、代わりにattributeを利用してコマンドの処理を行っている。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
38
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
39 \lstinputlisting[label=src:JavaTakeImple, caption=JavaにおけるTake annotationの実装]{src/Take.java}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
40 \lstinputlisting[label=src:CSTakeImple, caption=C\#におけるTake attributeの実装]{src/Take.cs}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
41
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
42 ソースコード\ref{src:JavaTakeImple}はJavaにおけるTake annotationの実装である。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
43 Javaでannotationを自作する際には、\@interfaceで宣言を行う。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
44 1行目ではannotationの適用可能箇所を指定しておりフィールド変数に対して付与可能としている。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
45 また、2行目はannotationの情報をどの段階まで保持するかを指定しており、Takeの場合JVMによって保存され、ランタイム環境で使用可能となっている。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
46
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
47 ソースコード\ref{src:CSTakeImple}はC\#におけるTake attributeの実装である。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
48 C\#でattributeを自作する際には、System.Attributeを継承する必要がある。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
49 attributeの適用可能箇所については、1行目にてフィールド変数を指定している。
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
50
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
51 %attributeの使用方法について
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
52
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
53
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
54 \section{TaskによるCGの処理}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
55
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
56
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
57
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
58 \section{MessagePackの変更}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
59
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
60
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
61 \section{送信データの修正}
54229d70b7b3 updatae
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
62