# HG changeset patch # User riono # Date 1645122985 -32400 # Node ID ac5582e1aa2d82153553544e1ca25fa37aa9513d # Parent c269b11bb810217a61b981c555d1c5ee7e716656 add poster slide diff -r c269b11bb810 -r ac5582e1aa2d Poster/riono-slide.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Poster/riono-slide.html Fri Feb 18 03:36:25 2022 +0900 @@ -0,0 +1,224 @@ + + + + + + + + + + 継続を使用する並列分散フレームワークのUnity実装 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ + + + + + + +
+
+

継続を使用する並列分散フレームワークのUnity実装

+
+
+
+ Ryo Yasuda, Shinji Kono + 並列信頼研 +
+
+
+
+ + + +
+ + +

オンラインゲームにおけるデータ通信

+
    +
  • ゲームの通信方式にはクライアントサーバ方式とp2p方式がある
  • +
  • データの安全性や通信環境などでクライアントサーバ方式が主流
  • +
  • サーバに接続して複数ユーザのデータ同期を実現させているため、低速
  • +
  • 高速に通信を行たい +
      +
    • 並列分散フレームワークChristieがある
    • +
    • ChristieはLAN上で高速に通信可能
    • +
    • TopologyManagerを使用することでLAN/WAN上で動的構築される
    • +
    +
  • +
  • ゲーム開発で主に使用されているUnityに対応するためにChristieをC#へ書き換えを行う
  • +
+ + + +
+ +
+ +

Christie

+
    +
  • Christieは当研究室で開発している並列分散ライブラリ
  • +
  • Gearという概念を持っており、DataGearによるTake/Putを使用
  • +
  • クラスに相当するCodeGearとフィールド変数に相当するDataGearがある
  • +
  • CodeGearに記述されたDataGearが全て揃う(代入される)とCodeGearの処理が実行される
  • +
+ + + +
+ +
+ +

Unityにおけるネットワーク通信

+
    +
  • Unityは世界中で使用されているゲームエンジン
  • +
  • 言語としてC#がサポートされている
  • +
  • フレーム単位の処理が行われ、シングルスレッドで動作しているため並列処理が苦手
  • +
  • Send/Recieveなどでは通信を記述しづらい
  • +
  • Christieにより画面書き換えと非同期な並列処理や通信が可能
  • +
+ + + +
+ +
+ +

C#への書き換える利点

+
    +
  • ChristieはJavaで実装されている +
      +
    • C#に書き換えを行うべきか
    • +
    +
  • +
  • JavaをC#上で呼び出す方式 +
      +
    • annotationが使用できない
    • +
    +
  • +
  • Unityはandroidの開発向けにjarファイルからJavaのメソッドをC#上で呼び出せる機能がある +
      +
    • stringを使用してリソースディレクトリから検索し、使用
    • +
    • 高速化が求められる並列分散プログラミングには不適
    • +
    +
  • +
  • 記述方法が似ているため移植が行いやすい
  • +
  • ThreadPoolをC#で統一できる
  • +
+ + + +
+ +
+ +

C#へ書き換えの方針

+
    +
  • C#で記述するChristieをChristie Sharpとする
  • +
  • Christie設計時の意図や、互換性を保つためChristieと同じ動作をさせる
  • +
  • ChristieはJava9から開発されており、非推奨なコードやが含まれている
  • +
  • C#に対応しつつ、処理動作の向上や最適化を行うために以下の変更を行った +
      +
    • MessagePackのバージョンアップ
    • +
    • ThreadPoolからTaskへ変更
    • +
    +
  • +
+ + + +
+ +
+ +

Unityの動作

+ + + + +
+ +
+ +

他の通信ライブラリと比較

+ + + +
+ +
+ +

まとめ

+ + + +
+ +
+ +

今後の課題

+ + +
+ + +
+ + diff -r c269b11bb810 -r ac5582e1aa2d Poster/riono-slide.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Poster/riono-slide.md Fri Feb 18 03:36:25 2022 +0900 @@ -0,0 +1,67 @@ +title: 継続を使用する並列分散フレームワークのUnity実装 +author: Ryo Yasuda, Shinji Kono +profile: 並列信頼研 +lang: Japanese +code-engine: coderay + +## オンラインゲームにおけるデータ通信 +* ゲームの通信方式にはクライアントサーバ方式とp2p方式がある +* データの安全性や通信環境などでクライアントサーバ方式が主流 +* サーバに接続して複数ユーザのデータ同期を実現させているため、低速 +* 高速に通信を行たい + * 並列分散フレームワークChristieがある + * ChristieはLAN上で高速に通信可能 + * TopologyManagerを使用することでLAN/WAN上で動的構築される +* ゲーム開発で主に使用されているUnityに対応するためにChristieをC#へ書き換えを行う + +## Christie +- Christieは当研究室で開発している並列分散ライブラリ +- Gearという概念を持っており、DataGearによるTake/Putを使用 +- クラスに相当するCodeGearとフィールド変数に相当するDataGearがある +- CodeGearに記述されたDataGearが全て揃う(代入される)とCodeGearの処理が実行される + +## Unityにおけるネットワーク通信 +- Unityは世界中で使用されているゲームエンジン +- 言語としてC#がサポートされている +- フレーム単位の処理が行われ、シングルスレッドで動作しているため並列処理が苦手 +- Send/Recieveなどでは通信を記述しづらい +- Christieにより画面書き換えと非同期な並列処理や通信が可能 + +## C\#への書き換える利点 +- ChristieはJavaで実装されている + - C\#に書き換えを行うべきか +- JavaをC\#上で呼び出す方式 + - annotationが使用できない +- Unityはandroidの開発向けにjarファイルからJavaのメソッドをC\#上で呼び出せる機能がある + - stringを使用してリソースディレクトリから検索し、使用 + - 高速化が求められる並列分散プログラミングには不適 +- 記述方法が似ているため移植が行いやすい +- ThreadPoolをC\#で統一できる + +## C#へ書き換えの方針 +* C\#で記述するChristieをChristie Sharpとする +* Christie設計時の意図や、互換性を保つためChristieと同じ動作をさせる +* ChristieはJava9から開発されており、非推奨なコードやが含まれている +* C\#に対応しつつ、処理動作の向上や最適化を行うために以下の変更を行った + * MessagePackのバージョンアップ + * ThreadPoolからTaskへ変更 + +## Unityの動作 + + +## 他の通信ライブラリと比較 + +## まとめ + +## 今後の課題 + + + + + + + + + + +