最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

【商業(yè)MMO實(shí)戰(zhàn)訓(xùn)練營】01-登陸篇

2022-09-23 18:20 作者:獨(dú)立游戲人-老雷  | 我要投稿

前言

  • 本文要帶大家學(xué)習(xí)的是如何運(yùn)用商業(yè)游戲中的服務(wù)器架構(gòu)快速的開發(fā)一款MMO游戲,我們會(huì)結(jié)合項(xiàng)目中用到的技術(shù)來給大家講解商業(yè)MMO游戲中的服務(wù)器架構(gòu)實(shí)現(xiàn)原理

版權(quán)聲明

  • 本文為“優(yōu)夢創(chuàng)客”原創(chuàng)文章,您可以自由轉(zhuǎn)載,但必須加入完整的版權(quán)聲明

  • 更多學(xué)習(xí)資源請加QQ:1517069595或WX:alice17173獲?。ㄆ髽I(yè)級性能優(yōu)化/熱更新/Shader特效/服務(wù)器/商業(yè)項(xiàng)目實(shí)戰(zhàn)/每周直播/一對一指導(dǎo))

  • 點(diǎn)贊、關(guān)注、分享可免費(fèi)獲得配套學(xué)習(xí)資源

目標(biāo)和效果(演示效果非最終效果)

登陸效果演示

  • 這是我們的Demo場景,在游戲運(yùn)行時(shí)游戲的服務(wù)器也會(huì)同步運(yùn)行,點(diǎn)擊Game窗口右上角的Login按鈕時(shí)會(huì)使用默認(rèn)的賬號(hào)密碼登陸并打印日志信息

角色的創(chuàng)建與選擇


  • 登錄之后可以點(diǎn)擊Game窗口右上角的第二個(gè)按鈕會(huì)打印出當(dāng)前角色列表,上圖中可以看到當(dāng)前獲取到的玩家列表的元素個(gè)數(shù)是零個(gè),也就是說現(xiàn)在還沒有創(chuàng)建玩家,或者沒有角色列表

  • 創(chuàng)建一個(gè)玩家

  • 點(diǎn)擊Game窗口右上角的第三個(gè)按鈕創(chuàng)建角色,創(chuàng)建角色時(shí)客戶端會(huì)向服務(wù)器提出創(chuàng)建角色請求,服務(wù)器會(huì)給客戶端返回一個(gè)結(jié)果

  • 創(chuàng)建角色時(shí)會(huì)從我們的機(jī)構(gòu)名稱幽夢創(chuàng)客隨機(jī)選擇其中一個(gè)字來作為這個(gè)角色的名字(如下圖)

  • 可以看到這里隨機(jī)出的角色名是夢,而且這個(gè)角色在服務(wù)器上會(huì)存儲(chǔ)一個(gè)編號(hào),也就是name前的dbid,程序中一般不用字符串來作為識(shí)別這個(gè)人的編號(hào),因?yàn)槊挚赡苤孛幪?hào)不可能重名

  • 得到角色的數(shù)據(jù)庫id后就可以用這個(gè)id進(jìn)行角色登錄


  • 點(diǎn)擊第四個(gè)按鈕就可以使用已創(chuàng)建的角色進(jìn)行登陸了

游戲效果

  • 上面就是此Demo的游戲畫面了,雖然看上去有點(diǎn)簡陋但該有的功能是一點(diǎn)都不少的

  • 角色移動(dòng)

  • 角色傳送

  • 怪物巡邏

  • NPC對話

  • 通過使用鼠標(biāo)點(diǎn)擊NPC可以觸發(fā)對話并打印到控制臺(tái),之后我們會(huì)使用Unity的UGUI來把NPC的對話和對話選項(xiàng)顯示到客戶端的窗口上

  • 怪物戰(zhàn)斗

  • Game窗口左上角的enemyid代表當(dāng)前要攻擊的怪物的id,現(xiàn)在為0是因?yàn)楫?dāng)前沒有選中怪物(如上圖)

  • 通過鼠標(biāo)點(diǎn)擊怪物后enemyid的數(shù)值會(huì)變?yōu)?038,這代表那個(gè)怪物的id,也表示鼠標(biāo)選中了這個(gè)怪物(如上圖)

  • 選中怪物后可以通過鍵盤上的按鍵對怪物進(jìn)行攻擊,攻擊時(shí)會(huì)在控制面板中打印攻擊信息(如上圖)

  • 怪物血量歸零時(shí)就會(huì)消失,之后服務(wù)器會(huì)在原本的位置重新刷出來一只怪物

