Mercurial > hg > Papers > 2022 > riono-master
view Poster/riono-slide.md @ 62:74fb935dc5b5 default tip
update
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 02 Mar 2022 13:15:50 +0900 |
parents | 33591d662e9f |
children |
line wrap: on
line source
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の動作 <!--デモ?--> - 水族館のデモ動画 - 2PCを使用して魚がPC間を移動 - 平均60fpsで動作を確認 ## 他の通信ライブラリと機能的な比較際のChristie Sharpの利点 - Unityの既存通信ライブラリはクライアントサーバ方式のためServerを用意する必要がある - Server抜きのオンラインゲームが開発できる - 並列処理には別途ライブラリを導入する必要がある - Christie Sharpで強力な並列処理が可能 - 通信が切断した際にゲームロジックが停止しない - 参照し続けるデータはPeekで取得を行うことで、データの更新されないがnullにはならない ## まとめ * ChristieをUnityで使用するためにC#に書き換えを行った * 書き換え方針としては、MessagePackのバージョンアップC#独自の機能に対応を行いつつ元のソースコードと同じ機能になるように実装 * Unityで動作検証を行い、正しく動作することを確認した * Christie Sharpを利用したゲームの開発が可能 * 平均60fpsで動作を確認 * Take/Peek/Putを利用したゲームと相性の良いプログラミング * Unity既存のライブラリとの比較を行った ## 今後の課題 * TopologyManagerの完成 * 2nd keyを用いたTreeMapの通信 * Christie Sharpの性能検証を行う * 他の通信ライブラリとの通信速度や耐久性の検証 * Christie Sharpを用いた100人規模のゲーム開発