我刚开始学习HTML5画布和Google App Engine的Channel API。
我基于等距地图构建了一个简单的游戏演示。现在我想实现角色移动,但我想知道我应该如何实现它。
当前演示:http://cheukalex.appspot.com
我认为这是如何实施的:
客户将处理此动作。按下箭头键后,客户端将执行移动,然后将新协调发送到服务器,然后服务器将广播给服务器上的其他用户以更新角色的位置。
我想到的问题:
如果我想实现“移动速度”怎么办? 用户走五个方块。每次运动之间的延迟 将在客户端完成。但那会安全吗?以来 javascripts很容易编辑。
如何处理延迟?如果我构建了一个简单的追逐标记游戏,我将如何同步用户,以便一个人看起来像“标记”另一个用户,但另一个用户看到他后面1-2个方格,不会发生?
编辑: @nycynik,你是对的,延迟大约是200毫秒。我在这里测试了它。
延迟测试:http://cheukalex.appspot.com/latency
这是它将获得的最小延迟。 200ms非常快。那么可能是我的代码很慢?
我是如何实施整个游戏的。
这有什么不对吗?
答案 0 :(得分:2)
这应该是对第一个答案的评论,但它不合适。
响应时间可能没什么用,因为网络延迟现在确实是一个问题。也许你可以在用户体验方面工作。要使延迟“对用户”可接受,为什么不添加动画?
例如,当用户点击箭头键时,马看起来像是慢慢拉回来并准备跳跃(在幕后你通过Channel API发送请求)。当你从服务器得到响应时,马可以完成跳跃并降落在另一个位置。
虽然仍会存在延迟问题,但如果延迟不那么明显,您的用户可能会觉得“可接受”。
答案 1 :(得分:1)
如果我想实现“移动速度”
,该怎么办?
我建议将您的移动发送到服务器,并让服务器刷新电路板。这将使每个玩家保持同步。
如何处理延迟?
如果您愿意,您可以要求所有客户端报告,在服务器发出刷新位置之前,这将强制执行一致性,但这将是一种LCD方法。我认为对于这种类型的游戏,应该可以正常工作。
编辑: 最初我认为它会像网络套接字一样工作,但看起来你的结果要慢得多。它可能是代码中的某些东西,或者它可能是技术本身,但它似乎并不足以满足您的要求。如果这是一盘棋,你会没事的。但是对于这种类型的游戏,你需要更快的往返工作。
这篇文章指的是时间期望
渠道API提供速度大约为100-200ms;
working with new channel creation limits
这应该比你得到的更快。