我正在考虑在Node.js中创建一个网络多人游戏。这意味着我将在后端和前端使用相同的语言。这将是实时的,每个“房间”最多可容纳 20 人,所以我有一些想法:
如何补偿所有用户之间的延迟,以便每个人同时看到相同的东西?我正在考虑跟踪每个玩家的平均 ping 时间,找到最慢的一个,并通知其他客户端他们必须延迟每个人的时间(以毫秒为单位),以便每个人尽可能同步。
我正在考虑在后端和前端运行游戏代码(因为两端都是 JavaScript),并且只有一个纠错机制来与后端的“真实游戏”同步。这样,游戏应该在前端流畅运行,并且在同步发生时只有很少的故障。这也将最大限度地减少前端 JavaScript 黑客攻击,因为作弊者将同步到后端游戏。
我是否应该通过套接字(按键)接收玩家动作,通知所有其他客户端其他玩家的动作,同时在后端“玩”游戏,并每隔一次向整个游戏状态的每个人发送同步信息同时同步它们?
你怎么看?还有更多我应该考虑或注意的事情吗?
请发布任何想法或链接到有关多人游戏的文档或文章。
编辑:这些很有用:
- Gaffer on Games - Glenn Fiedler 关于多人游戏网络和物理的非常好的文章
- Quake3 网络模型