我正在考虑制作一款网络游戏。我对此有点陌生,并且已经遇到了很多问题,试图为航位推算和网络延迟制定一个好的计划,所以我很想看到一些关于这个主题的优秀文献。我将描述我考虑过的方法。
最初,我只是将玩家的输入发送到服务器,在那里进行模拟,然后将游戏状态的变化广播给所有玩家。这使得作弊变得困难,但在高延迟情况下,事情有点难以控制,因为你不会立即看到自己行为的结果。
这篇 GamaSutra 文章有一个解决方案,可以通过在客户端上进行模拟来节省带宽并使本地输入看起来很流畅,但它似乎将防作弊功能扔到了窗外。此外,当玩家开始操纵环境、推动岩石等时,我不确定该怎么做。这些以前中立的对象将暂时成为客户端需要发送 PDU 的对象,或者可能是多个玩家同时发送的对象。谁的 PDU 会赢?每个玩家何时会停止对对象进行双重跟踪(与航位推算的版本进行比较)?天堂禁止两个玩家进行相扑比赛(例如开始互相推搡)。
这个 gamedev.net 位显示 gamasutra 解决方案不足,但描述了一种不同的方法,它并不能真正解决我的协作巨石推动示例。我发现的大多数其他东西都是针对射手的。我很想看到一些更适合像 SNES Zelda 这样玩的游戏,但涉及更多的物理/动力。
- 注意:我不是在这里询问物理模拟——其他库已经涵盖了。尽管网络延迟,但只是使游戏流畅和反应灵敏的策略。