##如何にして90fpsを達成するか
VRMMOにおいてはリアルタイム性が重視されます。
ボイスチャット然り、動作反映然り。
その指標となる、90fpsの達成方法について考察します。
90回通信/秒より、一回の所要時間は10^-2程度、同時接続1000人とすると、負荷を考慮して1000で割って、10^-5の通信速度が求められます。
jsonデータ
ゲームオブジェクトは、何らかの値を常時持っており、更新されます。これを、クライアント間で共有せねばなりません。
その為には、ゲームオブジェクトを識別可能として、値を文字列に変換する事が要と思われます。
構造化データ形式は限られており、unityの基本はゲームオブジェクト。そこで、ゲームオブジェクトの json化をします。 json utilityを用います。(他の方法が思いつきませんでした)
また、mysqlが jsonをサポートしている事もあります。
##通信
同期というのは恐らく手間がかかります。通信速度に影響します。
そこで、同期をやめます。
何かというと、ソケット通信時、c++ 変数に 文字列jsonを指定し、都度新しい jsonを丸ごと代入してあげます。これで、予想が正しければ、解析の時間が無くなります。その後、新しい jsonを、自分以外のポートに伝送します。(やり方はまだ分かりません)
プロトコルは、正確さが求められる場合はTCP、速さが求められる場合はUDPを用います。独自プロトコルについては、検討します。
##大事なこと
全体としての手続きを簡略化する事が重要です。速さと正確さの担保となります。
クライアント、サーバ双方で、常に何らかの処理をさせる、遊ばせない、これを重視したく思います。
##最後に
当方、超がつくほどの初心者です。
結局、根本にあるのは、unityはc++ で出来ているし、c++ はcの発展系だから、何とかなるだろうという考えです。ビジョンが先にあって、エンジンやプログラミング言語を用いて調節、最適化しながら、目標を目指します。
当方、unity、c、c++ 、c#について全くの初心者です。これから勉強してゆきます。
##追記
magic onionも検討中です。オープンソースライブラリということで、後でgithubにて確認します。