該專案是針對製作一款遊戲,在本文中,我們只選取其中的乙個功能進行分析,我們選擇揹包系統作為我們的設計目標。
揹包系統的核心是,揹包介面負責顯示遊戲中玩家擁有的遊戲道具,在邏輯上儲存玩家的道具物品資訊,並對揹包中的物品進行使用、**、公升級等操作。
專案遊戲主體分為遊戲內邏輯與遊戲外邏輯,遊戲內部主體邏輯使用c#語言編寫,使用單例模式、觀察者模式、工廠模式等架構編輯遊戲主體邏輯。遊戲外部ui系統及介面主要使用lua語言編寫,通過事件通知互動機制完成訊息傳遞。使用成熟的tolua框架完成lua與c#**的邏輯互動。系統的網路通訊部分設計使用socket通訊與protobuf協議結合的方式進行。
在專案模組開發中,是基於mvc框架進行的,將各模組業務分拆成三部分:model:儲存遊戲中物件的資料結構,例如角色資訊、物品資訊等等。controller:處理遊戲業務邏輯。例如核心玩法、物品使用等。view:遊戲世界中可以見的物件,和model繫結,在遊戲中展現物體及ui物件。mvc具體使用方法為使用manager類控制操作流程,ui類設定遊戲內按鈕、文字、等,data類等設定為對應資料基類,進而實現程式前端資料展示與後端資料儲存邏輯分離。遊戲中的揹包系統也使用mvc框架結構,使用manager類控制遊戲流程,ui類設定遊戲內按鈕、文字、等,data類等設定為基類,實現程式前後端分離。
對於揹包物品,最重要的機制是需要實時獲取伺服器對物品的相關修改,出於模組化的需求,由於物品涉及的模組眾多如戰鬥掉落、任務領取、玩家購買等等,物品的相關修改需要獨立負責,儘量減少與其他模組的耦合程度,因此物品相應的方法設計使用使用觀察者模式的設計模式,通過伺服器推送通知的方式進行更新。
分析:在軟體工程中,模組的內聚和耦合是度量模組化質量的之一。觀察者模式適用於當對乙個物件的改變需要同時改變其他物件,而又不知道具體有多少物件有待改變的情況。當物件之間的關係具有一對多的相關資訊依賴時,乙個被觀察者物件的資訊狀態資料發生改變時,將對外傳送通知,對該事件新增監聽的所有觀察者可以同時對其變化進疔自身更新。這種模式可以通過低耦合度的方式靈活的處理一對多的物件資料關係。觀察者模式實現了表示層和資料邏輯層的分離,定義了穩定的訊息傳遞機制,並抽象了更新介面,使得觀察者可以自我定義自身的表現,從而通過抽象的耦合方式連線觀察者與被觀察者.觀察者對於被觀察者是透明的,被觀察者只擁有抽象觀察者的列表,每個具體觀察者都符合乙個抽象觀察者的介面。但這種模式在使用通知更新的同時將造成一定的效能損耗,且沒有相應的機制使觀察者知道被觀察物件變化產生的原因。如果在被觀察者之間有迴圈依賴的話,易造成迴圈呼叫導致系統崩潰。
對於遊戲揹包系統來說,揹包中物品會受到其他模組的影響,但其他模組並不關心對於物品的處理方式,因此選擇觀察者模式的設計模式。
揹包模組需要在使用者登入遊戲後,從伺服器獲取該使用者的物品相關資訊,包含貨幣資訊、使用者相關顯示物品資訊等等用以在主介面中顯示,因此需要在登陸成功後盡快向伺服器發起請求,但此時使用者資料可能會因為伺服器未完成資料的打包而報錯,故此請求傳送時間由伺服器訊息推送決定,在bagmanager中定義伺服器物品資訊初始化完成訊息通知,使用者完成登入後,當收到物品資訊初始化完成訊息後,向伺服器傳送物品資訊請求。由於物品中存在體驗類物品,在獲取物品資訊時,需要建立計時器同一管理物品過期相關事件。
執行檢視展示了系統執行時的時序結構特點,比如流程圖、時序圖等。執行檢視中的每乙個執行實體,一般稱為元件,都是不同於其他元件的執行實體。如果有相同或相似的執行實體那麼就把他們合併成乙個。
執行實體可以最終分解到軟體的基本元素和軟體的基本結構,因而與軟體**具有比較直接的對映關係。在設計與實現過程中,我們一般將執行檢視轉換為偽**之後,再進一步轉換為實現**。
因此,執行檢視其實表現的是系統中間比較動態的那一部分。鑑於此,我們可以通過流程圖來表示執行檢視:
(這裡的流程圖,並不是專業的uml流程圖,而是一種讓人方便理解的執行流程,即頁面跳轉、操作等,通過這一種流程,來展示玩家可能會怎麼使用到揹包系統的,因此不夠標準)
工作分配檢視將系統分解成可獨立完成的工作任務,以便分配給各專案團隊和成員。工作分配檢視有利於跟蹤不同專案團隊和成員的工作任務的進度,也有利於在個專案團隊和成員之間合理地分配和調整專案資源,甚至在專案計畫階段工作分配檢視對於進度規劃、專案評估和經費預算都能起到有益的作用。
屬性名稱
型別長度
主鍵物品編號
idint32y
物品名稱
name
string不限n
物品描述
desc
string不限n
物品分類
itemclass
int32
n物品種類
itemtype
int32
n物品是否在揹包中顯示
isinpackage
int32
n物品是否唯一
isunique
int32
n物品是否可使用
canuse
int32
n物品是否可堆疊
isstack
int32
n物品最高堆疊數
stacklimit
int32
n物品是否可合成
cancombine
int32
n物品是否可**
cansale
int32
n物品****
saleprice
int32
n物品額外屬性
effectparam
int32
n物品資源路徑
iconpath
string不限n
物品唯一編號
tidint32n
物品數量
count
int32
n物品鎖定數量
lockcount
int32
n物品詞綴
attrinfo
int32
n每個檢視都是從不同的角度對軟體架構進行描述和建模,比如從功能的角度、從**結構的角度、從執行時結構的角度、從目錄檔案的角度,或者從專案團隊組織結構的角度。
軟體架構代表了軟體系統的整體設計結構,它應該是所有這些檢視的集合。但我們不會將不同角度的這些檢視整合起來,因為不便於閱讀和更新。不過我們會有意識地將不同角度的檢視之間的對映關係和重疊部分了然於胸,從而深刻理解軟體架構內在的一致性和完整性,這就是系統概念原型。
基於以上各檢視,我們就可以總結出此專案的概念原型,以下總結本系統的工作流程:玩家通過點選特定的揹包按鈕,進入到揹包頁面,檢視揹包物品,可以通過屬性對物品進行分類檢視,然後選擇需要使用的物品,或者對物品進行公升級,亦或者對物品進行**。玩家進入揹包的時候,會接受伺服器的資料報,了解伺服器是否已經準備好,如果已經準備好,請求伺服器傳送所需要的資料報給到客戶端,然後通過介面展示給玩家。
系統許可權設計方案
2008 06 04 b size large 系統許可權設計方案 size b b size large size b 關鍵字 設計思想 系統設計許可權管理分為 人員管理 角色管理 模組管理 其實有這樣一些概念 主體 使用者和角色可以稱為主體。資源 就是可以進行crud的物件。許可權 就是對資源的...
使用者許可權系統設計方案
鍾峰 2004年10月 版本 1.0.0 本文介紹乙個應用於 企業應用通用的使用者許可權系統的設計框架,其設計思想與主要文件 自 sunwu software studio 的 isecuritymanager 產品。本指南適用於體系結構設計人員和開發人員。安全始終是可信賴的企業應用的基石。在企業應...
使用者許可權系統設計方案
鍾峰 2004年10月 版本 1.0.0 本文介紹乙個應用於 企業應用 通用的使用者許可權系統的設計框架,其設計思想與主要文件 自 sunwu software studio 的 isecuritymanager 產品。本指南適用於體系結構設計人員和開發人員。安全始終是可信賴的企業應用 的基石。在企...