操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    ###一、游戲物品/道具系統(tǒng)數(shù)據(jù)模型設(shè)計(jì)特點(diǎn)

    為了讓游戲更加的豐富,我們1201團(tuán)隊(duì)的新手機(jī)游戲設(shè)計(jì)了道具系統(tǒng)。于是豐富了游戲、取悅了玩家,哭了開(kāi)發(fā)——道具/物品數(shù)據(jù)子系統(tǒng)是簡(jiǎn)單的、復(fù)雜的、不確定的:

    1. 簡(jiǎn)單,說(shuō)起來(lái)不就是選擇一個(gè)或多個(gè)數(shù)據(jù)庫(kù)產(chǎn)品,然后定義一種數(shù)據(jù)模型,然后增、刪、改、查。

    2. 復(fù)雜,物品/道具可以在細(xì)分為裝備、時(shí)裝、坐騎、寶石、buff等等,每類(lèi)物品有不同的屬性需求,于是:

    + 首先物品數(shù)據(jù)是游戲核心數(shù)據(jù)里數(shù)據(jù)量最大、操作最頻繁、數(shù)據(jù)結(jié)構(gòu)最多元化的數(shù)據(jù)

    + 如果用一種數(shù)據(jù)表結(jié)構(gòu),那么會(huì)浪費(fèi)很多的字段或數(shù)據(jù)空間(而物品表超大);

    + 如果用不同的數(shù)據(jù)表結(jié)構(gòu),那么游戲邏輯就要麻煩一些了數(shù)據(jù)庫(kù)null和空的差別,比如物品在玩家中轉(zhuǎn)移的時(shí)候、修改、丟棄的時(shí)候。

    + 是否進(jìn)行應(yīng)用邏輯層水平切分?切分了就可以將數(shù)據(jù)庫(kù)分布到多個(gè)數(shù)據(jù)庫(kù)服務(wù)器上,那么理論上數(shù)據(jù)規(guī)模就不會(huì)成為瓶頸了;但如果切分了,道具數(shù)據(jù)分析、后期的合區(qū)邏輯就會(huì)很復(fù)雜。

    + 裝備、時(shí)裝是會(huì)有多個(gè)屬性的,且每件裝備的屬性值、屬性類(lèi)型都不一樣,如何設(shè)計(jì)數(shù)據(jù)字段(當(dāng)然如果用nosql數(shù)據(jù)庫(kù)就不存在這個(gè)問(wèn)題了)?

    3. 不確定:

    數(shù)據(jù)庫(kù)null和空的差別_js null undefined 空_sql 判斷空或null

    + 隨著游戲開(kāi)發(fā)及運(yùn)營(yíng)的進(jìn)行,各種新的道具的需求會(huì)不斷涌現(xiàn)出來(lái),有可能就會(huì)需要增加新的屬性和功能需求

    + 到底每一個(gè)玩家最終會(huì)有多少的物品?

    + 最終單個(gè)區(qū)服的數(shù)據(jù)規(guī)模有多大這個(gè)其實(shí)很難預(yù)計(jì)。我們做的很完善(當(dāng)然開(kāi)發(fā)代價(jià)也大)的設(shè)計(jì)與開(kāi)發(fā)會(huì)不會(huì)有些多余,甚至被老板認(rèn)為想多了?

    ###二、游戲物品/道具系統(tǒng)數(shù)據(jù)模型設(shè)計(jì)目標(biāo)及解決思路

    上面分析做了,槽也吐了數(shù)據(jù)庫(kù)null和空的差別,還是要做事嘛,呵呵。根據(jù)我們的新游戲的具體需求,對(duì)物品數(shù)據(jù)庫(kù)表的設(shè)計(jì)定義了如下要求和解決思路:

    序號(hào) | 要求 | 解決思路

    ------| ----- | -----------------------------------

    1| 確保數(shù)據(jù)操作的性能 | 充分利用緩存服務(wù)器

    2| 降低程序開(kāi)發(fā)和后期客服工作的復(fù)雜度 | 各類(lèi)道具不分表

    數(shù)據(jù)庫(kù)null和空的差別_js null undefined 空_sql 判斷空或null

    3| 必須可以方便、靈活的支持道具新功能需求的開(kāi)發(fā) | 將多變的裝備屬性以json格式存于一個(gè)字段

    4| 保留充分的可擴(kuò)展性 | 根據(jù)玩家id進(jìn)行數(shù)據(jù)庫(kù)表水平切分

    5| 盡量降低合區(qū)操作時(shí)數(shù)據(jù)處理邏輯的難度和效率 | 用自增長(zhǎng)ID、玩家id、區(qū)服id做聯(lián)合主鍵

    ###三、具體開(kāi)發(fā)設(shè)計(jì)方案

    根據(jù)以上的分析結(jié)果,我們?cè)诳偨Y(jié)了以前的游戲開(kāi)發(fā)經(jīng)驗(yàn)并參考了網(wǎng)上的一些文章后形成了我們新手機(jī)游戲的物品數(shù)據(jù)子系統(tǒng)的設(shè)計(jì)、開(kāi)發(fā)方案。

    *所有數(shù)據(jù)訪(fǎng)問(wèn)都封裝在model層。*

    1. 在程序的model層里定義公共函數(shù)GetDb(,),用于物品數(shù)據(jù)及其它需要進(jìn)行按用戶(hù)水平分割的數(shù)據(jù)獲取數(shù)據(jù)庫(kù)(連接)

    2. 每一個(gè)物品的主鍵由,,三個(gè)字段組成

    3. 將裝備buff及某道具特有屬性統(tǒng)一以json字符串形式保存在一個(gè)字段里

    數(shù)據(jù)庫(kù)null和空的差別_sql 判斷空或null_js null undefined 空

    4. 道具表定義 *失效時(shí)間* 字段,這個(gè)字段同時(shí)表示道具有效期的三種情況:

    + =0 ,表示是不限時(shí)的永久性道具

    + 小于等于,表示有效時(shí)間段,如雙倍經(jīng)驗(yàn)卡有效時(shí)長(zhǎng)3小時(shí),那么著個(gè)字段值為 **180** (分鐘),使用此道具時(shí),用當(dāng)前時(shí)間加上這個(gè)字段值得到失效時(shí)間戳修改此字段或做其他處理

    + 大于,表示該道具的失效時(shí)間戳(unix時(shí)間戳格式)

    5. 玩家道具數(shù)據(jù)查詢(xún)流程:

    + 首先檢查redis里有沒(méi)有

    + 如果有,返回

    + 如果沒(méi)有從數(shù)據(jù)庫(kù)里查詢(xún)并存到redis,返回

    6. 修改/或增加道具數(shù)據(jù)流程:

    js null undefined 空_sql 判斷空或null_數(shù)據(jù)庫(kù)null和空的差別

    + 首先檢查redis里有沒(méi)有

    + 如果沒(méi)有,從數(shù)據(jù)庫(kù)里查詢(xún)并存到redis

    + 如果有,繼續(xù)

    + 修改/增加redis數(shù)據(jù),同時(shí)在key為“”的redis list 數(shù)據(jù)里記錄下該道具的主鍵

    + 定時(shí)根據(jù)“”數(shù)據(jù)寫(xiě)回mysql,并清除“”

    7. 刪除一個(gè)道具數(shù)據(jù)流程:

    + 在redis 里key為“” 的redis list 數(shù)據(jù)里記錄下該道具的主鍵

    + 刪除redis里記錄

    + 定時(shí)根據(jù)”數(shù)據(jù)刪除mysql里記錄,并清除“”

    數(shù)據(jù)庫(kù)null和空的差別_js null undefined 空_sql 判斷空或null

    8.注意:

    + 配置redis 為 **在每次更新操作后進(jìn)行日志記錄**

    + 緩存定時(shí)同步mysql處理程序可以作為一個(gè)獨(dú)立的進(jìn)程運(yùn)行

    + 這個(gè)解決方案可以針對(duì)其它用戶(hù)私有數(shù)據(jù),如技能、buff。

    ###四、總結(jié)

    數(shù)據(jù)庫(kù)表水平分割和緩存應(yīng)用基本上已經(jīng)是服務(wù)器端程序員的常識(shí),在上查相關(guān)技術(shù)資料時(shí),大多數(shù)博文也是寫(xiě)的這些。

    本文先是對(duì)游戲道具/物品數(shù)據(jù)模型的進(jìn)行了簡(jiǎn)單的需求分析,然后講了思路和方案,其實(shí)我最想表達(dá)的是我的三個(gè)設(shè)計(jì)細(xì)節(jié)或idea:

    + 道具數(shù)據(jù)記錄主鍵設(shè)計(jì)(方便合區(qū))

    + 裝備buff及道具特有的屬性字段設(shè)計(jì)(為道具豐富的功能需求提供靈活、便捷的數(shù)據(jù)基礎(chǔ))

    + 所有道具類(lèi)別不區(qū)分存儲(chǔ)(方便后期的客服查詢(xún)和數(shù)據(jù)統(tǒng)計(jì))

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶(hù)案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話(huà):010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有