2012-10-05 5 views
0

메신저 배우기 쉬운 html5 게임 만들기. 가능한 한 전선을 통해 최소한의 데이터로 전송하여 동기화 상태를 유지하려고합니다. 클라이언트와 서버 사이에 게임 상태를 전송할 때 마지막 업데이트 이후 게임 상태에서 변경된 내용 만 대역폭/대기 시간을 절약하기 위해 보냅니다.클라이언트/서버 간 데이터 동기화

내가 할 수있는 유일한 방법은 원격 소스에서받은 각 업데이트에 "스냅 샷"또는 게임 상태 개체 사본을 작성한 다음 게임 상태를 로컬에서 조작하고 전송해야하는 것입니다 각 값을 템 피리 게임 상태와 비교하는 게임 상태 개체를 통해 원격 소스 루프에 출력하고 차이 만 보내십시오.

이 작업을 수행하는 가장 효율적인 방법은 무엇입니까?

/****************************/ 
/**** Current game state ****/ 
gameState = { 

    playerOneID: 'XXX-XXX-XXX-XXX', 
    playerTwoID: 'YYY-YYY-YYY-YYY', 
    elapsedTime: 00007, 
    myVariable: 'abcd1234'  
}  

/*******************************************/ 
/**** saves game state from last update recieved ****/ 
tmpGameState = { 

    playerOneID: 'XXX-XXX-XXX-XXX', 
    playerTwoID: 'YYY-YYY-YYY-YYY', 
    elapsedTime: 00003, 
    myVariable: 'abc123'  
}  

답변

0

대부분의 네트워크는 최소한 1024 바이트 패킷에 데이터를 보내고 최소한 스케쥴을 떠날 때입니다.

+0

그래서 가장 작은 패킷이 1024 바이트 (1 킬로바이트)라고 말하는 것입니까? – AndrewMcLagan

+0

연결이 websocket 인 경우에도? 당신은 맞을지도 모르나 나는 데이터가 "재발행되는 순간에"보내지기 때문에 믿기가 어렵다는 것을 안다. 데이터가 1KB 미만이면 나머지는 프로토콜 채우기로 구성됩니까? – AndrewMcLagan