自己用工具查嘛 dotnet trace
egametang 看了下消耗,主要是kcp和序列化,反序列化消耗比较大, 但是map和gate应该是都会有这几个操作, 按理两者消耗是一样才对吧,为啥gate大那么多?
evalli 新人求问一下这个是VisualStudio吗,这个界面是怎么看的?
map广播消息,做了优化,广播的消息网络层只需要序列化一次,gate要把收到的map消息发给各个客户端,发给几个客户端就要序列化几次
egametang 这块有优化方法么,gate接收到map的消息,按理gate是不需要反序列话(因为没啥逻辑处理),可以直接把接收到的二进制流,直接转发给客户端就行了,现在中间过了一层反序列化,再序列化,再下发给客户端。
evalli 这要自己修改了,gate反正是可以搞多个的,这点消耗无所谓啦
egametang 消耗好像有点大,广播给100人, map只需序列化1次,gate需要反序列化100次,加上序列化100次,比map大了200倍消耗。
其实我觉得可以很简单的解决这个问题, 只需要仿照IActorLocationMessage 自定义一个广播消息类型,把Map服要广播的actorid list 和 message 发给gate服, gate服转发消息时再将meessage 分别发给每个actorid对应的session, 这样理论上不是要更优一些?