iphone/ipad에서 실행되는 말렛이있는 하키 게임이 있습니다. 서버는 모든 물리학을 제어하고 다른 장치에 서버 말렛 위치를 보내고 클라이언트는 말렛 위치를 서버에 보냅니다.Box2D 및 GameCenter 멀티 플레이어
이 부분은 제대로 작동하지만 문제는 퍽에 대한 것입니다. Becaase는 너무 빠르며 서버는 메시지를 보내는 onde입니다. 문제는 퍽이 b2_dynamic 몸체이고 서버가 퍽이있는 클라이언트에 서버가 보내는 것입니다. gameLoop의 모든 프레임마다 위치를 클라이언트에 보내도록 업데이트했지만 문제는 올바르게 흐르지 않습니다. 망치의 움직임은 괜찮 으면 좋겠지 만, 그 퍽이 조금은 이상한데, 나는 그것이 퍽의 선형 속도 때문이라고 생각합니다.
이 무엇 메신저 행함 :
[gamedelegate movePuckToX:messageData->x andY:messageData->y andAngle:0.0];
- (void) sendMovePuck {
MessageMovePuckTo message;
message.message.messageType = kMessageTypeMovePuck;
float_t pX = puck->GetPosition().x;
float_t pY = puck->GetPosition().y;
message.x = pX;
message.y = pY;
NSData *data = [NSData dataWithBytes:&message length:sizeof(MessageMovePuckTo)];
[self sendData:data];
}
-(void)movePuckToX:(float_t)x andY:(float_t)y andAngle:(float_t)ang
{
lastPuckReceivedPosition = b2Vec2(x, [self getScreenSize].height/32 - y);
puck->SetAwake(false);
puck->SetTransform(b2Vec2(x, [self getScreenSize].height/32 - y), 0);
puck->SetLinearVelocity(b2Vec2(0,0));
}
뭐죠 클라이언트에 퍽의 위치를 전송하는 가장 좋은? 어떤 아이디어 나 통찰력? 나는 이것이 :(해결하기 위해 관리 캔트
간단히 생각해 봅시다. 대신 클라이언트에서 물리학을 계산하면 안됩니까? 그리고 서버가 퍽에 설정된 힘을 보냅니다. – Mikael
위의 의견에 동의합니다. 서버 클라이언트에 관해서는 가능한 한 적은 데이터 만 클라이언트에 보내야한다는 것입니다. 계산은 클라이언트 측에서 수행되어야합니다. – xuanweng