網(wǎng)頁游戲架構(gòu)與開發(fā)_第1頁
網(wǎng)頁游戲架構(gòu)與開發(fā)_第2頁
網(wǎng)頁游戲架構(gòu)與開發(fā)_第3頁
網(wǎng)頁游戲架構(gòu)與開發(fā)_第4頁
網(wǎng)頁游戲架構(gòu)與開發(fā)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

網(wǎng)頁引言概述網(wǎng)頁服務(wù)器架構(gòu)服務(wù)器架構(gòu)服務(wù)器架構(gòu)服務(wù)端事件系統(tǒng)RPG戰(zhàn)斗進程時間校對數(shù)據(jù)庫設(shè)計引言程序員高級鉗工開發(fā)的程序員是否要了解相關(guān)定義、邏輯。?不需要?需要?網(wǎng)頁概述區(qū)別??何為網(wǎng)頁

?網(wǎng)頁

與為何會出現(xiàn)網(wǎng)頁網(wǎng)頁

特征?網(wǎng)頁 其實就是用瀏覽器玩的 ,它不用進行 。按是否需要 客戶端來劃分是否網(wǎng)頁客戶端,只要一臺能上網(wǎng)的電腦就可以。按用戶來劃分是否網(wǎng)頁

。較認(rèn)可定義:基于瀏覽器,擁有片段時間的用戶進行的稱為網(wǎng)頁。下面 主要針對這類 架構(gòu)與開發(fā)進行

。網(wǎng)頁可以看作是不但可以把網(wǎng)頁是B/S結(jié)構(gòu),和

的結(jié)合體,因此它具備了這兩類系統(tǒng)的特性??醋魇且粋€ ,也可以把它看作是一個

。則是C/S結(jié)構(gòu),網(wǎng)頁

則是這兩者的結(jié)合。服務(wù)器架構(gòu)控制器(Controller)視圖(View)模型(Model)邏輯層和持久層是B/S結(jié)構(gòu)。MVC思想:瀏覽器通過HTTP協(xié)議發(fā)送數(shù)據(jù)請求,由控制器接受請求,通過路徑委托給數(shù)據(jù)模型處理,模型通過與邏輯層和持久層的交互,把處理結(jié)果反饋給控制器,控制器根據(jù)結(jié)果組裝視圖,并最終反饋給客戶端瀏覽器。1.瀏覽器請求數(shù)據(jù)返回瀏覽器2.委托模型處理3.提交集成模塊處理4.集成模塊返回處理5.模型返回處理結(jié)果6.準(zhǔn)備視圖7.返回視圖服務(wù)器架構(gòu)服務(wù)器架構(gòu)服務(wù)器架構(gòu)一般采用C/S結(jié)構(gòu),客戶端負(fù)責(zé)繪制 世界的實時畫面,服務(wù)器端則負(fù)責(zé)響應(yīng)所有客戶端的連接請求和

邏輯處理,并控制所有客戶端的畫面繪制,客戶端與服務(wù)器通過網(wǎng)絡(luò)數(shù)據(jù)包交互完成每一步 邏輯。網(wǎng)關(guān)服務(wù)器方式,主要職責(zé)是將客戶端通信和 服務(wù)器

。網(wǎng)關(guān)服務(wù)器只負(fù)責(zé)解析數(shù)據(jù)包、加

、超時處理、過濾錯誤包,客戶端只需建立和網(wǎng)關(guān)服務(wù)器的連接

,無需與

服務(wù)器直接連接。網(wǎng)關(guān)服務(wù)器分為LoginGate(登錄網(wǎng)關(guān)服務(wù)器)、GameGate(網(wǎng)關(guān)服務(wù)器)。服務(wù)器架構(gòu)LoginGate主要負(fù)責(zé)在玩家登錄時

客戶端與LoginServer之間的網(wǎng)絡(luò)連接與通訊,對LoginServer和客戶端的通信數(shù)據(jù)進行加密、校驗。LoginServer主要功能驗證玩家賬號是否合法,并生成一個登錄憑證SESSIONKEY。GameGate主要負(fù)責(zé)客戶端與GameServer之間網(wǎng)絡(luò)連接和通訊,對客戶端請求和發(fā)送數(shù)據(jù)做簡單分析。4.GameServer主要負(fù)責(zé)邏輯處理,包括戰(zhàn)斗系統(tǒng)、任務(wù)系統(tǒng)、角色系統(tǒng)、地圖系統(tǒng)等。DBServer主要負(fù)責(zé) 數(shù)據(jù)緩存,包括玩家 屬性數(shù)據(jù),降低數(shù)據(jù)庫壓力。Mserver負(fù)責(zé)一組服務(wù)器中對多臺GameServer之間數(shù)據(jù)轉(zhuǎn)發(fā)和廣播。7.Mysql負(fù)責(zé)數(shù)據(jù)持久化

