【文章內(nèi)容簡介】
不在設(shè)計(jì)范圍中,故不做詳述。它們包括:⑤ ShipAccess:存儲游戲中戰(zhàn)艦的信息()。 表ShipAccess屬性⑥ RoleAccess:存儲游戲中角色的信息()。 表RoleAccess屬性⑦ GunAccess:存儲游戲中戰(zhàn)艦上武器的信息()。 表GunAccess屬性⑧ ItemAccess:存儲游戲中物品的信息()。 表ItemAccess屬性⑨ EmplaceAccess:存儲戰(zhàn)艦位置信息()。 表EmplaceAccess屬性后綴為Access代表為本地?cái)?shù)據(jù)庫里的表以上表的實(shí)體關(guān)系(): 實(shí)體關(guān)系圖 數(shù)據(jù)庫邏輯設(shè)計(jì)邏輯設(shè)計(jì):主要工作是將現(xiàn)實(shí)世界的概念數(shù)據(jù)模型設(shè)計(jì)成數(shù)據(jù)庫的一種邏輯模式,即適應(yīng)于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時(shí),可能還需為各種數(shù)據(jù)處理應(yīng)用領(lǐng)域產(chǎn)生相應(yīng)的邏輯子模式。這一步設(shè)計(jì)的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。[6]在數(shù)據(jù)庫概念設(shè)計(jì)完成之后,我們可進(jìn)行數(shù)據(jù)庫邏輯設(shè)計(jì)。① 創(chuàng)建數(shù)據(jù)庫ocean。在MySQL Command Line Client中執(zhí)行如下命令:CREATE DATABASE ocean;執(zhí)行完畢后,數(shù)據(jù)庫ocean創(chuàng)建成功。() 數(shù)據(jù)庫ocean② 然后連接數(shù)據(jù)庫ocean。在MySQL Command Line Client中執(zhí)行如下命令:USE ocean;執(zhí)行完畢后,提示數(shù)據(jù)庫連接成功。③ 在數(shù)據(jù)庫ocean中創(chuàng)建表account。在MySQL Command Line Client中執(zhí)行如下命令:CREATE TABLE `account` ( `AccountId` int (10) unsigned NOT NULL auto_increment, `UserName` varchar (45) character set latin1 NOT NULL, `Password` varchar (45) character set latin1 NOT NULL, `Experience` int (10) unsigned NOT NULL, `Money` int (10) unsigned NOT NULL, `Level` int (10) unsigned NOT NULL, `CurShipAccessId` int (10) unsigned NOT NULL, PRIMARY KEY (`AccountId`)) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8。Data base on mysql執(zhí)行完畢后,表account創(chuàng)建成功。() 表account④ 在數(shù)據(jù)庫ocean中創(chuàng)建表gift。在MySQL Command Line Client中執(zhí)行如下命令:CREATE TABLE `gift` ( `GiftId` int (10) unsigned NOT NULL auto_increment, `AccountId` int (10) unsigned NOT NULL, `ThingType` int (10) unsigned NOT NULL, `AccessId` int (10) unsigned NOT NULL, `Benefator` varchar (45) NOT NULL, `DescText` varchar (45) NOT NULL, PRIMARY KEY (`GiftId`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8。執(zhí)行完畢后,表gift創(chuàng)建成功。() 表gift⑤ 在數(shù)據(jù)庫ocean創(chuàng)建表hsgcverifycode。在MySQL Command Line Client中執(zhí)行如下命令:CREATE TABLE `hsgcverifycode` ( `HSGCVerifyCodeId` int (10) unsigned NOT NULL auto_increment, `AccountId` int (10) unsigned NOT NULL, `VerifyCode` int (10) unsigned NOT NULL, PRIMARY KEY (`HSGCVerifyCodeId`)) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1。執(zhí)行完畢后,表hsgcverifycode創(chuàng)建成功。() 表hsgcverifycode⑥ 創(chuàng)建表thing。在MySQL Command Line Client中執(zhí)行如下命令:CREATE TABLE `thing` ( `ThingId` int (10) unsigned NOT NULL auto_increment, `AccountId` int (10) unsigned NOT NULL, `ThingType` int (10) unsigned NOT NULL, `bBind` int (10) unsigned NOT NULL, `bInstalled` int (10) unsigned NOT NULL, `ActiveTime` int (10) unsigned NOT NULL, `AccessId` int (10) unsigned NOT NULL, `ShipAccessId` int (10) unsigned NOT NULL, `EmplaceIndex` int (10) unsigned NOT NULL, PRIMARY KEY (`ThingId`)) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=latin1。執(zhí)行完畢后,表thing創(chuàng)建成功。() 表thing4 系統(tǒng)難點(diǎn)技術(shù)分析與設(shè)計(jì) 系統(tǒng)架構(gòu)設(shè)計(jì)與分析根據(jù)分析,我們設(shè)計(jì)出系統(tǒng)架構(gòu)圖。() 系統(tǒng)架構(gòu)圖從圖我們可以看出系統(tǒng)各個(gè)部分的工作情況以及數(shù)據(jù)的交互情況??蓮膬蓚€(gè)部分來分析:① 登錄服務(wù)器與數(shù)據(jù)庫服務(wù)器的交互。其中包括:用戶由登錄器客戶端登陸登錄服務(wù)器時(shí),登錄服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行登陸驗(yàn)證操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行查詢操作,并返回查詢結(jié)果。② 大廳服務(wù)器與數(shù)據(jù)庫服務(wù)器的交互。其中包括:1) 用戶由游戲客戶端登陸大廳服務(wù)器時(shí),大廳服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行登陸驗(yàn)證操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行查詢操作,并返回查詢結(jié)果。2) 用戶更換大廳時(shí),大廳服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行更換大廳操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行相應(yīng)操作,并返回操作后的結(jié)果。3) 用戶對物品進(jìn)行查詢、配置、激活、丟棄、購買、贈送、接收時(shí),大廳服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行相應(yīng)操作,數(shù)據(jù)庫服務(wù)器在對數(shù)據(jù)局進(jìn)行相應(yīng)的操作,并返回操作后的結(jié)果。4) 一局游戲結(jié)束后,游戲服務(wù)器將游戲過程中各種信息的變化傳給大廳服務(wù)器,大廳服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行數(shù)據(jù)更新操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行更新操作,并返回更新后的結(jié)果。5) 用戶退出游戲時(shí),大廳服務(wù)器請求數(shù)據(jù)庫執(zhí)行退出操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行相應(yīng)的刪除數(shù)據(jù)操作。其中值得注意到一點(diǎn)是:游戲服務(wù)器沒有直接與數(shù)據(jù)庫服務(wù)器進(jìn)行交互,而是通過大廳服務(wù)器與數(shù)據(jù)庫服務(wù)器進(jìn)行數(shù)據(jù)的傳遞。之所以是這樣,主要是因?yàn)檫@類網(wǎng)絡(luò)對戰(zhàn)游戲不需要在游戲過程中實(shí)時(shí)更新數(shù)據(jù),可以通過大廳服務(wù)器,在一局游戲結(jié)束后,再進(jìn)行游戲數(shù)據(jù)的更新。所以,本系統(tǒng)采用的是這種數(shù)據(jù)交換方式。下面,我們結(jié)合系統(tǒng)需求,對架構(gòu)圖進(jìn)行詳細(xì)的分析: 術(shù)語表縮寫全寫定義LCLogin Client登陸器客戶端LSLogin Server登錄服務(wù)器GCGame Client游戲客戶端HSHall Server大廳服務(wù)器DSDB Server數(shù)據(jù)庫處理服務(wù)器GSGame Server游戲服務(wù)器DBData Base數(shù)據(jù)庫1) LC登陸LS時(shí),LS請求DS進(jìn)行驗(yàn)證,驗(yàn)證內(nèi)容為用戶名和密碼2項(xiàng)。DS在DB中查詢是否有匹配信息。如果驗(yàn)證成功,則數(shù)據(jù)庫中產(chǎn)生一個(gè)HSGC驗(yàn)證碼,并然后反饋驗(yàn)證結(jié)果。否則提示用戶登陸失敗。() LC登錄LS流程圖2) GC登陸HS時(shí),HS請求DS進(jìn)行驗(yàn)證,驗(yàn)證內(nèi)容為用戶名和密碼、HSGC驗(yàn)證碼 3項(xiàng)。DS在DB中查詢是否有匹配信息。 然后反饋驗(yàn)證結(jié)果,如果是成功的,那么附帶用戶信息,以及禮物信息。否則提示用戶登錄失敗。() GC登錄HS流程圖3) GC已經(jīng)在某個(gè)HS里,用戶進(jìn)行更換HS的操作時(shí),HS請求DS進(jìn)行更換大廳操作,DS操作DB產(chǎn)生一個(gè)新HSGC驗(yàn)證碼,然后返回新的HSGC驗(yàn)證碼給HS。并進(jìn)行更換大廳操作。() 4) GC已經(jīng)在某個(gè)HS里,用戶進(jìn)行配置時(shí)需要激活道具、裝備和角色,HS請求DS進(jìn)行激活操作。DS操作DB,更改DB中相應(yīng)數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。() 用戶激活操作流程圖5) GC已經(jīng)在某個(gè)HS里,用戶點(diǎn)擊丟棄按鈕丟棄一個(gè)道具、裝備或者角色,HS請求DS進(jìn)行丟棄操作。DS對DB進(jìn)行操作,更改DB中相應(yīng)的數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。() 用戶丟棄物品操作流程圖6) GC已經(jīng)在某個(gè)HS里,用戶點(diǎn)擊確定按鈕確認(rèn)當(dāng)前的道具、裝備或者角色在船上的配置,HS請求DS進(jìn)行確認(rèn)操作。DS對DB進(jìn)行操作,更改DB中相