我正在创建一个多人支持的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移动精灵。
将我的应用程序连接到插座后,播放器移动一点也不流畅,非常滞后。
我已经找到最近的服务器了。我还可以进行哪些其他优化?有多人游戏的样本吗?什么是正确的执行?
1条答案
按热度按时间gjmwrych1#
在进行多人游戏时,您必须进行一些优化以获得流畅的体验。你可以做的一件事是线性插值到正确的位置/Angular (如果你有一个权威的服务器,这是最常见的,服务器应该知道),而不仅仅是直接设置它。
线性插值或LERP内置于Flame的
Vector2
扩展中,可以像这样使用:其中
t
是它应该向theCorrectPosition
移动的距离,在0.0到1.0之间。您还可以使用
MoveEffect
s,以便在短时间内移动组件。我正在做一个简短的高层次的谈话,多人游戏与火焰here,这可能是帮助你。