。服務(wù)器架構(gòu)服務(wù)器使用Linxu系統(tǒng),NginxWebserver,MySQL數(shù)據(jù)庫,PHPFastCGI環(huán)境,PHP做 功能與邏輯功能開發(fā),聊天和部分實時性功能使用C++。一個 區(qū)采用1~2臺服務(wù)器為一組。WebServer、DBServer主從、Memcache

Server、邏輯運算

Server,老區(qū)節(jié)約成本可用1~2臺服務(wù)器,新區(qū)可用2~4臺分開架構(gòu)根據(jù) 區(qū)壓力而定。Static

Server做CDN,所有區(qū)共用。

IM

Server所有區(qū)共用。網(wǎng)頁 服務(wù)器架構(gòu)用戶通過瀏覽器 服務(wù)器的時候,首先是 網(wǎng)頁服務(wù)器,通過網(wǎng)頁服務(wù)器,再去 邏輯層,通知邏輯層執(zhí)行玩家操作,并從 邏輯層數(shù)據(jù)庫而獲得 數(shù)據(jù)。里獲得 數(shù)據(jù),或者直接通過網(wǎng)頁 服務(wù)器架構(gòu)網(wǎng)頁服務(wù)器的特點是觸發(fā)執(zhí)行,及當(dāng)有用戶 網(wǎng)頁的時候,才會執(zhí)行該網(wǎng)頁的程序代碼。而 常見的WebGame實際上是需要24小時不間斷執(zhí)行的,因另外需要一個應(yīng)用程序需要增加 服務(wù)器設(shè)此網(wǎng)頁服務(wù)器的執(zhí)行方式并不適合做 。因此來執(zhí)行這些24小時不間斷要做的事情。

這也就是計思路的原因。網(wǎng)頁服務(wù)器架構(gòu)客戶端瀏覽器WEB服務(wù)器(邏輯運算層)CACHE數(shù)據(jù)層公共數(shù)據(jù)庫玩家數(shù)據(jù)庫客戶端瀏覽器WEB服務(wù)器(邏輯運算層)玩家數(shù)據(jù)庫戰(zhàn)斗邏輯運算服務(wù)器群服務(wù)端事件系統(tǒng)事件系統(tǒng)的組成部分,它控制著的進程,事件系統(tǒng)是整個WebGame系統(tǒng)里一個使 能夠及時執(zhí)行到期命令。事件是指里玩家的某個活動指令,它可以分為瞬時活動和非瞬時活動。瞬時活動顧名思義就是在玩家發(fā)出指令的瞬間就能完成的活動。玩家從

里 一瓶 ,在玩家發(fā)出這個指令后,玩家的金錢減少,增加1瓶,這一切都在玩家發(fā)出指令后瞬間完成。而非瞬時活動則是在玩家發(fā)出某個指令后一段時間才會被執(zhí)行。例如RPG 里玩家鼠標(biāo)點擊地圖上某個怪物進行 。這個 過程就是一個非瞬時過程,它有了一個戰(zhàn)斗的過程,這個過程需要消耗一定的時間。

在WebGame里,玩家的很多操作可以看作時候瞬 件和非瞬 件的結(jié)合。例如在策略

物建設(shè),非瞬里升級建筑物,瞬 件是村莊資源減少,非瞬件的結(jié)果是建筑物等級上升。件是建筑比如策略 中的減少的士兵移動到需要,瞬 件是當(dāng)前村莊的士兵減少,非瞬的村莊,結(jié)果是,兩個村莊開打了。件是服務(wù)端事件系統(tǒng)事件隊列前面說了瞬大量的非瞬件和非瞬 件的概念,當(dāng)WebGame24小時運行的時候,系統(tǒng)就會產(chǎn)生件,通常把這些非瞬

件 拿出來,按事件的結(jié)束時間進行排序,并組成一個隊列(事件隊列)。再通過一個觸發(fā)器,在事件設(shè)定的結(jié)束時間到達的那一刻執(zhí)行對應(yīng)的事件。實現(xiàn)方式數(shù)據(jù)庫建立數(shù)據(jù)庫內(nèi)存表存放事件隊列,通常會存在開始時間、結(jié)束時間、事件類型、事件參數(shù)等數(shù)據(jù)。PHP寫一個FOR循環(huán)進程查詢事件隊列內(nèi)存表,如果有到期時間的隊列則進行處理并刪除該條隊列數(shù)據(jù)。LINUX消息隊列通過LINUX消息隊列

事件隊列,PHP定時該消息隊列中是否有待處理的事件隊列,進行處理并刪除該條隊列數(shù)據(jù)。服務(wù)端事件系統(tǒng)服務(wù)端事件系統(tǒng)數(shù)據(jù)庫

