还有一个,多world3d线程隔离化运行(设置里支持的物理线程没有意义)
现有godot的做法,应该是物理帧到了以后,每个world3d开启线程执行一次完成。下一帧又是这样
我举得合理的做法是,每个world3d分组,以组为单位不同时间点去开启线程,线程循环做物理帧
好处是不同world3d线程的执行时间点不同,也就是并发优化里常说的错峰
这样其他world3d在休息等下一帧的时候,剩下的部分world3d可以利用这个间隔去做物理帧
这部分想法主要是针对于网络游戏的, 网络游戏服务器端需要同时跑多个房间,多进程也是一个办法,但是那样内存占用比较大。像一些场景或者导入的glb,数据都是死的,一个进程下的好处就是godot这部分内存会共享,减少了内存占用
还有就是我预测godot源码肯定有一些对于场景树的处理,是直接针对全部节点,而没有根据world3d不同分开运行(比如对应world3d的物理帧到了才执行他下面全部节点逻辑)
因为目前多进程跑多个world3d房间的效率明细比单进程跑多world3d模式效率高
这个就不知道你们能不能做到了,和godot的作者提过,不肯做
现有godot的做法,应该是物理帧到了以后,每个world3d开启线程执行一次完成。下一帧又是这样
我举得合理的做法是,每个world3d分组,以组为单位不同时间点去开启线程,线程循环做物理帧
好处是不同world3d线程的执行时间点不同,也就是并发优化里常说的错峰
这样其他world3d在休息等下一帧的时候,剩下的部分world3d可以利用这个间隔去做物理帧
这部分想法主要是针对于网络游戏的, 网络游戏服务器端需要同时跑多个房间,多进程也是一个办法,但是那样内存占用比较大。像一些场景或者导入的glb,数据都是死的,一个进程下的好处就是godot这部分内存会共享,减少了内存占用
还有就是我预测godot源码肯定有一些对于场景树的处理,是直接针对全部节点,而没有根据world3d不同分开运行(比如对应world3d的物理帧到了才执行他下面全部节点逻辑)
因为目前多进程跑多个world3d房间的效率明细比单进程跑多world3d模式效率高
这个就不知道你们能不能做到了,和godot的作者提过,不肯做