# HG changeset patch # User riono <e165729@ie.u-ryukyu.ac.jp> # Date 1643436667 -32400 # Node ID 54229d70b7b37a884ab2974c48814f8faa328384 # Parent 13de88bd23abb27c0ac1f7588ea00c8133f75f14 updatae diff -r 13de88bd23ab -r 54229d70b7b3 Paper/chapter/1-Christie.tex --- a/Paper/chapter/1-Christie.tex Thu Jan 27 19:35:57 2022 +0900 +++ b/Paper/chapter/1-Christie.tex Sat Jan 29 15:11:07 2022 +0900 @@ -87,7 +87,7 @@ DGの宣言には型と変数を直接宣言し、変数名としてkeyを記述する。 そして、その宣言の上にannotationでTakeまたはPeekを指定する(ソースコード\ref{src:TakeExample})。 -\lstinputlisting[label=src:TakeExample, caption=Takeの例]{src/Take.java} +\lstinputlisting[label=src:TakeExample, caption=Takeの例]{src/TakeExample.java} annotationで指定したDGはCGを生成した際にCodeGear.class内で待ち合わせの処理が行われる。 これにはJavaのreflectionAPIを利用しており、annotationと同時に変数名も取得できるため、面数名によるkeyの指定が可能になっている。 @@ -98,7 +98,7 @@ リモートノードに対してTake/Peekをする際には、TakeFrom/PeekFrom annotationを用いる(ソースコード\ref{src:TakeFromExample})。 -\lstinputlisting[label=src:TakeFromExample, caption=TakeFromの例]{src/TakeFrom.java} +\lstinputlisting[label=src:TakeFromExample, caption=TakeFromの例]{src/TakeFromExample.java} \section{データの型整合性} diff -r 13de88bd23ab -r 54229d70b7b3 Paper/chapter/2-Unity.tex --- a/Paper/chapter/2-Unity.tex Thu Jan 27 19:35:57 2022 +0900 +++ b/Paper/chapter/2-Unity.tex Sat Jan 29 15:11:07 2022 +0900 @@ -0,0 +1,62 @@ +\chapter{ChristieのUnityへの対応} + +\section{Unity} +UnityはUnity Technologiesが開発、公開しているゲームエンジンである。 +画像や3Dモデルの表示、物理演算、UIのイベント機能などゲーム制作に必要な機能が標準で備わっており、 +個人でもゲーム開発が可能となっている。 +さまざまなプラットフォームに対応可能であり、PC、iOS、Androidやその他コンシューマ機器も開発可能である。 +また、非常に動作が軽いことも特徴であり、スペックが低いノートPCでも十分ゲーム開発が可能である。 + +プログラミング言語としてはC\#がサポートされている。 +最新バージョンである2021.2.8ではC\# 9がサポートされており、 +.NET Frameworkはバージョン4.6に対応している。 +C\#向けの既存のAPIや外部ライブラリ、Unity用に開発されたAPIなども使用可能である。 +拡張性が高く、開発に必要な機能を作成しUnityのメニューから実行することも可能である。 + + +本研究では、開発環境を整えるためのハードルの低さ、公開されている通信ライブラリの豊富さなどを考慮しUnityを採用した。 + + +\section{Christie Sharpの書き換えの基本方針} +Javaで記述されたChristieと区別するため、C\#で記述するChristieをChrisite Sharpとする。 +Chrisite Sharpではコードの保守性や、Christie設計時の意図などを守るため、Chrisiteと同じ挙動、同じ動作をする必要がある。 +初めにC\#単体で動作するように、Christieの核となる部分の書き換えを行った。 + + +ChristieはJava 9から開発されていたため、現在では非推奨なコードやバージョンアップが必要な箇所が存在する。 +そこで書き換えを行う際に、C\#に対応しつつ処理動作の向上や最適化を行うために以下の改良を行った。 + +\begin{itemize} + \item MessagePackの変更及びバージョンアップ + \item ThreadPoolからTaskへの変更 +\end{itemize} + + +\section{attributeの実装} +ChristieではDGを取得する際に、annotationを用いてTakeやPeekなどのコマンドを処理していた。 +Christie Sharpはannotationではなく、代わりにattributeを利用してコマンドの処理を行っている。 + +\lstinputlisting[label=src:JavaTakeImple, caption=JavaにおけるTake annotationの実装]{src/Take.java} +\lstinputlisting[label=src:CSTakeImple, caption=C\#におけるTake attributeの実装]{src/Take.cs} + +ソースコード\ref{src:JavaTakeImple}はJavaにおけるTake annotationの実装である。 +Javaでannotationを自作する際には、\@interfaceで宣言を行う。 +1行目ではannotationの適用可能箇所を指定しておりフィールド変数に対して付与可能としている。 +また、2行目はannotationの情報をどの段階まで保持するかを指定しており、Takeの場合JVMによって保存され、ランタイム環境で使用可能となっている。 + +ソースコード\ref{src:CSTakeImple}はC\#におけるTake attributeの実装である。 +C\#でattributeを自作する際には、System.Attributeを継承する必要がある。 +attributeの適用可能箇所については、1行目にてフィールド変数を指定している。 + +%attributeの使用方法について + + +\section{TaskによるCGの処理} + + + +\section{MessagePackの変更} + + +\section{送信データの修正} + diff -r 13de88bd23ab -r 54229d70b7b3 Paper/master_paper.pdf Binary file Paper/master_paper.pdf has changed diff -r 13de88bd23ab -r 54229d70b7b3 Paper/master_paper.tex --- a/Paper/master_paper.tex Thu Jan 27 19:35:57 2022 +0900 +++ b/Paper/master_paper.tex Sat Jan 29 15:11:07 2022 +0900 @@ -100,6 +100,7 @@ %chapters \input{chapter/0-introduction.tex} \input{chapter/1-Christie.tex} +\input{chapter/2-Unity.tex} \input{chapter/conclusion.tex} diff -r 13de88bd23ab -r 54229d70b7b3 Paper/src/TakeFrom.java --- a/Paper/src/TakeFrom.java Thu Jan 27 19:35:57 2022 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -@TakeFrom("remote_name") -public String data; \ No newline at end of file