我正在制作一个简单的 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'
}