1. 前言
最近在和几个小伙伴共同开发/设计一款线上RTS游戏。众所周知,Unity所开发的网络游戏大多都是基于Photon(光子引擎)或直接使用Socket从底层开始搭框架,而早期也有部分开发者基于Unet(现已基本弃用)进行服务端/客户端框架的搭建。但我们意外地在外网发现了Mirror这款由UNet志愿者开发的开源服务器/客户端联网插件出奇地好用,且其无论是从代码的复杂度、还是服务/客户端的数据同步和传递,都比Socket与Photon引擎便捷了不少。如传统多人游戏中同步玩家位置的解决方案通常会十分复杂,但用Mirror做位置同步只需要给物体绑定NetworkTransform组件即可。
实际上Mirror早在几年前就被国外的游戏开发者广泛使用,在YouTube中也有大量的相关教程,且官方的Discord群也达到了数千人的规模,但鉴于国内使用该插件的开发者比较少,且没有太多的相关教程,所以想在这个专栏分享一些我们在自学Mirror过程中的一些经验与笔记。由于我们团队在学习这些插件的阶段时基本上都是在没有系统学习的情况下各种试错靠文档一步步摸着过来的,所以如果其中有错误或不足也欢迎dalao们指正!
^同步位置?绑个组件即可搞定
2. 搭建联网框架中使用到的插件/工具
这些笔记主要会集中在使用Mirror构建联网框架的部分,但是我们也使用到了一些其它的小众但强大的联网游戏工具(同样在国内的使用人数较少),如PlayFab与NHibernate等,也会一并在笔记中提到。下面是会使用到的所有插件及SDK下载链接。
2.1. Mirror
核心工具(见上文)。服务端/客户端数据传递与交互的核心插件,快速构建服务器框架。
-
Github源码与下载:github.com/vis2k/Mirro…
-
Unity Asset Store下载:assetstore.unity.com/packages/to…
-
官网与官方Discord群,同时也包含了一些基于Mirror的:mirror-networking.com/ (discord群链接在官网中)
2.2. PlayFab
一款由微软Azure团队开发的完整的游戏后端平台。能实现多人游戏的身份验证、账号管理、房间匹配、云端代码运行、热更新(不过我还是建议用Asset Bundle hhh)、排行榜、数据分析、多平台登录(steam账号、谷歌账号登录等)、充值服务等等各种强大的功能,可大幅简化网络游戏开发的难度。
- 官方文档:docs.microsoft.com/en-us/gamin…
- Unity SDK下载:docs.microsoft.com/en-us/gamin…
2.3. NHibernate
准确来说不是一个插件= =。NHibernate应该熟悉的人有不少,但网上并没有太多将NHibernate与Unity结合起来的教程。NHibernate是一个将MySQL数据库映射成便于C#面向对象思想的工具。简单来说,MySQL中的数据在数据库中的体现是某个表中的简单的一行,而NHibernate可以把每一行”映射“成C#中的一个类。这使得我们能用更熟悉的面向对象的思想从c#这边去管理我们的MySQL数据库。
-
官网与下载:nhibernate.info/
-
还需要在本地/服务端处建立一个MySQL数据库,需要用到MySQL server/MySQL connector等工具。可以到www.mysql.com/downloads/下载需要的内容。后面的笔记也会稍微提到MySQL数据库的建立。
2.4. Polyglot Localization
一个特别强大的本地化插件。它nb就nb在能够使我们使用google sheet(谷歌表格)来为unity游戏添加多语言支持... 甚至能通过其实现联网实时更新本地化内容。
-
Github下载与文档:github.com/agens-no/Po…
3. 结语
这一章节的笔记仅仅是对后面所使用到的一些主要插件的介绍与整理,后面的章节会逐步分享我在学习它们(特别是Mirror)时的一些笔记。这一系列的笔记也会在我的b站账号同步更新(space.bilibili.com/18189750)。尽情期待!