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

歡迎光臨散文網 會員登陸 & 注冊

回合制戰(zhàn)斗游戲的網絡同步

2022-08-30 13:50 作者:游戲開發(fā)RAIN  | 我要投稿

本節(jié)來講解基于回合制戰(zhàn)斗玩法的網絡同步?;睾现朴螒蚴且环N游戲打怪形式,所有游戲內玩家輪流自己的回合,只有輪到自己的回合,才能夠進行操縱。而基于網絡玩家來進行回合制對戰(zhàn)的時候,服務端如何做好同步,本節(jié)我們從3個點來做詳細的分析。

加入我的游戲開發(fā)交流群,

給你分享更多游戲源碼及其他學習素材啟發(fā)

(1)玩家的戰(zhàn)斗匹配;

(2)回合制戰(zhàn)斗邏輯控制;

(3)機器人與NPC戰(zhàn)斗角色設計;

本節(jié)來講解基于回合制戰(zhàn)斗玩法的網絡同步。回合制游戲是一種游戲打怪形式,所有游戲內玩家輪流自己的回合,只有輪到自己的回合,才能夠進行操縱。而基于網絡玩家來進行回合制對戰(zhàn)的時候,服務端如何做好同步,本節(jié)我們從3個點來做詳細的分析。

加入我的游戲開發(fā)交流群,

給你分享更多游戲源碼及其他學習素材啟發(fā)

(1)玩家的戰(zhàn)斗匹配;

(2)回合制戰(zhàn)斗邏輯控制;

(3)機器人與NPC戰(zhàn)斗角色設計;


玩家戰(zhàn)斗匹配


回合制游戲首先是玩家的戰(zhàn)斗匹配,對于回合制游戲而言戰(zhàn)斗可以分為兩種,一種是玩家與系統(tǒng)之間的PK,比如做某個任務,PK系統(tǒng)中的某個角色, 另外一種是玩家與玩家之間的戰(zhàn)斗匹配。其實這里的本質都是一樣的,唯一的普通是玩家與系統(tǒng)之間的pk,系統(tǒng)角色的操作是由后臺系統(tǒng)的規(guī)則控制的,玩家與玩家PK,玩家的所有操作來自于網絡客戶端。玩家戰(zhàn)斗時匹配的規(guī)則是由策劃來定的,比如兩個玩家商量好指定相互PK,比如系統(tǒng)根據某些條件,隨機匹配玩家來PK等。這個由策劃給出PK的匹配規(guī)則我們來實現(xiàn)。在做玩家匹配戰(zhàn)斗的時候,如果是按照系統(tǒng)規(guī)則,通過系統(tǒng)來匹配對手,一般我們在服務端會設計一個等待列表,等待列表就是按照策劃提供的規(guī)則來進行分類,比如新手場,高手場等。當玩家要進入戰(zhàn)斗時,先會先加入到服務器上的等待列表中,等待系統(tǒng)分配其它的玩家來開一個戰(zhàn)斗局。這個時候一般服務端會啟動一個定時器或者事件來驅動檢查看等待列表里面是否有玩家,如果有,就抽取出來組成一個戰(zhàn)斗局。服務端會創(chuàng)建一個”回合戰(zhàn)斗管理對象” + “玩家對象”或”系統(tǒng)控制的角色對象”?!被睾蠎?zhàn)斗管理對象”來管理整個回合制戰(zhàn)斗流程與進度邏輯與結算結果?!被睾现茟?zhàn)斗管理對象”,給每個玩家對象(系統(tǒng)控制的角色對象)分配一個”位置”?;睾现茟?zhàn)斗管理對象基于對應的位置來做好回合管理。



系統(tǒng)完成玩家匹配以后,就進入了回合制戰(zhàn)斗邏輯控制,這部分主要有RoundFightMgr來做管理與推進整個游戲邏輯的進度。主要的流程如下:

1: 把參與戰(zhàn)斗的玩家對象的引用放在一個數(shù)組里面,方便遍歷每個玩家與廣播事件;

2: 可以添加一個旁觀數(shù)組,用來存放旁觀的玩家角色(游戲觀眾),視業(yè)務的需求而定。

