MMORPG网络游戏开发之网络通信

MMO游戏又称大型多人在线角色扮演类游戏,在所有的角色扮演的游戏当中,玩家都要扮演一个虚拟角色,并控制角色活动
MMO可以分为客户端和服务器两部分,玩家通过客户端连接到互联网登录服务器才能进行游戏,游戏玩家的数据资料保存在服务器上,游戏的开发商和运营商提供游戏的服务器以及管理虚拟世界,对游戏不断的做出更新以便留住老玩家以及吸引新玩家

我们的MMO训练营中会为大家介绍使用Unity3D引擎制作一款MMORPG游戏需要掌握的核心技术:网络通信技术
本篇文章涉及到的源码及素材资源,还有更多游戏开发资源,可以在我们的《从零开发MMO 3天训练营【第一期】 》视频末尾扫描二维码获取
建立解决方案(目录规划)
首先我们在VisualStudio里点击新建项目,虽然都是新建项目,但这里需要特别注意一下,因为服务器一般不会带有用户界面,所以我们建立的项目应该是一个控制台项目
VisualStudio有很多种控制台,比如基于.NET Framework或.NET Code的,本文使用的控制台为下图中被标记的控制台

为什么选择这个控制台呢?
因为上图中的第二个控制台只能运行在Windows平台上,而第一个基于.NET Code的控制台可以跨平台运行,开发的游戏服务器有很大的概率是运行在Linux服务器上面的,虽然我们开发会用Windows,但部署的时候一般都是部署在Linux服务器上
选好控制台后点击下一步,然后为项目配置项目名和储存位置,因为我们的项目是由很多个小项目构成的,所以我会把这些小项目都放在同一个文件夹下面(也就是下图位置选项中的study文件夹)

因为我们先建立的是服务器项目,所以项目名叫做MmoServer,配置完成后点击下一步,其他信息中的目标框架选择默认就好,然后点击创建

创建好服务器项目后,我们还需要再创建一个项目,因为网络游戏除了有客户端和服务器代码外,还会存在一些客户端跟服务器共通的项目代码,所以我们一般会建立一个通用文件夹,用来存放一些既要在服务器上使用的代码,又需要在客户端上使用的代码
因为这个通用文件夹是被客户端和服务器所调用的,所以它的的项目类型就不能再是控制台项目了,而是必须要把它建立成类库,类库可以被客户端和服务器所引用

配置储存位置与名称

下面再用与建立服务器项目一样的方法建立客户端项目,只是将项目名称改为ConClient

创建完客户端项目后,第一步的目录规划就完成了,接下来我们就来实现网络通信
实现网络通信
网络游戏想要实现网络通信都是需要使用一种网络协议的,目前主流的互联网网络协议是TCP/IP协议,但本文不会直接使用TCP/IP通信,因为它涉及的内容较多,难度也较高,我们会使用WS协议
WS是什么呢?
WS是一个应用层协议,这个协议比HTTP、FTTP这些协议的适用性都要广泛,因为它实际上就相当于是一个已经帮你实现好的高层网络协议,而且效率很高,它的全称叫做WebSocket
WebSocket协议跟HTTP这样的传统的协议有什么不一样呢?
HTTP主要服务于网页的传输,而WS的应用范围比较广,除了能用在Web上面,也非常适用于一般的网络游戏开发
接下来我们需要为项目引入WebSocket库,刚才创建的三个项目里都要引入,这里我用为Common引入WebSocket库为例子,来为大家演示引入过程:在Common项目的依赖项上右键,点击管理NuGet程序包

在弹出界面中搜索WebSocketSharp,然后选择搜索结果中的第一个进行安装,这样就成功引入WebSocket通信库了

为三个项目引入WebSocket库后就可以开始撸代码了,下面是服务器项目的代码
服务器代码已经写好了,接下来我们就把客户端连接到服务器上去,下面是客户端代码
写完这些代码后再运行服务器就能实现网络通信了,运行效果如下

网络通信的实现到这里就结束了,感谢各位读者能够看到这里,如果想要学习更多MMORPG网络游戏知识可以参加我们的从零开发MMORPG 3天训练营,原价298,现在限时免费领取
从零开发MMORPG 3天训练营可以在我们的《从零开发MMO 3天训练营【第一期】 》视频末尾扫描二维码免费获取
课程大纲如下




学完你能够收获

连续3天,360+分钟
不仅仅能让你从零开发MMORPG,更能让你了解游戏行业求职所面临最重要的问题!
让你在入行前避过这些坑
本篇文章涉及到的源码及素材资源,还有更多游戏开发资源,可以在我们的《从零开发MMO 3天训练营【第一期】 》视频末尾扫描二维码获取