view user/riono210/seminar/202109/0928.md @ 92:31a558f00ba6

backup 2021-09-29
author autobackup
date Wed, 29 Sep 2021 00:10:03 +0900
parents
children
line wrap: on
line source

## 0928

## 研究目的
* ゲームの通信方式にはクライアントサーバ方式とp2p方式がある
* データの安全性やチート対策などでクライアントサーバ方式が主流
* サーバに接続してマルチプレイなどのデータ同期を実現させているため、低速
* 高速かつ安全に通信を行たい
    * 並列分散フレームワークChristieがある
    * Christieを利用してp2pで通信を行う
* ゲーム開発で主に使用されているUnityに対応するためにChristieをC#へ書き換えを行う

### 今週の進捗
* RemoteTakeを動かすサンプルが動きました!
    * MessagePackDataGearに変換コードを仕込むことで修正
    * 原因はデシリアライズする時にobjectでデシリアライズしていたため



dictionaryで受け取ったフィールド変数のデータを基に、インスタンス生成する

```cs
public T MessagePackDataFormed(dynamic deserializedData) {
    Dictionary<dynamic,dynamic> dataDictionary = (Dictionary<dynamic, dynamic>) deserializedData;
    List<object> valueArray = new List<object>();
    foreach (var VARIABLE in dataDictionary) {
        valueArray.Add(VARIABLE.Value);
    }
    object[] convertArray = valueArray.ToArray();

    T instance = (T) Activator.CreateInstance(clazz, convertArray);
    return instance;
}
```


### 今後の問題点
* FizzBuzzの例題を動かした所、ソケット通信がうまくいかなくて失敗