3: 遍歷所有玩家(戰(zhàn)斗玩家與旁觀玩家),發(fā)送一個RoundReady的事件消息給每個客戶端,告訴客戶端戰(zhàn)斗馬上要開始了,進行準備;

4: 發(fā)送一個RoundStart的事件消息給所有玩家,告訴它們戰(zhàn)斗正式開始;

5: 在服務端上做好一個當前的回合輪到哪個玩家的標記,一般我們會用一個位置的索引來處理,因為玩家對象的引用都存在一個數(shù)組里面,比如sideA的索引為0, sideB的索引為1。

6: 廣播TrunToPlayer給所有的客戶端,目前輪到誰的回合了, 客戶端收到處理后重置倒計時等信息,等待玩家的操作。

7: 服務端下一個操作超時的定時器,如果在規(guī)定的時間內,當前Trun玩家沒有做任何操作,服務端就會判定當前玩家超時,輪到下一個玩家繼續(xù)執(zhí)行步驟6。

8: 服務端接受到客戶端玩家的戰(zhàn)斗操作,先判斷一下這個客戶端是不是當前的Trun玩家,如果不是,不予理睬,如果是,進入操作合法性檢測。

9: 獲取當前Trun玩家發(fā)過來操作的類型,數(shù)據等,檢車這些類型,數(shù)據條件的合法性,即是否允許這樣的操作。如果合法性都允許了,就把操作保存起來,方便生成錄像。

10: 操作合法后,表示Trun玩家做了對應的一個操作,服務端做好傷害與防御的計算,同時服務端會把這個玩家的操作廣播給所有的客戶端,客戶端播放回合攻擊動畫。

11: 服務端留足了回合的時間給客戶端播放動畫展示以后,繼續(xù)重復執(zhí)行第6步。

12: 特定條件戰(zhàn)斗結束后,進行結算,向對應的客戶端發(fā)送結算數(shù)據CheckGame,戰(zhàn)斗結束。


機器人設計與NPC戰(zhàn)斗角色

回合制網絡游戲中有兩個比較重要的東西的設計就是機器人與NPC的戰(zhàn)斗角色。特別是機器人,前期剛上線的時候沒有那么多人PK,怎么辦呢?系統(tǒng)一般會創(chuàng)建機器人。機器人的設計同樣也適合NPC的戰(zhàn)斗角色單元。機器人的設計怎么做呢?其實非常簡單,我們機器人的大部分的數(shù)據功能與策略基本和普通玩家是一樣的。普通玩家代碼寫好以后這部分代碼也可以共用,唯一不同的是機器人有一個機器人的標志。玩家控制角色的操作來自玩家,而機器人就沒有對應的網絡玩家,所以我們會做一個機器人決策的AI模塊,來做出操作決策。比如Trun到某個玩家,判斷這個玩家的標志是否為一個機器人,如果是,那么我們就進入AI決策模塊,經過計算做出操作決策后廣播給所有客戶端,這樣客戶端就看到這個玩家的操作了。所以關于機器人的設計,基本上不用動太多。一般我們把數(shù)據庫中一些玩家設置成機器人,在服務器啟動的時候,把這些玩家數(shù)據加載進來,創(chuàng)建生成機器人數(shù)據對象Player。哪里需要機器人,就把機器人放等待列表進行匹配。NPC戰(zhàn)斗角色也是類似的。


回合制戰(zhàn)斗游戲的網絡同步的評論 (共 條)

分享到微博請遵守國家法律
台南市| 禹州市| 松原市| 永宁县| 喀喇沁旗| 鄂尔多斯市| 疏附县| 商都县| 句容市| 襄垣县| 海原县| 同仁县| 大渡口区| 武宣县| 顺昌县| 武陟县| 萨迦县| 嘉兴市| 梁河县| 黄龙县| 定日县| 浦县| 兖州市| 渝北区| 留坝县| 惠州市| 临猗县| 天祝| 新河县| 闵行区| 德阳市| 三原县| 凉山| 凉城县| 吴桥县| 冀州市| 营口市| 洛南县| 九台市| 华亭县| 上高县|