登錄功能流程詳解

  • 在實(shí)現(xiàn)登錄功能之前先來看一下登錄的總體流程,下面是按照游戲開發(fā)的規(guī)范畫的UML時(shí)序圖,它主要表現(xiàn)了客戶端跟服務(wù)器的交互流程

  • 大型商業(yè)項(xiàng)目的服務(wù)器通常不是一個(gè)服務(wù)器,而是一組服務(wù)器,其中的每一種服務(wù)器可能有多個(gè)服務(wù)器來支撐系統(tǒng)功能,比如登陸服務(wù)器在處理一百萬人同時(shí)登錄時(shí)肯定不是一臺(tái)服務(wù)器處理,而是由多臺(tái)服務(wù)器同時(shí)處理

  • 客戶端登錄流程

    • 1,顯示啟動(dòng)動(dòng)畫

    • 2,客戶端進(jìn)行初始化

    • 3,登錄賬號(hào)

      • 在登錄時(shí)客戶端會(huì)向服務(wù)器發(fā)出登錄請求,這個(gè)請求會(huì)由登陸服務(wù)器來處理

    • 4,賬號(hào)查詢

      • 登陸服務(wù)器需要通過賬號(hào)數(shù)據(jù)庫服務(wù)器來查詢這個(gè)賬號(hào)是否已經(jīng)注冊,如果沒有注冊就會(huì)在賬號(hào)數(shù)據(jù)庫服務(wù)器里注冊一個(gè)

    • 5,登錄成功

      • 賬號(hào)查詢完以后會(huì)有登錄成功與登錄失敗兩種情況,登錄成功時(shí)會(huì)將玩家賬號(hào)登錄到網(wǎng)關(guān)服務(wù)器

      • 游戲服務(wù)器可以分成登錄服務(wù)器和處理游戲業(yè)務(wù)的服務(wù)器,登錄服務(wù)器在登錄完以后就不再跟用戶打交道,之后會(huì)由網(wǎng)關(guān)服務(wù)器來處理客戶端發(fā)送的跟游戲相關(guān)的事件

    • 6,登錄失敗

      • 登錄失敗時(shí)會(huì)給客戶端返回登錄失敗結(jié)果

    • 7,請求版本文件

      • 向資源更新服務(wù)器請求資源版本信息,資源更新服務(wù)器會(huì)返回最新版本的資源的相關(guān)信息

    • 8,返回版本號(hào),版本號(hào)內(nèi)的文件信息

      • 資源更新服務(wù)器返回的最新版本的資源相關(guān)信息包括了資源版本號(hào)和版本內(nèi)的所有文件信息

    • 9,客戶端版本文件與服務(wù)器做對比

      • 用服務(wù)器版本文件跟客戶端版本文件做比對,如果發(fā)現(xiàn)有一些內(nèi)容需要更新,就會(huì)進(jìn)入第十個(gè)步驟

    • 10,下載更新(異步)

      • 從資源更新服務(wù)器下載更新資源,這是一個(gè)異步的操作,可以一邊下載資源一邊在客戶端UI上提示當(dāng)前下載信息

    • 12,資源替換

      • 得到更新完以后的服務(wù)器版本資源后,就需要把客戶端舊版本資源替換成新版本資源,

    • 13,資源解壓

      • 通過對資源進(jìn)行解壓得到最新的資源后就登陸成功了


登陸功能實(shí)現(xiàn)

  • 在Unity場景里創(chuàng)建一個(gè)空對象,名叫TotaMgr,也就是總管(如下圖)

  • 為TotaMgr添加一個(gè)REMian組件,這是客戶端與服務(wù)器通信的主要組件,它既能支持KCP通信也能支持TCP通信,也就是說它即支持了MMO游戲開發(fā),也支持幀同步對戰(zhàn)游戲開發(fā)

  • 添加完這個(gè)組件后客戶端就能與服務(wù)器進(jìn)行通信了

  • 這個(gè)Demo里已經(jīng)定義好了客戶端與服務(wù)器的通訊協(xié)議,名叫Login,,登錄時(shí)可以像調(diào)用的方法一樣發(fā)送協(xié)議到服務(wù)器

  • Login有三個(gè)參數(shù),第一個(gè)參數(shù)是登錄時(shí)的賬號(hào),第二個(gè)參數(shù)是用戶密碼,第三個(gè)參數(shù)是登錄時(shí)的一些額外信息,這里用三個(gè)問號(hào)表示,因?yàn)檫@個(gè)信息是可以按照自己的需求來傳遞的(如下圖)

  • 接下來開始編寫TotaMgr的腳本

  • 創(chuàng)建TotaMgr腳本,并把它拖到TotaMgr對象上

  • 因?yàn)檫@個(gè)Demo里已經(jīng)將客戶端與服務(wù)器進(jìn)行登錄通訊的協(xié)議定義好了,所以TotaMgr腳本里只需要進(jìn)行一些簡單的操作就可以了


  • 寫完腳本后運(yùn)行游戲就可以在Game面板左上角顯示Login按鈕了,點(diǎn)擊按鈕時(shí)會(huì)向服務(wù)器發(fā)送登錄請求,并在控制面板中打印是否登錄成功(詳細(xì)代碼講解可以點(diǎn)擊文末完整視頻鏈接查看)


寫在最后

  • 更多學(xué)習(xí)資源請加QQ:1517069595或WX:alice17173獲?。ㄆ髽I(yè)級性能優(yōu)化/熱更新/Shader特效/服務(wù)器/商業(yè)項(xiàng)目實(shí)戰(zhàn)/每周直播/一對一指導(dǎo))

  • 點(diǎn)贊、關(guān)注、分享可免費(fèi)獲得配套學(xué)習(xí)資源

【商業(yè)MMO實(shí)戰(zhàn)訓(xùn)練營】01-登陸篇的評論 (共 條)

分享到微博請遵守國家法律
双辽市| 会泽县| 吴川市| 蕉岭县| 广汉市| 吉隆县| 汉源县| 梧州市| 望城县| 东山县| 龙门县| 博乐市| 宜宾市| 安庆市| 霍山县| 永安市| 顺昌县| 合江县| 花莲市| 揭东县| 浦江县| 蚌埠市| 安福县| 弋阳县| 华安县| 竹山县| 青州市| 泰兴市| 灵寿县| 长沙市| 图片| 万年县| 桃江县| 汾阳市| 上思县| 高阳县| 峨山| 淮南市| 庆安县| 八宿县| 肃北|