« DC版トリガーハートエグゼリカが届いた! | メイン | ネットワークプログラミング(2) »

ネットワークプログラミング

とりあえずUDPで通信が可能になりました。
が、無茶苦茶重い・・・。TCP版より重い気が・・・。

で、ちょっと考えました。

キーデータを送信した直後に、相手からのキーデータの受信待ちをしているのが間違いの元ですね。
1フレーム内における処理の順序が

1.Sleep()
2.キーデータ送信
3.キーデータ受信
4.キャラを動かす
5.画面描画

ってなっているんですけど、これだと2と3の間の時間はゼロに等しいので、いかにUDPといえども間に合いっこありません。

1.キーデータ送信
2.Sleep()
3.キーデータ受信
4.キャラを動かす
5.画面描画

こうすれば、データの受信自体はスレッドでやっているので、Sleepしている間にデータが届いている可能性が高くなり、受信待ちで処理落ちする可能性も低くなります。

この考えに到達してからth075casterのソースを見ると、受信と送信でロジックが分かれているのも理解できます。目からウロコですね。