畢業(yè)設(shè)計(論文)網(wǎng)絡(luò)游戲服務(wù)器數(shù)據(jù)庫的設(shè)計和實現(xiàn)
《畢業(yè)設(shè)計(論文)網(wǎng)絡(luò)游戲服務(wù)器數(shù)據(jù)庫的設(shè)計和實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計(論文)網(wǎng)絡(luò)游戲服務(wù)器數(shù)據(jù)庫的設(shè)計和實現(xiàn)(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、北京科技大學(xué)延慶分校畢業(yè)設(shè)計(論文) 摘 要 隨著網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)游戲已經(jīng)成為大家耳濡目染的新生事物?,F(xiàn)在,可以說網(wǎng)絡(luò)游戲已經(jīng)成為人們休閑、娛樂的有效方式。網(wǎng)絡(luò)游戲必須依托于互聯(lián)網(wǎng),可以多人同時參與游戲,通過人與人之間的互動達(dá)到交流、娛樂和休閑的目的。 在網(wǎng)絡(luò)游戲中,數(shù)據(jù)庫主要用來保存用戶資料,包括用戶注冊信息、用戶游戲資料以及其他設(shè)置資料。網(wǎng)絡(luò)游戲的服務(wù)器端在處理這些資料時,必然要使用數(shù)據(jù)庫進(jìn)行大量數(shù)據(jù)的永久存儲,所以在網(wǎng)絡(luò)游戲的開發(fā)中數(shù)據(jù)庫的設(shè)計也是很重要的環(huán)節(jié)。 本項目就是完成網(wǎng)絡(luò)游戲服務(wù)器數(shù)據(jù)庫的設(shè)計和實現(xiàn)。 本項目選擇MySQL(Structured Query
2、Language)作為數(shù)據(jù)庫管理系統(tǒng),還使用了MySQL提供的C API(Application Programing interface),通過該API的功能進(jìn)行連接管理、實施查詢、處理結(jié)果集等操作。 關(guān)鍵詞:數(shù)據(jù)庫系統(tǒng),網(wǎng)絡(luò)游戲,MySQL。 Design and Implementation of Server Database for the Online Game ABSTRACT With the popularization of internet, o
3、nline game is no longer a new thing to people. Now it can be said that online games have become an effective way of the peoples leisure and entertainment. Online games must rely on the internet, people can take part in the game at the same time, and through the interaction between people to reach th
4、e purposes of exchange, entertainment and leisure. In online games, the database is mainly used to save user’s data, including user’s registration information, user’s game information, as well as other setting information. When online game’s server-side in dealing these data, the database must be u
5、sed to store large amounts of data permanent, so database designing is also a very important aspect in the development of online games. This project is about design and implementation of server database for online game. This project uses the database management system based on MySQL(Structured Qu
6、ery Language), also uses the MySQL C API(Application Programing interface), and this API functions can do connection management, the implementation of inquiries, processing of result sets and so on. Keywords: database system, online game, MySQL. 目 錄 摘 要 1 ABSTRA
7、CT 2 1 緒 論 4 1.1 課題研究背景 4 1.2 課題研究意義 5 2 系統(tǒng)需求分析 7 2.1 需求概述 7 2.2 數(shù)據(jù)庫系統(tǒng)需求 7 3 系統(tǒng)設(shè)計 8 3.1 MySQL概述 8 3.2 數(shù)據(jù)庫概念設(shè)計 8 3.3 數(shù)據(jù)庫邏輯設(shè)計 14 4 系統(tǒng)難點技術(shù)分析與設(shè)計 19 4.1 系統(tǒng)架構(gòu)設(shè)計與分析 19 5 系統(tǒng)運行測試 27 6 工作總結(jié) 29 參 考 文 獻(xiàn) 30 致 謝 31 1緒 論 1.1 課題研究背景 隨著網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)游戲已經(jīng)成為大家
8、耳濡目染的新生事物。網(wǎng)絡(luò)游戲從出現(xiàn)到現(xiàn)在發(fā)展的時間很短,但是起發(fā)展速度卻非常之快。現(xiàn)在,可以說網(wǎng)絡(luò)游戲已經(jīng)成為人們休閑、娛樂的有效方式。網(wǎng)絡(luò)游戲必須依托于互聯(lián)網(wǎng)進(jìn)行、可以多人同時參與的游戲,通過人與人之間的互動達(dá)到交流、娛樂和休閑的目的。 一般的網(wǎng)絡(luò)游戲都是采用客戶/服務(wù)器模式的體系結(jié)構(gòu)(見圖1.1),包括客戶機(jī)程序、服務(wù)器程序、數(shù)據(jù)庫服務(wù)器。 圖1.1 網(wǎng)絡(luò)游戲體系結(jié)構(gòu) 網(wǎng)絡(luò)游戲都是采用如下的方式運行: ① 有一個或多個游戲服務(wù)器啟動特定游戲服務(wù)。 ② 游戲者到游戲網(wǎng)站下載客戶端程序并且申請游戲賬號ID。然后啟動客戶端程序,通過網(wǎng)絡(luò)協(xié)議連接游戲服務(wù)器。 ③ 客戶端程序負(fù)責(zé)
9、處理客戶端顯示和操作界面,具有簡單的邏輯處理功能,同時負(fù)責(zé)接收發(fā)送與服務(wù)器端交互的數(shù)據(jù)包。 ④ 服務(wù)器程序負(fù)責(zé)處理服務(wù)器端邏輯、游戲邏輯、客戶之間的網(wǎng)絡(luò)信息傳遞,以及數(shù)據(jù)庫之間的數(shù)據(jù)讀取保存工作。同時服務(wù)器端還要承擔(dān)客戶端數(shù)據(jù)的接受轉(zhuǎn)發(fā)工作。 ⑤ 網(wǎng)絡(luò)游戲常常用到網(wǎng)絡(luò)協(xié)議有適用于Internet的TCP/IP協(xié)議、適用于局域網(wǎng)的IPX協(xié)議。 網(wǎng)絡(luò)游戲程序的開發(fā)一般采用Microsoft Visual C++作為編譯環(huán)境,分為客戶端程序和服務(wù)器端程序??蛻舳顺绦蛑饕?fù)責(zé)顯示用戶界面,為用戶提供賞心悅目的操作界面,通過客戶端與服務(wù)器之間的網(wǎng)絡(luò)傳遞數(shù)據(jù),實現(xiàn)了多人協(xié)同游戲的目的。 在開發(fā)網(wǎng)絡(luò)
10、游戲時,首先要建立底層的網(wǎng)絡(luò)通信類,利用網(wǎng)絡(luò)通信類連接構(gòu)建客戶服務(wù)器之間的TCP/IP連接,然后在該連接的基礎(chǔ)上利用自己設(shè)定的協(xié)議進(jìn)行客戶端登錄、進(jìn)入大廳、開始游戲、換房間等操作。在以上協(xié)議的基礎(chǔ)上,同時在服務(wù)器端還需要和數(shù)據(jù)庫服務(wù)器交互,用于讀取或保存客戶信息(如客戶積分。密碼。個人資料等數(shù)據(jù))。在網(wǎng)絡(luò)游戲中,數(shù)據(jù)庫主要用來保存用戶資料,包括用戶注冊信息、用戶游戲資料以及其他設(shè)置資料。[1] ⑥ 本項目就是對網(wǎng)絡(luò)游戲數(shù)據(jù)庫系統(tǒng)的設(shè)計。網(wǎng)絡(luò)游戲的服務(wù)器端在處理大量的客戶資料時,必然要使用數(shù)據(jù)庫進(jìn)行大量數(shù)據(jù)的永久存儲,所以在網(wǎng)絡(luò)游戲的開發(fā)中數(shù)據(jù)庫的設(shè)計也是很重要的環(huán)節(jié)。 1.2
11、課題研究意義 網(wǎng)絡(luò)游戲的服務(wù)器端在處理大量的客戶資料時,必然要使用數(shù)據(jù)庫進(jìn)行大量數(shù)據(jù)的存儲和查詢,服務(wù)器在數(shù)據(jù)庫中保存客戶注冊信息、客戶積分信息、客戶設(shè)置信息等信息。同時因為游戲服務(wù)器一般采用多服務(wù)器,所以多臺游戲服務(wù)器同時連接一臺數(shù)據(jù)庫服務(wù)器,進(jìn)行客戶數(shù)據(jù)的查詢和修改,并且保持客戶數(shù)據(jù)的同步。 在客戶注冊用戶、登錄服務(wù)器、保存游戲結(jié)果、退出游戲時游戲服務(wù)器都必須和數(shù)據(jù)庫服務(wù)器進(jìn)行交互,查詢和保存客戶資料;當(dāng)同時有大量用戶同時游戲時,所以必須保證數(shù)據(jù)庫服務(wù)器的性能,以免造成數(shù)據(jù)庫處理緩慢導(dǎo)致游戲服務(wù)器停止響應(yīng)的后果。 現(xiàn)在的網(wǎng)絡(luò)游戲,數(shù)據(jù)越來越多,越來越復(fù)雜。合理地組織這些數(shù)據(jù),并為服務(wù)
12、器提供便于操作的接口,從而實現(xiàn)快速的數(shù)據(jù)訪問是一個非常重要的工作。數(shù)據(jù)庫技術(shù)為開發(fā)人員提供了一個良好的平臺。 至今,數(shù)據(jù)庫設(shè)計的很多工作仍需要人工來做,除了關(guān)系型數(shù)據(jù)庫已有一套較完整的數(shù)據(jù)范式理論可用來部分地指導(dǎo)數(shù)據(jù)庫設(shè)計之外,尚缺乏一套完善的數(shù)據(jù)庫設(shè)計理論、方法和工具,以實現(xiàn)數(shù)據(jù)庫設(shè)計的自動化或交互式的半自動化設(shè)計。所以數(shù)據(jù)庫設(shè)計今后的研究發(fā)展方向是研究數(shù)據(jù)庫設(shè)計理論,尋求能夠更有效地表達(dá)語義關(guān)系的數(shù)據(jù)模型,為各階段的設(shè)計提供自動或半自動的設(shè)計工具和集成化的開發(fā)環(huán)境,使數(shù)據(jù)庫的設(shè)計更加工程化、更加規(guī)范化和更加方便易行,使得在數(shù)據(jù)庫的設(shè)計中充分體現(xiàn)軟件工程的先進(jìn)思想和方法。[1] 本項目使
13、用的是基于MySQL創(chuàng)建的數(shù)據(jù)庫,還使用了MySQL提供的一個C語言的API,使用該API的功能進(jìn)行連接管理、實施查詢、處理結(jié)果集等內(nèi)容。為服務(wù)器提供操作數(shù)據(jù)庫的函數(shù)接口。通過該課題的研究,能使我了解MySQL相關(guān)知識,加深對數(shù)據(jù)庫相關(guān)知識的認(rèn)識,掌握了網(wǎng)游服務(wù)器數(shù)據(jù)庫的開發(fā)流程與方法。鍛煉并提升自己的能力,豐富自己的專業(yè)知識。為以后就業(yè)打下良好基礎(chǔ)。 2 系統(tǒng)需求分析 2.1 需求概述 在軟件工程中,需求分析指的是在建立一個新的或改變一個現(xiàn)存的電腦系統(tǒng)時描寫新系統(tǒng)的目的、范圍
14、和定義時所要做的所有的工作。需求分析是軟件工程中的一個關(guān)鍵過程。在這個過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。 只有在確定了這些需要后他們才能夠分析和尋求新系統(tǒng)的解決方法。 需求分析主要是解決軟件產(chǎn)品應(yīng)該達(dá)到的各項功能和非功能要求,即用戶要求做什么。軟件需求分析工作是軟件開發(fā)與用戶緊密配合。充分交換意見,系統(tǒng)在廣大的相關(guān)人群中謀取平衡與折衷,最終達(dá)到相互諒解的過程。 需求分析是從用戶最初的非形式化需求到滿足用戶要求的軟件產(chǎn)品的映射過程。它實際上是一個對用戶意圖不斷進(jìn)行揭示和判斷的過程,其目的在于細(xì)化、精華軟件的作用范圍,確定擬開發(fā)軟件的功能和性能、約束、環(huán)境。 需求分析工作是軟件生
15、存期中重要的一步,也是決定性的一步。軟件需求分析工作是一個不斷認(rèn)識和逐步細(xì)化的過程。該過程將軟件計劃階段所確定的軟件范圍(工作域)逐步細(xì)化到可詳細(xì)定義的程度,并分析各種不同的軟件元素,然后為這些元素找到可行的解決方法。[4] 2.2 數(shù)據(jù)庫系統(tǒng)需求 本階段主要任務(wù)就是:調(diào)查和分析用戶的業(yè)務(wù)活動和數(shù)據(jù)的使用情況,弄清所用數(shù)據(jù)的種類、范圍、數(shù)量以及它們在業(yè)務(wù)活動中交流的情況,確定用戶對數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶需求規(guī)約。 數(shù)據(jù)庫系統(tǒng)主要完成登錄服務(wù)器,大廳服務(wù)器,游戲服務(wù)器,數(shù)據(jù)庫服務(wù)器與數(shù)據(jù)庫之間的交互。其主要分為兩大塊:登錄服務(wù)器與數(shù)據(jù)庫的交互,大廳服務(wù)器與數(shù)據(jù)庫
16、的交互。 系統(tǒng)需求大致可敘述為: ① 用戶通過游戲客戶端軟件登陸游戲服務(wù)器,服務(wù)器通過傳遞過來的用戶、密碼到數(shù)據(jù)庫中驗證,如果驗證通過即可登錄游戲,否則提示用戶、密碼錯誤。 ② 通過驗證后,從數(shù)據(jù)庫中讀取出用戶的個人資料如賬號名,同時讀取用戶的游戲資料如積分、等級、金錢等參數(shù)。 ③ 用戶選擇游戲大廳進(jìn)行游戲。在大廳可進(jìn)行查收禮物、購買物品、配置自己物品等操作。操作完成后,程序調(diào)用數(shù)據(jù)庫接口保存用戶相應(yīng)信息。 ④ 在用戶一局游戲結(jié)束后,用戶的游戲信息會改變。程序調(diào)用數(shù)據(jù)庫接口保存用戶游戲信息,如勝率變化、積分等資料。 3系統(tǒng)設(shè)計 3.1 MySQL概述 MySQL是一個高
17、性能、多線程、多用戶、建立在客戶-服務(wù)器結(jié)構(gòu)上的RDBMS(Relational DataBase Managrment Systen),專門為了速度和穩(wěn)定性而設(shè)計。在過去的幾年中,它已經(jīng)成為線上和線下適合于數(shù)據(jù)庫驅(qū)動的應(yīng)用程序最受歡迎的RDBMS之一。現(xiàn)今,有超過400萬的網(wǎng)站建立、使用并且配置了基于MySQL的應(yīng)用程序,而且網(wǎng)站的數(shù)量每天都在增加。它得到了像Sony,Xerox,HP(Hewelt Packard)和NASA(National Aeronautics and Space Administration)這樣的公司或組織的積極使用。簡而言之,它無處不在,它的應(yīng)用將會變得更廣泛。
18、 我們不難發(fā)現(xiàn)這樣急速增長的原因。相對于像Oracle和Microsoft SQL Server一樣的更商業(yè)化、非開放源代碼的系統(tǒng)來說,快速、健壯和友好的數(shù)據(jù)庫引擎、高級的數(shù)據(jù)管理和恢復(fù)工具、不斷改進(jìn)的特性合集、遵守現(xiàn)有的SQL標(biāo)準(zhǔn)、友好的商業(yè)許可原則,都是促成MySQL成為可實施的選擇因素。MySQL的較低總體擁有成本和更穩(wěn)定、更安全的系統(tǒng)特性,使越來越多的企業(yè)吧它們的系統(tǒng)移植到MySQL,并且收獲著MySQL開放源代碼帶來的效益。 MySQL始終圍繞三個基本原則而設(shè)計,它們是:性能、可靠性和容易使用。嚴(yán)格按照這些準(zhǔn)則產(chǎn)生了一個價格便宜而富有特色、適應(yīng)標(biāo)準(zhǔn)而容易擴(kuò)展、速度快而效率高的RD
19、BMS,使MySQL成為開發(fā)者和管理者建立、維護(hù)和配置復(fù)雜應(yīng)用程序的完美工具。 今天,MySQL的主要應(yīng)用程序出現(xiàn)在網(wǎng)絡(luò)舞臺上,這并不令人吃驚。隨著網(wǎng)站以及基于Web對分布式應(yīng)用程序變得越來越復(fù)雜,有效管理數(shù)據(jù)來改善處理效率、降低響應(yīng)時間和提高用戶的全面技能就變得越來越重要了。因此,我們迫切需要一個速度快、性能穩(wěn)定和安全的數(shù)據(jù)庫(可以非常省心地配置和使用它,并且為將來的發(fā)展奠定堅實的基礎(chǔ))。 很多原因讓MySQL正合需要。經(jīng)過證實的記錄讓它的可靠性和壽命得到保證,開放源代碼的根本能夠確保迅速調(diào)整缺陷和性能持續(xù)增強(qiáng)大周期(更不必提及較低的總體擁有成本);對不同編程語言和技術(shù)的可移植性和支持,
20、使它適合多種應(yīng)用程序。[2] 基于MySQL的以上優(yōu)點,我們選擇MySQL做為該網(wǎng)絡(luò)游戲的數(shù)據(jù)庫管理系統(tǒng)。 3.2 數(shù)據(jù)庫概念設(shè)計 概念設(shè)計:對用戶要求描述的現(xiàn)實世界(可能是一個工廠、一個商場或者一 個學(xué)校等),通過對其中住處的分類、聚集和概括,建立抽象的概念數(shù)據(jù)模型。這個概念模型應(yīng)反映現(xiàn)實世界各部門的信息結(jié)構(gòu)、信息流動情況、信息間的互相制約關(guān)系以及各部門對信息儲存、查詢和加工的要求等。所建立的模型應(yīng)避開數(shù)據(jù)庫在計算機(jī)上的具體實現(xiàn)細(xì)節(jié),用一種抽象的形式表示出來。以擴(kuò)充的實體—(E-R模型)聯(lián)系模型方法為例,第一步先明確現(xiàn)實世界各部門所含的各種實體及其屬性、實體間的聯(lián)系以及對信息的制
21、約條件等,從而給出各部門內(nèi)所用信息的局部描述(在數(shù)據(jù)庫中稱為用戶的局部視圖)。第二步再將前面得到的多個用戶的局部視圖集成為一個全局視圖,即用戶要描述的現(xiàn)實世界的概念數(shù)據(jù)模型。[6] 根據(jù)需求,我們可設(shè)計出如下的表: ① Account:存儲用戶賬號信息(如圖3.1)。用戶注冊賬號時產(chǎn)生這些信息,每局游戲結(jié)束后將更新相應(yīng)信息。用戶可在游戲大廳中相應(yīng)界面看到這些信息。 圖3.1 表Account屬性 1) AccountId:用戶賬號id; 2) UserName:用戶名字; 3) Password:用戶密碼; 4) Experience:用戶經(jīng)驗; 5) Money:用戶
22、金錢; 6) Level:用戶等級; 7) CurShipAccessId:用戶當(dāng)前戰(zhàn)艦id。 ② Thing:存儲用戶道具信息(如圖3.2)。用戶買入、接收道具以及對道具進(jìn)行各種操作時,這些數(shù)據(jù)將更新。用戶可在游戲大廳中相應(yīng)界面看到這些信息。 圖3.2 表Thing屬性 1) ThingId:用戶物品id; 2) AccountId:用戶物品所屬用戶id; 3) ThingType:用戶物品類型; 4) bBind:用戶物品是否綁定; 5) bInstalled:用戶物品是否激活; 6) ActiveTime:用戶物品有效時間; 7) Acc
23、essId:用戶物品在本地角本數(shù)據(jù)庫表中的id; 8) ShipAccessId:用戶戰(zhàn)艦在本地腳本數(shù)據(jù)庫表中的id。 ③ HSGCVerifyCode:臨時存儲用戶登陸驗證信息(如圖3.3)。用戶登錄時產(chǎn)生這些信息,用于用戶進(jìn)入、更換大廳時使用,用戶退出游戲后,產(chǎn)生的這些信息將被刪除。 圖3.3 表HSGCVerifyCode屬性 1) HSGCVerifyCodeId:登錄驗證Id; 2) AccountId:登錄用戶的Id; 3) VerifyCode:驗證碼。 ④ Gift:存儲用戶禮物信息(如圖3.4)。用戶贈送禮物時,會產(chǎn)生相應(yīng)信息,被贈送用戶會在相應(yīng)界
24、面看到這些信息。 圖3.4 表Gift屬性 1) GiftId:禮物的id; 2) AccountId:接收禮物用戶的id; 3) ThingType:禮物類型; 4) Benefactor:送禮物的用戶; 5) DescText:禮物附帶的描述 以上表都是在游戲過程中與用戶交互時生成的 此外,還有本地腳本數(shù)據(jù)庫中的表(后綴為Access代表為本地數(shù)據(jù)庫里的表),但這些表不在設(shè)計范圍中,故不做詳述。它們包括: ⑤ ShipAccess:存儲游戲中戰(zhàn)艦的信息(如圖3.5)。 圖3.5 表ShipAccess屬性 ⑥ RoleAccess:存儲游戲中
25、角色的信息(如圖3.6)。 圖3.6 表RoleAccess屬性 ⑦ GunAccess:存儲游戲中戰(zhàn)艦上武器的信息(如圖3.7)。 圖3.7 表GunAccess屬性 ⑧ ItemAccess:存儲游戲中物品的信息(如圖3.8)。 圖3.8 表ItemAccess屬性 ⑨ EmplaceAccess:存儲戰(zhàn)艦位置信息(如圖3.9)。 圖3.9 表EmplaceAccess屬性 后綴為Access代表為本地數(shù)據(jù)庫里的表 以上表的實體關(guān)系(如圖3.10):
26、 圖3.10 實體關(guān)系圖 3.3 數(shù)據(jù)庫邏輯設(shè)計 邏輯設(shè)計:主要工作是將現(xiàn)實世界的概念數(shù)據(jù)模型設(shè)計成數(shù)據(jù)庫的一種邏輯模式,即適應(yīng)于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時,可能還需為各種數(shù)據(jù)處理應(yīng)用領(lǐng)域產(chǎn)生相應(yīng)的邏輯子模式。這一步設(shè)計的結(jié)果就是所謂“邏輯數(shù)據(jù)庫”。[6] 在數(shù)據(jù)庫概念設(shè)計完成之后,我們可進(jìn)行數(shù)據(jù)庫邏輯設(shè)計。 ① 創(chuàng)建數(shù)據(jù)庫ocean。 在MySQL Command Line Client中執(zhí)行如下命令: CREATE DATABASE ocean; 執(zhí)行完畢后,數(shù)據(jù)庫oc
27、ean創(chuàng)建成功。(如圖3.11) 圖3.11 數(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, `UserNa
28、me` 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 (`Accoun
29、tId`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8; Data base on mysql 執(zhí)行完畢后,表account創(chuàng)建成功。(如圖3.12) 圖3.12 表account ④ 在數(shù)據(jù)庫ocean中創(chuàng)建表gift。 在MySQL Command Line Client中執(zhí)行如下命令: CREATE TABLE `gift` ( `GiftId` int (10) unsigned NOT NULL auto_increment
30、, `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í)行完畢后,表gi
31、ft創(chuàng)建成功。(如圖3.13) 圖3.13 表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`
32、int (10) unsigned NOT NULL, PRIMARY KEY (`HSGCVerifyCodeId`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; 執(zhí)行完畢后,表hsgcverifycode創(chuàng)建成功。(如圖3.14) 圖3.14 表hsgcverifycode ⑥ 創(chuàng)建表thing。 在MySQL Command Line Client中執(zhí)行如下命令: CREATE TABLE `thing` ( `ThingId` int (10) unsigned NOT
33、 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
34、(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)建成功。(如圖3.15) 圖3.15 表thing 4系統(tǒng)難點技術(shù)分析與設(shè)計 4.1 系統(tǒng)架構(gòu)設(shè)計與分析 根據(jù)分析,我們設(shè)計出系統(tǒng)架構(gòu)圖。(如圖4.1) 圖4.1 系統(tǒng)架構(gòu)圖 從圖我們可以
35、看出系統(tǒng)各個部分的工作情況以及數(shù)據(jù)的交互情況??蓮膬蓚€部分來分析: ① 登錄服務(wù)器與數(shù)據(jù)庫服務(wù)器的交互。其中包括: 用戶由登錄器客戶端登陸登錄服務(wù)器時,登錄服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行登陸驗證操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行查詢操作,并返回查詢結(jié)果。 ② 大廳服務(wù)器與數(shù)據(jù)庫服務(wù)器的交互。其中包括: 1) 用戶由游戲客戶端登陸大廳服務(wù)器時,大廳服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行登陸驗證操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行查詢操作,并返回查詢結(jié)果。 2) 用戶更換大廳時,大廳服務(wù)器請求數(shù)據(jù)庫服務(wù)器執(zhí)行更換大廳操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行相應(yīng)操作,并返回操作后的結(jié)果。 3) 用戶對物品進(jìn)行查詢、配
36、置、激活、丟棄、購買、贈送、接收時,大廳服務(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) 用戶退出游戲時,大廳服務(wù)器請求數(shù)據(jù)庫執(zhí)行退出操作,數(shù)據(jù)庫服務(wù)器再對數(shù)據(jù)庫進(jìn)行相應(yīng)的刪除數(shù)據(jù)操作。 其中值得注意到一點是:游戲服務(wù)器沒有直接與數(shù)據(jù)庫服務(wù)器進(jìn)行交互,而是通過大廳服務(wù)器與數(shù)據(jù)庫服務(wù)器進(jìn)行數(shù)據(jù)的傳遞。之所以是這樣,主要是因為這類網(wǎng)絡(luò)對戰(zhàn)游戲不需要在游戲過程中實時
37、更新數(shù)據(jù),可以通過大廳服務(wù)器,在一局游戲結(jié)束后,再進(jìn)行游戲數(shù)據(jù)的更新。所以,本系統(tǒng)采用的是這種數(shù)據(jù)交換方式。 下面,我們結(jié)合系統(tǒng)需求,對架構(gòu)圖進(jìn)行詳細(xì)的分析: 表4.1 術(shù)語表 縮寫 全寫 定義 LC Login Client 登陸器客戶端 LS Login Server 登錄服務(wù)器 GC Game Client 游戲客戶端 HS Hall Server 大廳服務(wù)器 DS DB Server 數(shù)據(jù)庫處理服務(wù)器 GS Game Server 游戲服務(wù)器 DB Data Base 數(shù)據(jù)庫 1) LC登陸LS時,LS請求DS進(jìn)行驗證,驗證內(nèi)容
38、為用戶名和密碼2項。DS在DB中查詢是否有匹配信息。如果驗證成功,則數(shù)據(jù)庫中產(chǎn)生一個HSGC驗證碼,并然后反饋驗證結(jié)果。否則提示用戶登陸失敗。(如圖4.2) 圖4.2 LC登錄LS流程圖 2) GC登陸HS時,HS請求DS進(jìn)行驗證,驗證內(nèi)容為用戶名和密碼、HSGC驗證碼 3項。DS在DB中查詢是否有匹配信息。 然后反饋驗證結(jié)果,如果是成功的,那么附帶用戶信息,以及禮物信息。否則提示用戶登錄失敗。(如圖4.3) 圖4.3 GC登錄HS流程圖 3) GC已經(jīng)在某個HS里,用戶進(jìn)行更換HS的操作時,HS請求DS進(jìn)行更換大廳操作,
39、DS操作DB產(chǎn)生一個新HSGC驗證碼,然后返回新的HSGC驗證碼給HS。并進(jìn)行更換大廳操作。(如圖4.4) 圖4.4用戶更換大廳流程圖 4) GC已經(jīng)在某個HS里,用戶進(jìn)行配置時需要激活道具、裝備和角色,HS請求DS進(jìn)行激活操作。DS操作DB,更改DB中相應(yīng)數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。(如圖4.5) 圖4.5 用戶激活操作流程圖 5) GC已經(jīng)在某個HS里,用戶點擊丟棄按鈕丟棄一個道具、裝備或者角色,HS請求DS進(jìn)行丟棄操作。DS對DB進(jìn)行操作,更改DB中相應(yīng)的數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。(如圖4.6)
40、 圖4.6 用戶丟棄物品操作流程圖 6) GC已經(jīng)在某個HS里,用戶點擊確定按鈕確認(rèn)當(dāng)前的道具、裝備或者角色在船上的配置,HS請求DS進(jìn)行確認(rèn)操作。DS對DB進(jìn)行操作,更改DB中相應(yīng)的數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。(如圖4.7) 圖4.7 用戶確認(rèn)物品操作流程圖 7) GC已經(jīng)在某個HS里,用戶點擊購買結(jié)算,HS請求DS進(jìn)行結(jié)算操作。DS對DB進(jìn)行操作,更改DB中相應(yīng)的數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。(如圖4.8) 圖4.8 用戶購買結(jié)算操作流程圖 8) GC已經(jīng)在某個HS里,用戶
41、要贈送禮物,HS請求DS進(jìn)行贈送操作。DS對DB進(jìn)行操作,更改DB中相應(yīng)的數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。(如圖4.9) 圖4.9 用戶贈送禮物操作流程圖 9) GC已經(jīng)在某個HS里,用戶在收到禮物界面中,確認(rèn)接收禮物時,HS請求DS進(jìn)行接收操作。DS對DB進(jìn)行操作,更改DB中相應(yīng)的數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。(如圖4.10) 圖4.10 用戶接收禮物操作流程圖 10) GC已經(jīng)在某個HS里,用戶在收到禮物界面中,確定丟棄禮物是,HS請求DS進(jìn)行丟棄禮物操作。DS對DB進(jìn)行操作,更改DB中相應(yīng)的
42、數(shù)據(jù)。操作完成后,傳回更新后的數(shù)據(jù)給HS,并提示操作成功。(如圖4.11) 圖4.11 用戶丟棄禮物操作流程圖 11) GC已經(jīng)在某個HS里,用戶查詢禮物信息時,HS請求DS進(jìn)行查詢禮物信息操作。DS對DB進(jìn)行查詢,查詢完成后,將查詢到的數(shù)據(jù)返回給HS。(如圖4.12) 圖4.12 用戶查詢禮物操作流程圖 12) 用戶一局游戲結(jié)束后,用戶的各種游戲信息會得到更新,GS將這些數(shù)據(jù)傳給HS,HS請求DS進(jìn)行數(shù)據(jù)更新操作并將數(shù)據(jù)傳給DS。DS對DB進(jìn)行相應(yīng)的數(shù)據(jù)更新操作,操作完成后,將更新后的數(shù)據(jù)傳回HS。(如圖4.13) 圖4.13 游
43、戲結(jié)束后數(shù)據(jù)更新流程圖 13) GC已經(jīng)在某個HS里,用戶退出游戲時,HS請求DS進(jìn)行退出操作,DS刪除DB中相應(yīng)的HSGC驗證碼信息。(如圖4.14) 圖4.14 用戶退出游戲操作流程圖 5系統(tǒng)運行測試 數(shù)據(jù)庫系統(tǒng)建立后,界面視圖如圖5.1。 圖5.1 數(shù)據(jù)庫系統(tǒng)界面視圖 現(xiàn)在,我們模擬用戶的一些操作,然后觀察數(shù)據(jù)庫中的變化。以此來觀察數(shù)據(jù)庫系統(tǒng)是否能正常運行。 ① 用戶Ronaldo和Mess登錄,其賬號、密碼驗證成功后,表hsgcverifycode中產(chǎn)生登錄驗證碼以及相應(yīng)數(shù)據(jù)。(如圖5.2) 圖5.2 用戶登錄時,表hsgcverifycode中
44、的變化 ② 用戶Ronaldo更換大廳,其驗證碼更新。(如圖5.3) 圖5.3 用戶更換大廳后,表hsgcverifycode中的變化 ③ 用戶Mess分別購買1號和2號物品,點擊確認(rèn)后,其金錢以及物品信息在對應(yīng)表中發(fā)生變化。(如圖5.4,5.5) 圖5.4 用戶購買物品后,其金錢數(shù)據(jù)更新 圖5.5 用戶購買物品后,其物品信息更新 ④ 用戶Mess將1號物品贈送給Ronaldo,表gift中發(fā)生變化。(如圖5.6) 圖5.6 用戶贈送物品后,gift表中發(fā)生變化 ⑤ 用戶Ronaldo接收禮物,其物品信息發(fā)生變化。(如圖5.7)
45、圖5.7 用戶接受禮物后,物品信息更新 ⑥ 用戶Mess和Ronaldo激活自己的物品,物品信息發(fā)生變化。(如圖5.8) 圖5.8 用戶激活物品后,物品信息更新 ⑦ 用戶Mess丟棄自己的物品后,物品信息發(fā)生變化。(如圖5.9) 圖5.9 用戶丟棄物品后,物品信息更新 ⑧ 用戶Mess退出游戲,表hsgcverifycode中其驗證碼被刪除。(如圖5.10) 圖5.10 用戶退出后,表hsgcverifycode發(fā)生變化 6工作總結(jié) 首先,本文在深入理解分析系統(tǒng)需求的基礎(chǔ)上,運用軟件工程、模塊化設(shè)計思想等進(jìn)行了數(shù)據(jù)庫概念設(shè)計、數(shù)據(jù)庫邏
46、輯設(shè)計、系統(tǒng)架構(gòu)設(shè)計,對系統(tǒng)的核心技術(shù)進(jìn)行了分析,解決了技術(shù)難點,并對系統(tǒng)的設(shè)計及實現(xiàn)提出了解決方案。 其次,本文通過系統(tǒng)架構(gòu)圖,并結(jié)合需求,分析出了系統(tǒng)各個部分的工作情況以及數(shù)據(jù)的交互情況。每個部分的功能通過數(shù)據(jù)庫服務(wù)器調(diào)用對應(yīng)函數(shù)來實現(xiàn)。 該數(shù)據(jù)庫系統(tǒng)層次分明,結(jié)構(gòu)清晰,有利于系統(tǒng)維護(hù)和將來的擴(kuò)充升級。 實踐證明,該系統(tǒng)很好滿足了用戶需求,提高了整個游戲的工作效率,得到了好評。 參 考 文 獻(xiàn) [1] 蘇羽,王媛媛.Visual C++網(wǎng)絡(luò)游戲建模與實現(xiàn).北京:科海電子出版社,20
47、03. [2] Vikram Vaswani. MySQL完全手冊. 北京:電子工業(yè)出版社,2004.11. [3] Paul DuBois. MySQL權(quán)威指南.北京:機(jī)械工程出版社,2004. [4] 楊冬青,唐世渭,徐其鈞.數(shù)據(jù)庫系統(tǒng)實現(xiàn).北京:機(jī)械工業(yè)出版社,2001. [5] 薩師煊,王珊著.數(shù)據(jù)庫系統(tǒng)概論.北京:高等教育出版社,2002. [6] Thomas Connolly, Carolyn Begg. 數(shù)據(jù)庫系統(tǒng)設(shè)計、實現(xiàn)與、管理.北京:電子工業(yè)出版社,2004. [7] 王軍鵬,劉路放.基于統(tǒng)一建模語言的關(guān)系數(shù)據(jù)庫模型設(shè)計.現(xiàn)代計算機(jī),2001,1:16~18
48、 [8] Jacob Kohler, Matthias Lange, Ralf Hofestadt, Steffen Schulze-Kremer. Logical and Semantic Database Integration. 2000. [9] Ali Bazghandi. Web Database Connectivity Methods (using Mysql) in Windows Platform. 2006. [10] 王珊. 網(wǎng)絡(luò)與數(shù)據(jù)庫. 北京:中國人民大學(xué)信息學(xué)院,1997. [11] Eriki Eessaar. On Pattern-Based Datab
49、ase Design and Implementation. Department of Informatics, Tallinn University of Technology, 2008. [12] Alan Y. S. Chiang, Dickson K. W. Chiu, Senior Member, IEEE, Patrick C. K. Hung, and Yi Zheng. Providing More Customized Services for Online Games Using Service Oriented Architecture and Three-Tier
50、 Views: A Case Study “Mankind”. 2007. [13] Shi-Jim Yen, Tai-Ning Yang, Jr-Chang Chen, Shun-Chin Hsu. Pattern Matching in Go Game Records. 2007. 致 謝 本文的研究工作是在廖柏育老師及798GAME工作室何文師兄的精心指導(dǎo)和悉心關(guān)懷下完成的,在我的學(xué)業(yè)和論文的研究工作中無不傾注著廖老師及798GAME工作室何文師兄辛勤的汗水和心血。無論是前期課題的選擇,還是系統(tǒng)的研發(fā),乃至最后論文的撰寫, 廖老師及798GAME工作室何文師兄都給予了我極大的指導(dǎo)和支持。在此我要向廖柏育老師及798GAME工作室何文師兄致以最衷心的感謝和深深的敬意。 在幾年的學(xué)習(xí)生活中,我還得到了學(xué)院許多領(lǐng)導(dǎo)和老師的熱情關(guān)心和幫助,得到了同學(xué)們的大力支持。在此,向所有關(guān)心和幫助過我的領(lǐng)導(dǎo)、老師、同學(xué)和朋友也表示最由衷的謝意! 最后,對在百忙之中評閱論文和參加答辯的各位專家老師,表示誠摯的謝意! 32
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案