客户端没有fixedupdate,是使用计时器来实现逻辑帧的吗?
服务器的帧率是不是也是在计时器里面设置,有个每帧100ms,就是10帧的逻辑帧。会不会太低了呀,听说瓦洛兰特128tick,是不是服务器就是128帧的逻辑帧呀。帧率有没有个const变量来设置的呀。
karl Legends-Of-Heroes/Unity/Assets/Scripts/Core/FixedUpdateModule/FixedUpdate.cs at 96f5802f2685be2847f9597926335b57b9cb1175 · FlameskyDexive/Legends-Of-Heroes (github.com) 参考这个项目的实现
自己写一个呗
Flamesky
update在服务器是代表逻辑帧,在客户端是代表渲染帧。如果要编写一个双端共享的entity,这时写的update是逻辑帧还是渲染帧就有些迷糊了。
我感觉客户端和服务器端都使用FixedUpdate作为逻辑帧,客户端的Update作为渲染帧,服务端没有Update。这样会更清晰。
我只了解了一点点ET框架,不知道是不是哪里理解错了。
karl
刚刚看了一篇文章FixedUpdate真的是固定的时间间隔执行吗?聊聊游戏定时器 - 知乎 (zhihu.com)
解答了部分疑惑:
client的fixedUpdate最好只写和物理有关的部分。
要写关于物理的fixedUpdate就和其他生命周期函数一样使用委托传到gameobject中执行。
client的逻辑帧不使用unity的fixedUpdate,自己使用定时器来写。
ET的Update理解为依据游戏数据刷新游戏内容,帧率不同就无所谓了。
karl 纯状态同步,服务端逻辑帧计算就行,如果有单人pve逻辑,客户端想固定帧,弄个fixupdate的逻辑帧也是可以的。又或者状态同步,但是想要客户端预测,也需要逻辑帧驱动。