MMO遊戲設計三 架構設計

2021-07-04 12:25:40 字數 953 閱讀 5166

首先要說明,這裡談的架構,並不是說遊戲伺服器由哪些功能伺服器搭建而成,而是想重點談談乙個好的遊戲架構,應該具備哪些特質。

對網遊來說,玩家所操作的客戶端資料,往往是服務端針對該玩家資料的映象。打個比方,客戶端儲存了本角色的a的hp,mp等資料,服務端同樣也儲存了角色a的hp,mp。另外,當a的hp,mp發生變化時,需要將資料同步給客戶端本人,同時也需要同步給其他能看到a的那些玩家;除了資料的同步之外,有些邏輯功能在客戶端和服務端完全相同,比方說攻防計算,扣血邏輯。這些最基礎的功能,在開發功能中甚至是必不可少的,但凡每增加一部分資料到角色身上,可能都要考慮此類問題。

對乙個好的遊戲架構而言,最基礎的功能性架構應該搭建得很好,以至於我們再新增新功能時,只需專注於新功能的邏輯,而無需再花精力在客戶端和服務端的資料一致性和邏輯一致性方面。

有關資料一致性:簡單說就是同步了,**中最常見的做法:

1.  server: player->set_hp(hp);  // 服務端設定hp 

sync_player(player, hp);        // 發同步訊息到客戶端

2.  client: recv_sync();                 // 收到同步訊息

player->set_hp(hp);               // 客戶端設定hp

一條簡單設定hp的指令,要完成同步操作就得封包,解包,客戶端再設定,考慮到aoi(area of interest)廣播的話,那就更複雜了。

那麼,有沒有一種更加智慧型的方式,在伺服器設定好響應的操作或者數值之後,框架會「自動「同步到客戶端呢?

假定,客戶端和服務端都有乙個相同的」邏輯虛擬機器「,所有通用的邏輯**,在這裡作乙個抽象,邏輯虛擬機器暴露必要的介面供客戶端和服務端進行訪問;那麼,客戶端和服務端在訪問邏輯虛擬機器時,只要提供的引數一致,那將會得到同樣的結果,則客戶端和服務端各自的邏輯虛擬機器的內部資料和狀態一定是一致的。

問題是,邏輯虛擬機器應該暴露怎樣的介面呢?

IT四架構設計模型

按照頂層設計理論和方法的定義,資訊化頂層體系結構包括業務架構 資訊架構 應用架構和技術架構四大範疇。業務架構定義了整體業務能力以及各部門 各業務的協作關係,由業務要素模型表達整體業務能力,包括業務職能 業務布局和業務組合形態,由業務流程模型表達各部門 各業務的協作關係 資訊架構定義了全域性資訊資源組...

架構 08 架構設計三原則

成為架構師是每個程式設計師的夢想,但是程式設計師和架構師之間有乙個巨大的鴻溝,需要程式設計師去跨域方能成為架構師,那就是 不確認性 對於程式設計而言,其結果是確定的,但是對於架構是不確定的。架構沒有程式設計那麼的的約束,可以使用這種方式去實現,而對各種選擇,我們就容易迷茫,到底是選擇業務最先進的技術...

03 架構設計三原則

本文是通過學習李運華老師的 從0開始學架構 課程的隨筆 現在自己對架構雲裡霧裡的感覺,結合工作中的實踐,學習與總結,慢慢的,會有質的提公升的。將軍難打無兵之戰 羅馬不是一天建成的 冰山下面才是關鍵 在專案管理中,專案啟動 規劃 執行 監控 驗收的整個過程,我們需要整個過程中合理評估和知曉我們所擁有的...