Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML5游戏,用户移动概念_Html_Google App Engine_Canvas_Channel Api - Fatal编程技术网

HTML5游戏,用户移动概念

HTML5游戏,用户移动概念,html,google-app-engine,canvas,channel-api,Html,Google App Engine,Canvas,Channel Api,我刚开始学习HTML5Canvas和谷歌应用引擎的Channel API 我构建了一个基于等距图的简单游戏演示。现在我想实现角色移动,但我想知道我应该如何实现它 当前演示: 我认为这是如何实施的: 客户端将处理移动。一旦按下箭头键,客户端将进行移动,然后将新的协调发送到服务器,然后将该协调广播给服务器上的其他用户,以更新角色的位置 我想到的问题: 如果我想实现“移动速度”,比如在多快的速度下 例如,用户行走五个正方形。每次移动之间的延迟 将在客户端完成。但这样安全吗?自从 Java脚本很容易编辑

我刚开始学习HTML5Canvas和谷歌应用引擎的Channel API

我构建了一个基于等距图的简单游戏演示。现在我想实现角色移动,但我想知道我应该如何实现它

当前演示:

我认为这是如何实施的:

客户端将处理移动。一旦按下箭头键,客户端将进行移动,然后将新的协调发送到服务器,然后将该协调广播给服务器上的其他用户,以更新角色的位置

我想到的问题:

  • 如果我想实现“移动速度”,比如在多快的速度下 例如,用户行走五个正方形。每次移动之间的延迟 将在客户端完成。但这样安全吗?自从 Java脚本很容易编辑

  • 我如何处理延迟?如果我建立了一个简单的追逐标签游戏,我将如何同步用户,使一个人看起来像是在“标记”另一个用户,但另一个用户看到他在后面1-2格的情况不会发生


  • 编辑:@nycynik,你说得对,延迟约为200毫秒。我已经在这里测试过了

    延迟测试:

    这是它将获得的最小延迟。200米相当快。那么可能是我的代码太慢了

    我是如何实现整个游戏的

  • 客户进入网站
  • 服务器创建令牌,打开通道,在数据库中存储客户端数据(通道id)
  • 。。。。一些逻辑
  • 当客户端按箭头键时,它会通知服务器哪个客户端移动了以及移动的方向
  • 服务器接收移动,执行逻辑,循环数据库(仅当前在线客户端),以json格式向所有客户端广播每个客户端在地图上的位置。客户然后“移动”
  • 这有什么问题吗

    如果我想实现“移动速度”怎么办

    我建议将您的移动发送到服务器,并让服务器刷新电路板。这将使每个玩家保持同步

    我如何处理延迟

    如果您愿意,您可以要求所有客户端在服务器发送位置刷新之前报告,这将加强一致性,但这是一种LCD方法。我认为对于这种类型的游戏,应该很好

    编辑: 起初我以为它会像网络插座一样工作,但看起来你的结果要慢得多。它可能是代码中的某些东西,也可能是技术本身,但它似乎不够快,无法满足您的需要。如果这是一盘棋,你就没事了。但是对于这种类型的游戏,你需要更快的往返工作

    这篇文章指的是时间期望

    通道API传输速度约为100-200ms


    这应该比你得到的更快。

    这应该是对第一个答案的评论,但它不适合

    对于响应时间,您可能无能为力,因为目前网络延迟确实是一个问题。也许你可以在用户体验方面工作。为了让用户“接受”延迟,为什么不添加动画

    例如,当用户点击一个箭头键时,马看起来像是在慢慢后退,准备跳跃(在幕后,您通过通道API发送请求)。当你从服务器得到响应时,马就可以完成跳跃并降落到另一个位置


    虽然仍然存在延迟问题,但如果延迟不是那么明显,您的用户可能会觉得“可以接受”。

    至于攻击移动速度,服务器可以保留其最后位置,并根据maxspeed delta变量进行检查-如果在给定时间差内太高,HAXX。您可以分享更多您的操作方法吗?该频道的工作原理应该非常类似于一个套接字,而且速度应该足够快。有了这个模型,我只是想知道移动不是瞬间的会不会被关闭。我只是在我的演示中添加了移动,而且服务器处理移动时会有明显的延迟。也许谷歌的频道API很慢?是的,在尝试之后,这是一个很慢的方法。这是一个有效的解决方案。谢谢