MMORPG游戲服務(wù)器設(shè)計隨想
在開發(fā)完一個游戲后,看了一些文章和當前一些流行的技術(shù)后,感觸頗深,所以隨筆聊聊。
游戲服務(wù)器的設(shè)計比較復(fù)雜,這里也不打算寫出每個細節(jié),只是講一下框架方面的想法。
1、實體系統(tǒng)和功能子系統(tǒng)
在服務(wù)器的框架部分,主要寫些基本的服務(wù)器功能模塊,可以實現(xiàn)一個實體系統(tǒng),游戲中的實體主要指那些生物對象,如角色,怪物,NPC等,其實在游戲中沒有必要寫具體的角色類,怪物類,NPC類,我們可以將他們統(tǒng)稱為實體,從游戲服務(wù)器的角度看,他們沒有什么不同,當策劃將這些實體對象進行配置后就成了具有類型差異的各種各樣的對象,如角色,怪物。功能子系統(tǒng)指MMORPG游戲中一些必不可少的相對獨立的功能集,如運動系統(tǒng),財產(chǎn)系統(tǒng),社交系統(tǒng),聲望系統(tǒng)等,每個實體具有自己的屬性集,一些功能子系統(tǒng),一些特性集(決定了生物的類型),這些屬性集、特性集和子系統(tǒng)可依賴配置文件進行配置。這樣的好處是不會存在通過實現(xiàn)各種對象的類來人為的增大類結(jié)構(gòu)的復(fù)雜性,通過具體的類(或繼承類)實現(xiàn)各種生物甚至有時候會存在沖突,因為有的對象既是A類型又是B類型。
2、基于服務(wù)的構(gòu)建思想
游戲服務(wù)器除了上面的實體和子系統(tǒng)外,其他有好多東西可以借鑒現(xiàn)在的SOA思想,如聊天系統(tǒng),好友系統(tǒng),師徒系統(tǒng)等是否都可以看作是一種游戲服務(wù)呢?當開啟了這些服務(wù),那么相應(yīng)的功能就能表現(xiàn),關(guān)閉則隱藏。
3、封閉的數(shù)據(jù)管理層
服務(wù)器的數(shù)據(jù)管理比較復(fù)雜,如果我們講所有(或大部分)的數(shù)據(jù)交由一個獨立的數(shù)據(jù)管理層進行管理,那么上層開發(fā)人員或者上層應(yīng)用模塊就不直接關(guān)心數(shù)據(jù)在哪個地方,怎么更新,怎么存儲等?;谇懊娴膶嶓w系統(tǒng),整個服務(wù)器的程序架構(gòu)已經(jīng)比較抽象,在這個抽象的類對象的基礎(chǔ)上構(gòu)建封閉的數(shù)據(jù)管理應(yīng)該比散亂的大量不同對象的系統(tǒng)中構(gòu)建數(shù)據(jù)管理層來得更方便,比如實體對象的屬性集,基本可以涵蓋一個實體對象大部分的數(shù)據(jù),那么數(shù)據(jù)管理層只要管好屬性集就可以帶來不少的方便,而屬性集中的大部分屬性是通過配置而來的(至少很多需持久化的屬性肯定是配置的),除了實體系統(tǒng)的數(shù)據(jù),還有那些子系統(tǒng)和基于服務(wù)的那些對象都可以納入數(shù)據(jù)管理層進行管理。
4、腳本化支持
對于游戲服務(wù)器那些核心的模塊,通過腳本封裝(如Lua封裝)后,可以讓上層應(yīng)用層進行很好的擴展和開發(fā),所以游戲服務(wù)器應(yīng)該也必須支持腳本編程。像那些AI,任務(wù),聊天等等大多數(shù)應(yīng)用模塊中的大部分代碼都是可以拿腳本編寫的??紤]到腳本性能問題,一些對性能影響比較大的地方還是建議用c/c++實現(xiàn),腳本里面進行調(diào)控即可。
還有一些亂七八糟的東西,考慮到怕不小心泄密,這里就不多講了。
posted on 2006-06-10 16:28 PeakGao 閱讀(2225) 評論(2) 編輯 收藏 引用 所屬分類: 游戲開發(fā)