哪些数据结构/算法将使我能够使用最少的位发送键/值词典的列表



我的服务器对象具有相应的客户端对象。要保持同步的数据在服务器对象的键/值字典内部。为了使客户端对象与sever对象同步,我希望服务器为每个对象发送键/值字典的每个帧。

哪些数据结构/算法将允许我使用最少量的键?

发送键/值字典的列表?

奖励约束1:对于每种对象,某些键的值比其他钥匙变化的频率更大。奖励约束2:服务器端的内存使用率相对昂贵。

您不需要发送整个字典。而不是发送更改的内容。

您不需要将其发送每个帧。,以与帧速率无关的定期间隔发送。

在第二点牢记的一个重要想法是,客户可以在游戏状态中进行预测的变化 - 游戏可以继续在从服务器接收信息之间进行模拟,然后才能进行模拟必须正确地从服务器收到权威信息后,必须正确

没有特殊的数据结构或算法。传输划界数据就足够了。

示例数据(作为C字符串,请注意" \",实际上是" "): key1;value1;key2;value2;key3\;with delimiter inside it;value3;

您可以选择发送的键,它易于阅读*和写**,几乎没有记忆,甚至可以压缩(因为它只是一个字节)。

* - 阅读:

while( peekbyte() != 0 )
{
    key = readuntil( ';' ); // checks if previous byte isn't "" while looking for char.
    value = readuntil( ';' );
    add( key, value );
}

** - 写入:

foreach( key in keylist )
{
    write( replace( ';', '\;', key ) );
    write( replace( ';', '\;', dict[ key ] ) );
}
write( '' );

最新更新