複数人での通信でちらついてしまいます
Posted: 2014年3月05日(水) 23:43
DXライブラリーを使い複数人で遊べるゲームを作ろうと思い自分なりに試行錯誤しながらプログラムを組んだのですが、
データの受信が正しく行われていないのかキャラクターがちらついてしまいます。
全体のコードを載せてしまうととかなりの量(スパゲッティーな事になっています)になってしまうので原因と思われるコードだけです。
原因と思われるコードは相手の最新のデータで取得できるように次のように書きました。
ループし過ぎなのが原因だと思うのですが、これ以外に最新のデータを取得する方法が思いつきません。
リアルタイムさを重視しているので最新のデータを取得できるようにしたいです。
キーの情報を取得する方法も考えましたがパケットをロスト、順序が入れ替わる事や、UDPをTCPにして安定させたとして送受信に時間をかけてしまうのは大丈夫なのかという不安もあり試していません。
拙い文ですが方法等を分かりやすく教えて頂けると幸いです。
データの受信が正しく行われていないのかキャラクターがちらついてしまいます。
全体のコードを載せてしまうととかなりの量(スパゲッティーな事になっています)になってしまうので原因と思われるコードだけです。
原因と思われるコードは相手の最新のデータで取得できるように次のように書きました。
//Receiveでプレイヤー全員のデータを取得し、Dataに内容をコピー(Recieve、Dataには座標やモーション等の情報が入っている)
while(CheckNetWorkRecvUDP(UDPHandle)){ //受信できるデータが無くなるまでループ①
if(NetWorkRecvUDP(UDPHandle,&IP,NULL,&Receive,sizeof(Data),FALSE)<0)break;//何らかのエラーもしくはデータが無くなったらループを抜ける。②
CopyMemory(&Data,&Receive,sizeof(Data));//最新のデータを代入する③
}
リアルタイムさを重視しているので最新のデータを取得できるようにしたいです。
キーの情報を取得する方法も考えましたがパケットをロスト、順序が入れ替わる事や、UDPをTCPにして安定させたとして送受信に時間をかけてしまうのは大丈夫なのかという不安もあり試していません。
拙い文ですが方法等を分かりやすく教えて頂けると幸いです。