关于Unity Mirror的一点体会

·  阅读 3319

最近一直在研究使用Mirror,因为是第一次接触所谓的Hight Level API NetCode,还挺有兴趣的。不过我研究了一段时间后,觉得这个东西恐怕不太适合大项目,或者正规的CS模式的网络游戏。

为什么这么说呢? 首先,Mirror这种HLAPI的网络库,是在一个工程中同时写服务器和客户端代码,这就造成两个问题。

  • 第一,所有的gameplay程序员都要同时写服务器和客户端代码,本来程序员的工作是按功能模块划分的,但是现在每个功能模块,特别是和gameplay相关的,都同时涉及到服务器和客户端部分。
  • 第二,脑子里面得时刻注意,这个代码是应该运行在服务器还是客户端,是应该在服务器上计算然后同步到客户端,还是两边都计算然后再校正。

第一个问题造成所有人都要掌握Mirror,且都要具有服务器开发的思维。所谓术语有专攻,如果普通的客户端gameplay程序员都去写服务器逻辑,显然是一个负担。 第二个问题造成服务器和客户端功能混杂在一个工程甚至一个类中,对于大型工程,这可不是什么好苗头。

我在中文网络上搜索了一下Mirror相关的资料,数量不多,而且大多数都是非常浅显的入门级文章。说明用的人确实不多。我半个月在实际项目中初步使用,都发现很多地方都是需要自定义的,虽然暂时还不需要修改Mirror源码,但是至少所谓的高级功能都用到了。

那么我认为,Mirror可以在单机游戏中使用,用于将单机游戏改造成联网游戏,但是并不适合通常的CS模式的网络游戏。并且Mirror适合于没有专职服务器程序员的小团队,游戏类型对于联网要求也不是很高,基本上同步个位置也就可以了。其他需要预测校正啊这种的都没有直接使用的方法,说白了除了位置同步这种有一些处理,其他的同步都只是直接发消息同步。对于大型项目,还是独立的开发服务器比较好吧,服务器和客户端通过协议切分,各干各的互不影响。Mirror这种虽然看上去是省了很多代码,但是搞大了容易出问题。

分类:
开发工具
标签:
收藏成功!
已添加到「」, 点击更改