2016年4月更新:UNet适合搞demo,但目前不建议使用UNet作为正式关键游戏服务器。原罪并不归于UNet,而是归于Unity Engine/Unity Headless Mode,有比较大的不可控消耗,并不能做到足够的Modulation。
和Unity Engine的人面对面就UNet询问过,其原话回答包括:
- “modulation is way too difficult”(就是说,server版本的Unity,目前肯定消耗很大)
- “Should not run unity on the server”。
另,就Unity的Roadmap看来,UNet的更新变得相对变少,个人有种“项目瓶颈”甚至是“项目停更”的感觉。最关键规避Unity在服务器消耗问题的UNet更新“Networking: Server Library”,其本该随Unity5.4发布的,但现在被严重delay到Roadmap中的Alpha Version中。
Networking是一种软件研发在跨平台路上更近一步的体现,真正做到了:anytime,anywhere,one code for all platform!Networking出现之前,Unity仍然是一个客户端游戏开发引擎。Networking出现之后,Unity甚至成为了跨客户端服务端的游戏开发引擎。同样的组件在Unreal中早有产生,但追溯到最早的话,那可能就是国外各大游戏公司的私有引擎了。但Unity的威力在于其广泛的普及程度,所以它是首次将该组件推广至光罗大众的商业引擎。Networking本质上是对传统C-S架构软件下的网络层的高度抽象。服务器逻辑和客户端逻辑在一个类里面编写(这里会带来一些代码整洁度上的麻烦~~)服务器和客户端要做数据同步,不用发包了,在属性前面加上[SyncVar]标签就自动同步了。客户端调用服务器,不用发包了,函数调用即可。服务器调用客户端,不用发包了,函数调用即可。带来的好处太多都不用说了。带来的坏处,安全性上堪忧,设想一下,如果客户端和服务器逻辑都在一起,一旦客户端被反编译了,那么是不是服务器逻辑都泄漏了。带来的坏处2,服务器程序员可能不需要写游戏逻辑了。。