928

928

# 研究目的

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

# 今週の進捗

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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の例題を動かした所、ソケット通信がうまくいかなくて失敗
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy