遊戲核心邏輯設計 登入系統

2021-09-29 13:42:46 字數 1363 閱讀 8816

遊戲伺服器結構演化

邏輯層和基礎元件層分離

邏輯伺服器是大規模異構分布式系統

國內的遊戲伺服器和國外的最大的區別是在:國內的遊戲的邏輯是跑在伺服器上的,客戶端可能逐漸變成乙個只是顯示表現象的東西,所有牽扯到財產、玩家資料、校驗等邏輯都是放在伺服器上的,因此導致伺服器的邏輯層越來越複雜,單個程序是根本沒有辦法處理的。

什麼是登入系統

玩家通過客戶端和伺服器建立連線,在伺服器各個程序上完成需要的賬號和角色資料建立,並進入遊戲場景開始遊戲的過程稱為登入。

搭建登入系統的裝備工作

由於遊戲不斷的更新,伺服器最終會演化成為乙個大規模分布式系統。不同系統之間的程序也會相互通訊,它們也需要協議。

為什麼伺服器會演化成為乙個大規模分布式系統,以及作為分布式系統,登入在這個系統中的位置,實際上它處於乙個中間層的位置。最底層是元件如接入、訪問資料、日誌記錄等。上層是具體的玩法如副本、競技場等。中間層則是一些處於上下層之間且可以支撐大規模玩法開發,同時向下可以讓整個系統跑起來的類似客戶端引擎,這樣乙個伺服器引擎層的概念。

登入系統的基本流程

使用什麼樣的設計模式來實現登入系統呢?

狀態模式 - 登入狀態機

簡單的登入模型

這裡有乙個問題,這裡為什麼叫做引擎層卻要跟玩法隔離呢?

遊戲伺服器大體分為元件層、邏輯引擎層、上層邏輯層。

簡單的登入流程

簡單的登入流程

頂層狀態機

登入系統的效能問題

伺服器物理效能邊界:流程、cpu、記憶體、db訪問

網際網路實際線上遇到的效能問題:

效能問題例項:集中登入和群體傳遞

開發效率與高可用性

實際專案大規模併發問題

高可用性

總結基礎元件:連線、存檔、日誌

邏輯服務:分布式多程序系統

登入的基本流程和狀態

需要考慮各種邊界情況

四個物理效能邊界,毛刺和雪崩可能的產生點。

100%一定會出問題,控制出問題後的影響範圍。

介面邏輯設計

之前寫dds那部分時,對於spi介面琢磨了好久,當然了,首先想得到的狀態機,控制dds輸出的資料送至後端da。將整個資料傳輸過程分解成四個狀態 idle wr start wr data stop,根據事件猝發每個狀態的跳轉,例如idle wr start的跳轉條件是out en 1,這種設計思想是...

業務邏輯設計

1.action設計 shfwpgdzlbdmanager.copy mannager裡面的相應方法 shfwpgdzlbd.getbdtpid 傳入的引數從哪獲取,型別應和mannager的方法需要的引數型別相同 2.manager設計 設計之前宣告物件 private shfwpgdzlbdda...

分頁邏輯設計

分頁,是每乙個開發者必然會面臨的乙個問題。由於資料量大,不可能全部載入出來放置記憶體中,然後在頁面展示。這種方式的優點 1 簡單明瞭,邏輯清晰。2 實時查詢,資料準確。缺點 io次數太多,每次查詢都要請求兩次sql。增加db壓力 db資源很稀缺,而且每次查詢總記錄數是一次全表掃瞄,進行的是表級鎖 優...