MMORPG網(wǎng)絡(luò)游戲開發(fā)之網(wǎng)絡(luò)通信

MMO游戲又稱大型多人在線角色扮演類游戲,在所有的角色扮演的游戲當中,玩家都要扮演一個虛擬角色,并控制角色活動
MMO可以分為客戶端和服務(wù)器兩部分,玩家通過客戶端連接到互聯(lián)網(wǎng)登錄服務(wù)器才能進行游戲,游戲玩家的數(shù)據(jù)資料保存在服務(wù)器上,游戲的開發(fā)商和運營商提供游戲的服務(wù)器以及管理虛擬世界,對游戲不斷的做出更新以便留住老玩家以及吸引新玩家

我們的MMO訓練營中會為大家介紹使用Unity3D引擎制作一款MMORPG游戲需要掌握的核心技術(shù):網(wǎng)絡(luò)通信技術(shù)
本篇文章涉及到的源碼及素材資源,還有更多游戲開發(fā)資源,可以在我們的《從零開發(fā)MMO 3天訓練營【第一期】 》視頻末尾掃描二維碼獲取
建立解決方案(目錄規(guī)劃)
首先我們在VisualStudio里點擊新建項目,雖然都是新建項目,但這里需要特別注意一下,因為服務(wù)器一般不會帶有用戶界面,所以我們建立的項目應(yīng)該是一個控制臺項目
VisualStudio有很多種控制臺,比如基于.NET Framework或.NET Code的,本文使用的控制臺為下圖中被標記的控制臺

為什么選擇這個控制臺呢?
因為上圖中的第二個控制臺只能運行在Windows平臺上,而第一個基于.NET Code的控制臺可以跨平臺運行,開發(fā)的游戲服務(wù)器有很大的概率是運行在Linux服務(wù)器上面的,雖然我們開發(fā)會用Windows,但部署的時候一般都是部署在Linux服務(wù)器上
選好控制臺后點擊下一步,然后為項目配置項目名和儲存位置,因為我們的項目是由很多個小項目構(gòu)成的,所以我會把這些小項目都放在同一個文件夾下面(也就是下圖位置選項中的study文件夾)

因為我們先建立的是服務(wù)器項目,所以項目名叫做MmoServer,配置完成后點擊下一步,其他信息中的目標框架選擇默認就好,然后點擊創(chuàng)建

創(chuàng)建好服務(wù)器項目后,我們還需要再創(chuàng)建一個項目,因為網(wǎng)絡(luò)游戲除了有客戶端和服務(wù)器代碼外,還會存在一些客戶端跟服務(wù)器共通的項目代碼,所以我們一般會建立一個通用文件夾,用來存放一些既要在服務(wù)器上使用的代碼,又需要在客戶端上使用的代碼
因為這個通用文件夾是被客戶端和服務(wù)器所調(diào)用的,所以它的的項目類型就不能再是控制臺項目了,而是必須要把它建立成類庫,類庫可以被客戶端和服務(wù)器所引用

配置儲存位置與名稱

下面再用與建立服務(wù)器項目一樣的方法建立客戶端項目,只是將項目名稱改為ConClient

創(chuàng)建完客戶端項目后,第一步的目錄規(guī)劃就完成了,接下來我們就來實現(xiàn)網(wǎng)絡(luò)通信
實現(xiàn)網(wǎng)絡(luò)通信
網(wǎng)絡(luò)游戲想要實現(xiàn)網(wǎng)絡(luò)通信都是需要使用一種網(wǎng)絡(luò)協(xié)議的,目前主流的互聯(lián)網(wǎng)網(wǎng)絡(luò)協(xié)議是TCP/IP協(xié)議,但本文不會直接使用TCP/IP通信,因為它涉及的內(nèi)容較多,難度也較高,我們會使用WS協(xié)議
WS是什么呢?
WS是一個應(yīng)用層協(xié)議,這個協(xié)議比HTTP、FTTP這些協(xié)議的適用性都要廣泛,因為它實際上就相當于是一個已經(jīng)幫你實現(xiàn)好的高層網(wǎng)絡(luò)協(xié)議,而且效率很高,它的全稱叫做WebSocket
WebSocket協(xié)議跟HTTP這樣的傳統(tǒng)的協(xié)議有什么不一樣呢?
HTTP主要服務(wù)于網(wǎng)頁的傳輸,而WS的應(yīng)用范圍比較廣,除了能用在Web上面,也非常適用于一般的網(wǎng)絡(luò)游戲開發(fā)
接下來我們需要為項目引入WebSocket庫,剛才創(chuàng)建的三個項目里都要引入,這里我用為Common引入WebSocket庫為例子,來為大家演示引入過程:在Common項目的依賴項上右鍵,點擊管理NuGet程序包

在彈出界面中搜索WebSocketSharp,然后選擇搜索結(jié)果中的第一個進行安裝,這樣就成功引入WebSocket通信庫了

為三個項目引入WebSocket庫后就可以開始擼代碼了,下面是服務(wù)器項目的代碼
服務(wù)器代碼已經(jīng)寫好了,接下來我們就把客戶端連接到服務(wù)器上去,下面是客戶端代碼
寫完這些代碼后再運行服務(wù)器就能實現(xiàn)網(wǎng)絡(luò)通信了,運行效果如下

網(wǎng)絡(luò)通信的實現(xiàn)到這里就結(jié)束了,感謝各位讀者能夠看到這里,如果想要學習更多MMORPG網(wǎng)絡(luò)游戲知識可以參加我們的從零開發(fā)MMORPG 3天訓練營,原價298,現(xiàn)在限時免費領(lǐng)取
從零開發(fā)MMORPG 3天訓練營可以在我們的《從零開發(fā)MMO?3天訓練營【第一期】 》視頻末尾掃描二維碼免費獲取
課程大綱如下




學完你能夠收獲

連續(xù)3天,360+分鐘
不僅僅能讓你從零開發(fā)MMORPG,更能讓你了解游戲行業(yè)求職所面臨最重要的問題!
讓你在入行前避過這些坑
本篇文章涉及到的源碼及素材資源,還有更多游戲開發(fā)資源,可以在我們的《從零開發(fā)MMO 3天訓練營【第一期】 》視頻末尾掃描二維碼獲取