我刚开始学习 HTML5 canvas 和 Google App Engine 的 Channel API。
我基于等轴测图构建了一个简单的游戏演示。现在我想实现角色移动,但我想知道我应该如何实现它。
当前演示:http ://cheukalex.appspot.com
这就是我认为的实现方式:
客户将处理移动。按下箭头键后,客户端将进行移动,然后将新坐标发送到服务器,然后将其广播给服务器上的其他用户以更新角色的位置。
我想到的问题:
如果我想实现“移动速度”怎么办,例如用户走五个方格的速度有多快。每次移动之间的延迟将在客户端完成。但这会安全吗?因为javascript很容易编辑。
我该如何处理延迟?如果我构建了一个简单的追逐标签游戏,我将如何同步用户这样的情况,一个人看起来他们“标记”另一个用户,但另一个用户看到他落后 1-2 个方格,不会发生?
编辑: @nycynik,你是对的,延迟大约是 200 毫秒。我在这里测试过。
延迟测试:http ://cheukalex.appspot.com/latency
那是它将获得的最小延迟。200ms 相当快。那么可能是我的代码很慢?
我是如何实现整个游戏的。
- 客户进入网站
- 服务器创建令牌,打开通道,在数据库中存储客户端数据(通道 id)
- ....一些逻辑
- 当客户端按下箭头键时,它会通知服务器客户端移动了哪个方向以及方向
- 服务器接收移动,执行逻辑,循环通过数据库(仅当前在线客户端),向所有客户端广播消息,以 json 格式向所有客户端发送地图上每个客户端的位置。然后客户“移动”。
这有什么问题吗?