Express/Socket.io 部署在 Heroku 上的浏览器游戏无法按预期运行
Express/Socket.io browser game deployed on Heroku doesn't work as expected
我一直在从事一个业余爱好浏览器游戏项目。我使用 Express 和 Socket.io 为游戏添加实时功能。我的游戏目前以 60FPS 运行,它每 16.67 毫秒更新玩家的浏览器 window。每一帧,客户端的当前位置和它的按键数据通过 socket.io 发送到服务器,每一帧客户端接收其他用户的位置和按键等。我认为这是 Heroku 上免费服务的大部分工作。
您可以使用此 link 检查我的项目和问题:https://test-game9.herokuapp.com/
问题: 目前客户端可以使用 W、A、S、D 键四处移动。他们可以看到其他用户的动作。没有其他的。但出于某种原因,我在 Heroku 上部署的游戏会闪烁。此闪烁问题不会发生在本地主机上。我想知道有什么问题。我是否错过了某种 socket.io 选项?
提前致谢。
如果不查看代码,很难说这个游戏有什么问题。但是我的猜测是您没有考虑网络延迟,这就是为什么您的游戏在本地主机上运行但在部署时却不能运行的原因。
当我使用 WASD 移动时,我的对象会立即移动。这表明您正在直接使玩家的动作生效并更新对象的位置然后将位置发送给其他人。然而,首选的替代方案是,当玩家按下任何移动键时,有关移动的信息必须首先发送到服务器,然后将其广播给所有人,包括移动的玩家本身。即使它是玩家的对象,玩家也必须监听网络以改变位置,而不是像单人游戏那样在本地即时进行。
另一个可能的问题是您可能正在使用一个间隔来每 N 毫秒发送一次玩家的对象位置,无论是否有人移动,这可能是闪烁的另一个原因。相反,您只能在有人移动时才发送位置。
我一直在从事一个业余爱好浏览器游戏项目。我使用 Express 和 Socket.io 为游戏添加实时功能。我的游戏目前以 60FPS 运行,它每 16.67 毫秒更新玩家的浏览器 window。每一帧,客户端的当前位置和它的按键数据通过 socket.io 发送到服务器,每一帧客户端接收其他用户的位置和按键等。我认为这是 Heroku 上免费服务的大部分工作。
您可以使用此 link 检查我的项目和问题:https://test-game9.herokuapp.com/
问题: 目前客户端可以使用 W、A、S、D 键四处移动。他们可以看到其他用户的动作。没有其他的。但出于某种原因,我在 Heroku 上部署的游戏会闪烁。此闪烁问题不会发生在本地主机上。我想知道有什么问题。我是否错过了某种 socket.io 选项?
提前致谢。
如果不查看代码,很难说这个游戏有什么问题。但是我的猜测是您没有考虑网络延迟,这就是为什么您的游戏在本地主机上运行但在部署时却不能运行的原因。
当我使用 WASD 移动时,我的对象会立即移动。这表明您正在直接使玩家的动作生效并更新对象的位置然后将位置发送给其他人。然而,首选的替代方案是,当玩家按下任何移动键时,有关移动的信息必须首先发送到服务器,然后将其广播给所有人,包括移动的玩家本身。即使它是玩家的对象,玩家也必须监听网络以改变位置,而不是像单人游戏那样在本地即时进行。
另一个可能的问题是您可能正在使用一个间隔来每 N 毫秒发送一次玩家的对象位置,无论是否有人移动,这可能是闪烁的另一个原因。相反,您只能在有人移动时才发送位置。