Mercurial > hg > Papers > 2022 > riono-master
changeset 51:9d71ffda7d97
update
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 10 Feb 2022 19:08:25 +0900 |
parents | 6f40d20e4b4c |
children | ea7e856b50e8 |
files | Paper/chapter/1-Christie.tex Paper/chapter/2-RewriteCS.tex Paper/chapter/3-WorkingInUnity.tex Paper/master_paper.pdf Paper/reference.bib |
diffstat | 5 files changed, 54 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/chapter/1-Christie.tex Thu Feb 10 15:47:50 2022 +0900 +++ b/Paper/chapter/1-Christie.tex Thu Feb 10 19:08:25 2022 +0900 @@ -1,6 +1,6 @@ \chapter{Christie} -ChristieとはJavaで記述された並列分散通信フレームワークである。Aliceという前身のプロジェクトが開発されていたが、以下のような問題があった。 +Christie\cite{christie}とはJavaで記述された並列分散通信フレームワークである。Alice\cite{alice}という前身のプロジェクトが開発されていたが、以下のような問題があった。 データを送受信するAPIはインスタンスを生成して関数を呼び出す様に設計されているが、外部Classからも関数が実行できてしまうため、 受信する際どのkeyに紐づいたデータを受け取るのか、直感的にわからない。 データを管理しているlocalDataSegmentがシングルトンで設計されており、Localで接続を行う際に複数のアプリケーションで立ち上げる必要がある。 @@ -15,7 +15,7 @@ Chrisiteはタスクとデータを細かい単位に分割してそれぞれの依存関係を記述し、 タスク実行に必要な入力が揃った順から並列実行するというプログラミング手法を用いている。 -将来的に当研究室で開発しているGearsOSのファイルシステムに組み込まれる予定があるため、GearsOSを構成する言語 Continuation based Cと +将来的に当研究室で開発しているGearsOS\cite{gears}のファイルシステムに組み込まれる予定があるため、GearsOSを構成する言語 Continuation based C\cite{cbc}と 似た概念を持っている。Christieに存在する概念として以下の様なものがある。 \begin{itemize} @@ -248,7 +248,7 @@ \section{Topology Manager} -Topology Managerとは、Christie上でのNetwork Topologyを自動的に形成する機能である。 +Topology Manager\cite{topology}とは、Christie上でのNetwork Topologyを自動的に形成する機能である。 Topologyを形成するために参加を表明したnode、TopologyNodeに名前を与え、必要があればnode同士の接続も自動で行う。 Topology ManagerのTopologyの形成方法として、静的Topologyと動的Topologyの2つがある。
--- a/Paper/chapter/2-RewriteCS.tex Thu Feb 10 15:47:50 2022 +0900 +++ b/Paper/chapter/2-RewriteCS.tex Thu Feb 10 19:08:25 2022 +0900 @@ -1,7 +1,7 @@ -\chapter{Christieの応用} +\chapter{ChristieのUnityへの適応} \section{Unity} -UnityはUnity Technologiesが開発、公開しているゲームエンジンである。 +Unity\cite{unity}はUnity Technologiesが開発、公開しているゲームエンジンである。 画像や3Dモデルの表示、物理演算、UIのイベント機能などゲーム制作に必要な機能が標準で備わっており、 個人でもゲーム開発が可能となっている。 さまざまなプラットフォームに対応可能であり、PC、iOS、Androidやその他コンシューマ機器も開発可能である。 @@ -19,7 +19,7 @@ \section{Photon Unity Networking 2} -Photon Unity Networking 2(以下PUN2)はUnityで利用可能なネットワークライブラリである。 +Photon Unity Networking 2\cite{pun2}(以下PUN2)はUnityで利用可能なネットワークライブラリである。 自動で他のClientへの接続や同期を可能とし、マッチメイキング機能なども備わっている。 \begin{figure}[htb] @@ -75,7 +75,7 @@ \section{Mirror} -MirrorはUnityで使用できるOSSのネットワークライブラリである。 +Mirror\cite{mirror}はUnityで使用できるOSSのネットワークライブラリである。 PUN2と同様にPC間の同期を自動で行い、主にMMO規模のネットワークを想定して開発が行われている。 主な機能として、ServerとClientを自動接続するScript、GameObjectの位置やアニメーションの同期を行うNetworkTransfromやNetworkAnimator、 Room機能などがある。 @@ -215,7 +215,7 @@ \section{MessagePackの変更} Christieではデータを他Nodeに送信する際に、MessagePackを使用してデータをSerializeし、送信を行っている。 -Chrisiteで使用しているMessagePackはmsgpack java 0.6.12を使用しており、現在はサポートされていない。 +Chrisiteで使用しているMessagePackはmsgpack java 0.6.12\cite{mspack}を使用しており、現在はサポートされていない。 そのためJavaでサポート対象となっているmsgpack java 0.7.x以上のMEssagePakckとは記述方法が異なっている。 ソースコード\ref{src:JavaMspackExample}はChristieで使用してるmsgpack java 0.6.12の使用例である。 @@ -228,7 +228,7 @@ Deserializeにはreadメソッドを使用し、引数としてSerializeされたbyte[]型とDeserialize対象のクラスを渡すことでデコードできる。 -C\#のMessagePackは複数存在しており、msgpack java 0.6.12とほぼ同様の記述方法を採っているMessagePack CSharp 2.3.85を選択した。 +C\#のMessagePackは複数存在しており、msgpack java 0.6.12とほぼ同様の記述方法を採っているMessagePack CSharp 2.3.85\cite{csmessage}を選択した。 \lstinputlisting[label=src:CSMspackExample, caption=C\#におけるMessagePackの使用例]{src/cs/MessagePackExample.cs} @@ -260,7 +260,7 @@ \section{Chrisite SharpのDebug} -Christie Sharpの開発にはJetBrainsが開発・提供しているC\#向けのIDE、Riderを用いている。 +Christie Sharpの開発にはJetBrainsが開発・提供しているC\#向けのIDE、Rider\cite{rider}を用いている。 Christie Sharpは並列分散プログラミングを行っているため、MultiThreadでのDebugが必須である。 RiderにはDebugerの標準的な機能が搭載されているが、Christie Shapを開発する際、MainThread以外で処理をする箇所に対して張ったBreak point でプロセスが停止しない状況に陥った。
--- a/Paper/chapter/3-WorkingInUnity.tex Thu Feb 10 15:47:50 2022 +0900 +++ b/Paper/chapter/3-WorkingInUnity.tex Thu Feb 10 19:08:25 2022 +0900 @@ -1,4 +1,4 @@ -\chapter{Christie SharpのUnity上での動作} +\chapter{Christie Sharpの実装の詳細} \section{Unity API} Unityでは、ゲーム開発を行うためのライブラリとしてUnity APIが公開されている。 @@ -73,7 +73,7 @@ このためCGに直接Transformを操作しても処理が実行されない。 -この問題を解決するために、UniRxを導入することで使用可能なMainThreadDispatcher.Postメソッドを使用した(ソースコード\ref{src:PositionAssignCodeGear} 6行目)。 +この問題を解決するために、UniRx\cite{unirx}を導入することで使用可能なMainThreadDispatcher.Postメソッドを使用した(ソースコード\ref{src:PositionAssignCodeGear} 6行目)。 UniRxとはUnity向けに作成された非同期処理の外部ライブラリである。 MainThreadDispatcher.Postを使用することで、Main ThreadでないThreadで行っている処理をMain Threadに移譲することが可能となる。 Postメソッドは第一引数にデリゲートの一種であるAction$<$T$>$を渡すため、ラムダ式での記述が可能である。
--- a/Paper/reference.bib Thu Feb 10 15:47:50 2022 +0900 +++ b/Paper/reference.bib Thu Feb 10 19:08:25 2022 +0900 @@ -6,7 +6,7 @@ year = 2018 } -@Misc{block, +@Misc{topology, author = "{赤堀 貴一,河野 真治}", title = "Christieによるブロックチェーンの実装", journal = "琉球大学工学部情報工学科卒業論文", @@ -29,18 +29,6 @@ howpublished = "\url{https://unity.com}" } -@Misc{pun2, - author = "{Photon Unity Networking 2}", - title = "", - howpublished = "\url{https://doc-api.photonengine.com}" -} - -@Misc{mlapi, - author = "{Unity Multiplayer MLAPI}", - title = "", - howpublished = "{https://github.com/Unity-Technologies/com.unity.multiplayer.mlapi}" -} - @Misc{csmessage, author = "{MessagePack-CSharp}", title = "", @@ -53,3 +41,44 @@ title = "", howpublished = "{https://github.com/msgpack/msgpack-java}" } + +@misc{pun2, + author = {{Photon Unity Networking2}}, + title = {}, + howpublished = {{https://www.photonengine.com/pun}} +} + +@misc{mirror, + author = {{Mirror}}, + title = {}, + howpublished = {{https://mirror-networking.com}} +} + +@misc{rider, + author = {{Rider}}, + title = {}, + howpublished = {{https://www.jetbrains.com/lp/dotnet-unity/}} +} + +@misc{unirx, + author = {{UniRx}}, + title = {}, + howpublished = {{https://github.com/neuecc/UniRx}} +} + + +@article{gears, + author = {河野 真治 and 伊波 立樹 and 東恩納 琢偉}, + title = {Code Gear、Data Gear に基づく OS のプロトタイプ}, + journal = {情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS)}, + month = {May}, + year = 2016 +} + +March@article{cbc, + author = {Kaito TOKKMORI and Shinji KONO}, + title = {Implementing Continuation based language in LLVM and Clang}, + journal = {LOLA 2015}, + month = {July}, + year = 2015 +}