标题:
现在的协议号,是按顺序生成的,添加,删除1个协议,协议号会大范围变化,导致了很多的不方便。
1.分布式游戏,GM无法做多版本的同时支持
2.服务器加个新协议,客户端必须要一起更新
可以改成,协议号用哈希生成1个int的id,好处如下
1.只要协议名字不变,协议号就不会变,这样就解耦了。
2.开发功能时,服务器可以先添加协议,写代码,对客户端无影响,开发完,想联调了,再让客户端更新一次就行了,大大减少了客户端同步协议的次数
3.gm也可以方便的做多版本支持,因为协议号不变
新版本加个新文件就行了,自动用一段新的协议号。hash因为opcode只有ushort长度,容易冲突,int长度又过于浪费
egametang 那我在同一个文件中间加、减,还不是一样导致这个文件内的协议号范围变化吗?
只能在文件最后加吗?而且也不能删除?
ET里是用协议名绑定协议号的,本来协议号就是动态的,协议号变化并不会产生影响吧?
服务端加个协议,客户端不更新能用到这个协议吗?如果客户端不更新用不到这个功能,你新增的协议说明是个新功能,建个新文件有啥问题。不能删除就不删除,等客户端都强制更新到大版本,再重新整理一下协议就行了。这都是习惯问题,并不是完全不能解决的问题,没必要纠结
最简单的方式就是单独一个协议文件,规定这个协议只能在最后新增,不能修改、插入。这样就固定了,任何版本都没问题