作为原型,我使用javascript和websockets在画布上制作多人彩绘游戏。条件是服务器无法以任何方式生成画布。所有模型逻辑都发生在客户端。
现在我有以下设置:
1)当客户端输入发生时,它将被传输到服务器并保存。服务器进行非常简单的验证检查。
2)每15毫秒(在服务器上)所有输入都被发送到客户端并被清除。客户端在本地呈现输入。
3)每个客户端每200毫秒将其画布版本发送到保存它的服务器
4)服务器每200毫秒投票选择"右键#34;版本并将其发送回客户端,他们更新了画布。正确的版本存储在服务器上,带有时间戳。
5)当新客户端连接时,他们从服务器获取最新版本的画布。
虽然这种方法提供了具有持久状态的多人游戏绘画,但它也存在一些问题。什么是正确的版本,他们如何投票?当客户遇到10秒的滞后然后发送他们的版本时会发生什么?此外,如果每个客户端进行持续的本地更改,每个客户端的画布将永远不会完全相同,这使得它不可能?找到正确版本的画布,因为它们在发送到服务器时都有所不同。
问题可归结为:有可能建立一个依赖的客户端 - 服务器架构,客户端执行所有逻辑,服务器只检查输入是否有效?即使它需要更多的网络流量。如果是这样,什么会是一个好的approch?
答案 0 :(得分:0)
经过进一步调查,我发现了一些关于上述问题的优秀文件。
拥有仅客户端的网络模型可以被描述为对等交换模型,实际上是在帝国时代1 + 2中使用的模型。但是,由于微软面临着使客户端同步运行的几个问题(并且小的变化打破了游戏),我已经决定使用服务器模型而不是一些快捷方式来实际启用服务器来合并模型。