Mercurial > hg > Papers > 2022 > riono-master
view Poster/riono-slide.html @ 62:74fb935dc5b5 default tip
update
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 02 Mar 2022 13:15:50 +0900 |
parents | 5ce28c1f79ca |
children |
line wrap: on
line source
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>継続を使用する並列分散フレームワークのUnity実装</title> <meta name="generator" content="Slide Show (S9) v4.1.0 on Ruby 2.6.3 (2019-04-16) [universal.x86_64-darwin19]"> <meta name="author" content="Ryo Yasuda, Shinji Kono" > <!-- style sheet links --> <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> <link rel="stylesheet" href="s6/themes/screen.css" media="screen"> <link rel="stylesheet" href="s6/themes/print.css" media="print"> <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection"> <!-- JS --> <script src="s6/js/jquery-1.11.3.min.js"></script> <script src="s6/js/jquery.slideshow.js"></script> <script src="s6/js/jquery.slideshow.counter.js"></script> <script src="s6/js/jquery.slideshow.controls.js"></script> <script src="s6/js/jquery.slideshow.footer.js"></script> <script src="s6/js/jquery.slideshow.autoplay.js"></script> <!-- prettify --> <link rel="stylesheet" href="scripts/prettify.css"> <script src="scripts/prettify.js"></script> <script> $(document).ready( function() { Slideshow.init(); $('code').each(function(_, el) { if (!el.classList.contains('noprettyprint')) { el.classList.add('prettyprint'); } }); prettyPrint(); } ); </script> <!-- Better Browser Banner for Microsoft Internet Explorer (IE) --> <!--[if IE]> <script src="s6/js/jquery.microsoft.js"></script> <![endif]--> </head> <body> <div class="layout"> <div id="header"></div> <div id="footer"> <div align="right"> <img src="s6/images/logo.svg" width="200px"> </div> </div> </div> <div class="presentation"> <div class='slide cover'> <table width="90%" height="90%" border="0" align="center"> <tr> <td> <div align="center"> <h1><font color="#808db5">継続を使用する並列分散フレームワークのUnity実装</font></h1> </div> </td> </tr> <tr> <td> <div align="left"> Ryo Yasuda, Shinji Kono 並列信頼研 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> </div> </td> </tr> </table> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="オンラインゲームにおけるデータ通信">オンラインゲームにおけるデータ通信</h2> <ul> <li>ゲームの通信方式にはクライアントサーバ方式とp2p方式がある</li> <li>データの安全性や通信環境などでクライアントサーバ方式が主流</li> <li>サーバに接続して複数ユーザのデータ同期を実現させているため、低速</li> <li>高速に通信を行たい <ul> <li>並列分散フレームワークChristieがある</li> <li>ChristieはLAN上で高速に通信可能</li> <li>TopologyManagerを使用することでLAN/WAN上で動的構築される</li> </ul> </li> <li>ゲーム開発で主に使用されているUnityに対応するためにChristieをC#へ書き換えを行う</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="christie">Christie</h2> <ul> <li>Christieは当研究室で開発している並列分散ライブラリ</li> <li>Gearという概念を持っており、DataGearによるTake/Putを使用</li> <li>クラスに相当するCodeGearとフィールド変数に相当するDataGearがある</li> <li>CodeGearに記述されたDataGearが全て揃う(代入される)とCodeGearの処理が実行される</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="unityにおけるネットワーク通信">Unityにおけるネットワーク通信</h2> <ul> <li>Unityは世界中で使用されているゲームエンジン</li> <li>言語としてC#がサポートされている</li> <li>フレーム単位の処理が行われ、シングルスレッドで動作しているため並列処理が苦手</li> <li>Send/Recieveなどでは通信を記述しづらい</li> <li>Christieにより画面書き換えと非同期な並列処理や通信が可能</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="cへ書き換える利点">C#へ書き換える利点</h2> <ul> <li>ChristieはJavaで実装されている <ul> <li>C#に書き換えを行うべきか</li> </ul> </li> <li>JavaをC#上で呼び出す方式 <ul> <li>annotationが使用できない</li> </ul> </li> <li>Unityはandroidの開発向けにjarファイルからJavaのメソッドをC#上で呼び出せる機能がある <ul> <li>stringを使用してリソースディレクトリから検索し、使用</li> <li>高速化が求められる並列分散プログラミングには不適</li> </ul> </li> <li>記述方法が似ているため移植が行いやすい</li> <li>ThreadPoolをC#で統一できる</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="cへ書き換えの方針">C#へ書き換えの方針</h2> <ul> <li>C#で記述するChristieをChristie Sharpとする</li> <li>Christie設計時の意図や、互換性を保つためChristieと同じ動作をさせる</li> <li>ChristieはJava9から開発されており、非推奨なコードやが含まれている</li> <li>C#に対応しつつ、処理動作の向上や最適化を行うために以下の変更を行った <ul> <li>MessagePackのバージョンアップ</li> <li>ThreadPoolからTaskへ変更</li> </ul> </li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="unityの動作">Unityの動作</h2> <!--デモ?--> <ul> <li>水族館のデモ動画</li> <li>2PCを使用して魚がPC間を移動</li> <li>平均60fpsで動作を確認</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="他の通信ライブラリと機能的な比較際のchristie-sharpの利点">他の通信ライブラリと機能的な比較際のChristie Sharpの利点</h2> <ul> <li>Unityの既存通信ライブラリはクライアントサーバ方式のためServerを用意する必要がある <ul> <li>Server抜きのオンラインゲームが開発できる</li> </ul> </li> <li>並列処理には別途ライブラリを導入する必要がある <ul> <li>Christie Sharpで強力な並列処理が可能</li> </ul> </li> <li>通信が切断した際にゲームロジックが停止しない <ul> <li>参照し続けるデータはPeekで取得を行うことで、データの更新されないがnullにはならない</li> </ul> </li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="まとめ">まとめ</h2> <ul> <li>ChristieをUnityで使用するためにC#に書き換えを行った</li> <li>書き換え方針としては、MessagePackのバージョンアップC#独自の機能に対応を行いつつ元のソースコードと同じ機能になるように実装</li> <li>Unityで動作検証を行い、正しく動作することを確認した <ul> <li>Christie Sharpを利用したゲームの開発が可能</li> <li>平均60fpsで動作を確認</li> </ul> </li> <li>Take/Peek/Putを利用したゲームと相性の良いプログラミング</li> <li>Unity既存のライブラリとの比較を行った</li> </ul> </div> <div class='slide'> <!-- _S9SLIDE_ --> <h2 id="今後の課題">今後の課題</h2> <ul> <li>TopologyManagerの完成 <ul> <li>2nd keyを用いたTreeMapの通信</li> </ul> </li> <li>Christie Sharpの性能検証を行う <ul> <li>他の通信ライブラリとの通信速度や耐久性の検証</li> <li>Christie Sharpを用いた100人規模のゲーム開発</li> </ul> </li> </ul> </div> </div><!-- presentation --> </body> </html>