[Unity] 关于Unity Mirror的一点体会

本文探讨了Mirror网络库在游戏开发中的适用性,指出其在小规模项目或对网络要求不高的游戏中的优势,并分析了其可能存在的问题,尤其是在大型项目中的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

n5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值