flutter 2d游戏多人rpg与golang和扑火焰

wwtsj6pe  于 2023-06-07  发布在  Flutter
关注(0)|答案(1)|浏览(357)

我正在创建一个多人支持的2D扑火焰游戏。我有一个角色用操纵杆在Map上移动。当移动操纵杆时,它会生成newPosition(Vector2)和newAngle(double)。
为了使它成为多人游戏,我创建了一个WebSocket,使用golang并将newPosition和newAngle发送到套接字通道。通道读取消息并将其广播给所有玩家。我正在发送这个数据

{
  'event': SocketControl.updateMyLocationEvent,
  'data': {
    'userId': me.id,
    'x': newPosition.x,
    'y': newPosition.y,
    'angle': newAngle,
  },
},

当玩家收到上面的数据时,它只是根据userId移动精灵。
将我的应用程序连接到插座后,播放器移动一点也不流畅,非常滞后。
我已经找到最近的服务器了。我还可以进行哪些其他优化?有多人游戏的样本吗?什么是正确的执行?

gjmwrych

gjmwrych1#

在进行多人游戏时,您必须进行一些优化以获得流畅的体验。你可以做的一件事是线性插值到正确的位置/Angular (如果你有一个权威的服务器,这是最常见的,服务器应该知道),而不仅仅是直接设置它。
线性插值或LERP内置于Flame的Vector2扩展中,可以像这样使用:

yourComponent.position.lerp(theCorrectPosition, t);

其中t是它应该向theCorrectPosition移动的距离,在0.0到1.0之间。
您还可以使用MoveEffect s,以便在短时间内移动组件。
我正在做一个简短的高层次的谈话,多人游戏与火焰here,这可能是帮助你。

相关问题