方式與內(nèi)存

方式對比:SLGRPG中的事件隊列會比較多,體現(xiàn)在數(shù)量和類型上。各種各樣的事件隊列。中:城池建造建筑。城池間

。城池造兵。研究科技。中:戰(zhàn)斗打怪或PK。連續(xù)打怪

。。技能

。LINUX消息隊列

的優(yōu)勢在于降低了PHP進程對數(shù)據(jù)庫查詢壓力,缺點是服務(wù)器宕機,內(nèi)存中 的消息事件隊列將會丟失,RPG打怪事件隊列丟失影響不大,只是當(dāng)前打的這個怪物無效,但是其他類型的事件隊列丟失話有可能影響巨大,還有查詢到期事件的效率問題。驗證后將該事件即客戶端玩家發(fā)起戰(zhàn)斗事件指令,服務(wù)端PHP接收到該事件,進行戰(zhàn)斗相關(guān)運算數(shù)據(jù) 到LINUX消息隊列中,PHP戰(zhàn)斗進程

LINUX消息隊列。如果發(fā)現(xiàn)消息隊列中有戰(zhàn)斗事件:PHP運算進程進行運算。PHP運算進程在運算完之后將運算結(jié)果寫入玩家戰(zhàn)斗結(jié)果DB內(nèi)存表中,并將戰(zhàn)報借助IM。(注:戰(zhàn)斗結(jié)果是存DB中還是存入LINUX消息隊列或MEMCACHE內(nèi)存推送到客戶端進行中?)3.PHP戰(zhàn)斗結(jié)束進程數(shù)據(jù)庫中玩家戰(zhàn)斗結(jié)果表,戰(zhàn)斗結(jié)束時間到,則刪除該條數(shù)據(jù),并處理戰(zhàn)斗

。4.避免玩家重復(fù)發(fā)起戰(zhàn)斗事件,可以在服務(wù)端通過玩家ID驗證是否有正在戰(zhàn)斗的戰(zhàn)斗隊列。(注:是否需要做服務(wù)端戰(zhàn)斗狀態(tài)驗證?怎么做?查詢檢索?)RPG戰(zhàn)斗進程戰(zhàn)斗綜上分析,服務(wù)端戰(zhàn)斗相關(guān)進程會有兩個以上,PHP 戰(zhàn)斗事件并運算進程,PHP結(jié)束進程。

PHP處理戰(zhàn)斗運算進程可以擴展出戰(zhàn)斗運算分布式服務(wù)器。校對玩家機器和服務(wù)器端的時間-防止客戶端時間篡改-更準(zhǔn)確的完成事件交互-客戶端定時器長時間運行后和服務(wù)端時間會有時間差。時間校對SLG網(wǎng)頁

RPG網(wǎng)頁中常見的建筑建造倒計時、策略中連續(xù)怪物

、 等功能。隊伍行軍倒計時。網(wǎng)頁中常見的資源儲備按小時產(chǎn)量時間遞增功能。數(shù)據(jù)庫設(shè)計對于任何項目,一個好的數(shù)據(jù)庫設(shè)計極其重要,對于WEBGAME來說就更是重中之重了。一個好的數(shù)據(jù)庫設(shè)計相當(dāng)于一付好的骨架和脈絡(luò),當(dāng)你的骨架搭建好,脈絡(luò)理順后,再進行 功能代碼的時候?qū)浅m槙?。怎么樣才能設(shè)計好一款WEBGAME的數(shù)據(jù)庫呢?在設(shè)計前因做好如下準(zhǔn)備:業(yè)務(wù)邏輯要相當(dāng)清晰。策劃邏輯部分有,充分了解時及時向策劃功能需求。

反饋、調(diào)整。對于多和發(fā)現(xiàn)對于對于功能先按模塊進行劃分,然后再細(xì)化到每張表結(jié)構(gòu)。邏輯復(fù)雜的功能點需要反復(fù)推敲。數(shù)據(jù)庫設(shè)計開始設(shè)計數(shù)據(jù)庫的時候因注意:表名、字段名規(guī)范化,按 功能模塊劃分邏輯相近的表放在一起。合理的區(qū)分 配置數(shù)據(jù)表和玩家數(shù)據(jù)表。配置數(shù)據(jù)表和 玩家數(shù)據(jù)表在表名上區(qū)分開,或則分庫。合理權(quán)衡表結(jié)構(gòu)的邏輯關(guān)系、性能優(yōu)、易理解、易擴展。表字段類型長度設(shè)置合適,能用int就不要用varchar,能用mediumint就不要用int。合理使用數(shù)據(jù)庫表的縱切與橫切來降低表壓力。合理規(guī)劃表結(jié)構(gòu)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論