單一世界架構(gòu)初探(06)邊界沖突

由于分區(qū)計(jì)算,所以相鄰區(qū)之間的沖突問題解決是很關(guān)鍵的朽合,不論是靜態(tài)分區(qū)俱两,還是動(dòng)態(tài)分區(qū)。邊界沖突的核心是由于分區(qū)引起的曹步。當(dāng)一個(gè)邏輯上獨(dú)立的實(shí)體跨在分區(qū)的邊界上宪彩,那么,從分區(qū)的理論上讲婚,就會(huì)導(dǎo)致該實(shí)體被硬性的分割為2個(gè)實(shí)體尿孔。其中一個(gè)分區(qū)為計(jì)算該實(shí)體的行為時(shí),比如走動(dòng)筹麸,那么他就必須同時(shí)獲取另外一個(gè)分區(qū)中活合,該實(shí)體的狀態(tài);而另外一個(gè)分區(qū)遇到的也是同樣的問題物赶,這就是產(chǎn)生了邊界沖突芜辕。表現(xiàn)的連續(xù)性要求和實(shí)現(xiàn)的分區(qū)技術(shù)是邊界沖突的關(guān)鍵因素。

現(xiàn)在块差,我們先建立個(gè)簡(jiǎn)單的模型來討論這個(gè)問題侵续。假設(shè)存在A、B兩個(gè)分區(qū)憨闰,有個(gè)角色R沿著邊界線行走状蜗。這個(gè)模型很簡(jiǎn)單,但同樣能反應(yīng)大多數(shù)問題鹉动。假設(shè)A負(fù)責(zé)計(jì)算R的狀態(tài)轧坎,當(dāng)R從x1y1移動(dòng)到x2y2,那么A就必須獲取R在B中的狀態(tài)泽示,比如他的走路位置缸血,速度等,同時(shí)械筛,還需要知道B區(qū)中的地面情況捎泻。因?yàn)镽并不知道他正在走的路是被分割成2個(gè)區(qū),所以他有可能在他走的路上左右搖擺成S形埋哟,那么A和B所擁有的R的數(shù)據(jù)將劇烈抖動(dòng)笆豁,一會(huì)兒A區(qū)剩下右腳趾,一會(huì)兒B區(qū)剩下左手掌,這種情況很可怕闯狱。為了避免這個(gè)劇烈抖動(dòng)所造成的影響煞赢,我們必須將R作為一個(gè)整體保存在A區(qū),那么因?yàn)镽劇烈搖擺造成的抖動(dòng)將被大大降低了哄孤。為了降低分區(qū)造成的抖動(dòng)照筑,我們?cè)诜謪^(qū)時(shí),加入邏輯為單位的限制瘦陈,也就是說邏輯上完全獨(dú)立的實(shí)體凝危,不能被分割。于是双饥,我們只要在A區(qū)中計(jì)算R的狀態(tài),然后刷新到B區(qū)中弟断,因?yàn)檫吔缭斐傻臎_突就不復(fù)存在了咏花,AB既能保持一致,也能保證分區(qū)的存在阀趴。

事情并沒有完昏翰,如果R1、R2正好在邊界上戰(zhàn)斗刘急,那么事情就嚴(yán)重了棚菊。R1在A區(qū),而R2在B區(qū)叔汁,顯然统求,這種原則同樣滿足前面的原則,但關(guān)聯(lián)的實(shí)體R1据块、R2依然造成很大的麻煩码邻。當(dāng)R1攻擊R2時(shí),R1的狀態(tài)依賴于R2另假,而R2的狀態(tài)同樣依賴于R1,R1和R2之間的碰撞檢測(cè)同時(shí)依賴于雙方的狀態(tài)。顯然R1扣甲、R2分置于不同的區(qū)給這種關(guān)聯(lián)計(jì)算帶來了復(fù)雜度笤休。但是,將R2移到R1中戈轿,卻也同樣不行凌受,為什么呢?假設(shè)R1是個(gè)法師思杯,他有45碼的攻擊距離胁艰,那么,就必須將這45碼距離內(nèi)的所有實(shí)體都移入到A區(qū),再假設(shè)還有個(gè)NPC同樣在45碼的距離外攻擊R2腾么,那么奈梳,就是90碼距離內(nèi)的實(shí)體同時(shí)移到A區(qū)中,這顯然打破了分區(qū)的要素解虱。

更可怕的是攘须,如果有個(gè)國(guó)戰(zhàn)在這邊界發(fā)生,那么R1...Rn可能分屬于N個(gè)分區(qū)殴泰。巨人網(wǎng)絡(luò)在《征途》中宣稱支持萬(wàn)人國(guó)戰(zhàn)于宙,我不知道他的實(shí)現(xiàn)技術(shù),不過我猜測(cè)他應(yīng)該具有某個(gè)限制悍汛,比如在某個(gè)區(qū)域內(nèi)發(fā)生捞魁,然后將這個(gè)區(qū)域置于一個(gè)服務(wù)器或者服務(wù)器集群上。但不管怎么說离咐,國(guó)戰(zhàn)在分區(qū)策略中造成邊界沖突將是可怕的谱俭。

然而,我們研究下宵蛀,發(fā)現(xiàn)造成這種嚴(yán)重后果的原因有幾點(diǎn):

1昆著、實(shí)體的獨(dú)立性和實(shí)現(xiàn)的分割。每個(gè)角色是獨(dú)立的术陶,但分區(qū)卻可能將他們分割成多個(gè)計(jì)算單元凑懂。

2、實(shí)體的關(guān)聯(lián)性和實(shí)現(xiàn)的分割梧宫。某種動(dòng)作接谨,比如魔法攻擊,將獨(dú)立的實(shí)體關(guān)聯(lián)起來塘匣,不過實(shí)現(xiàn)的分割導(dǎo)致他們不能同屬于一個(gè)區(qū)疤坝。

3、實(shí)體的關(guān)聯(lián)性復(fù)雜度馆铁。當(dāng)實(shí)體關(guān)聯(lián)度比較小時(shí)跑揉,還能通過計(jì)算能力硬扛,不過當(dāng)關(guān)聯(lián)度增加時(shí)埠巨,比如國(guó)戰(zhàn)历谍,一個(gè)范圍魔法可能覆蓋整個(gè)軍團(tuán),幾千人辣垒,這種復(fù)雜度是計(jì)算能力難以忍受的望侈。


我們發(fā)現(xiàn),實(shí)體的獨(dú)立性是無法避免的勋桶,將一個(gè)實(shí)體分割放置于多個(gè)區(qū)脱衙,帶來的問題將更加復(fù)雜侥猬。但是關(guān)聯(lián)性和關(guān)聯(lián)度卻是可以簡(jiǎn)化的。我們就拿國(guó)戰(zhàn)作為例子捐韩。

假設(shè)2個(gè)軍團(tuán)靜止不動(dòng)退唠,那么關(guān)聯(lián)性就不復(fù)存在。當(dāng)一個(gè)角色R1發(fā)出魔法M荤胁,那么源和目標(biāo)之間關(guān)聯(lián)性就存在瞧预,我們將這個(gè)關(guān)聯(lián)予以切割,當(dāng)M在A區(qū)運(yùn)行時(shí)仅政,B并不做計(jì)算垢油,當(dāng)M進(jìn)入B區(qū)時(shí),M的計(jì)算就轉(zhuǎn)入到B圆丹,A區(qū)放棄他的計(jì)算滩愁,直到擊中Rx。M本身也成了一個(gè)獨(dú)立的實(shí)體辫封,如果M是范圍魔法硝枉,那么關(guān)聯(lián)就成多個(gè)一對(duì)一的關(guān)聯(lián)組成,將復(fù)雜的關(guān)聯(lián)轉(zhuǎn)化為簡(jiǎn)單的關(guān)聯(lián)秸讹,降低了復(fù)雜度檀咙。將每個(gè)簡(jiǎn)單關(guān)聯(lián)予以切割雅倒,又解決了關(guān)聯(lián)和分區(qū)的矛盾璃诀。


現(xiàn)在,我們給出一個(gè)解決方案蔑匣。

1劣欢、將所有的實(shí)體在邏輯上劃為成各個(gè)最小粒度的獨(dú)立實(shí)體,比如一個(gè)角色裁良,或者一把劍凿将。

2、將所有的實(shí)體劃分為靜態(tài)和動(dòng)態(tài)實(shí)體价脾。其實(shí)牧抵,所有實(shí)體都是動(dòng)態(tài)實(shí)體是最好的,但計(jì)算量太大了侨把,而且也沒有必要犀变,比如說地圖。我們將他切割成多個(gè)分區(qū)秋柄,由于是靜態(tài)的获枝,所以變化就不會(huì)太大了。

3骇笔、每個(gè)實(shí)體除了為表現(xiàn)而存在的要素外省店,還必須有個(gè)記錄關(guān)聯(lián)的邏輯成員嚣崭。而關(guān)聯(lián)也將被視為一個(gè)邏輯上獨(dú)立的實(shí)體,比如魔法攻擊中火球懦傍,他是關(guān)聯(lián)攻擊者和攻擊目標(biāo)的實(shí)體雹舀,同時(shí)也是邏輯關(guān)聯(lián)。

4谎脯、當(dāng)關(guān)聯(lián)發(fā)生時(shí)葱跋,關(guān)聯(lián)的源或者關(guān)聯(lián)的目標(biāo)將被切割,而只和關(guān)聯(lián)發(fā)生關(guān)系源梭。

這個(gè)方案會(huì)解決了大部分問題娱俺,但不是全部,其余留給后續(xù)的討論废麻。


以前玩英雄無敵3時(shí)荠卷,有個(gè)很好奇的地方,就是在編輯地圖烛愧,效果很好油宜,沒有明顯的邊界存在。比如在一個(gè)沙漠中怜姿,拖個(gè)草地進(jìn)去慎冤,在草地里在扔個(gè)水塘進(jìn)去。顯示出來的邊界卻很圓滑沧卢。這個(gè)技術(shù)很值得學(xué)習(xí)蚁堤。后來,我將英雄無敵3的資源給解析出來但狭,才發(fā)現(xiàn)更有趣的地方披诗,其實(shí)沙漠、草地立磁、水塘有多個(gè)不同形狀構(gòu)成呈队,很平滑。這個(gè)技術(shù)值得學(xué)習(xí)唱歧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宪摧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颅崩,更是在濱河造成了極大的恐慌几于,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挨摸,死亡現(xiàn)場(chǎng)離奇詭異孩革,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)得运,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門膝蜈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锅移,“玉大人,你說我怎么就攤上這事饱搏》翘辏” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵推沸,是天一觀的道長(zhǎng)备绽。 經(jīng)常有香客問我,道長(zhǎng)鬓催,這世上最難降的妖魔是什么肺素? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮宇驾,結(jié)果婚禮上倍靡,老公的妹妹穿的比我還像新娘。我一直安慰自己课舍,他們只是感情好塌西,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筝尾,像睡著了一般捡需。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筹淫,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天站辉,我揣著相機(jī)與錄音,去河邊找鬼贸街。 笑死庵寞,一個(gè)胖子當(dāng)著我的面吹牛狸相,可吹牛的內(nèi)容都是我干的薛匪。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼脓鹃,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼逸尖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瘸右,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤娇跟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后太颤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苞俘,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年龄章,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吃谣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乞封。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖岗憋,靈堂內(nèi)的尸體忽然破棺而出肃晚,到底是詐尸還是另有隱情,我是刑警寧澤仔戈,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布关串,位于F島的核電站,受9級(jí)特大地震影響监徘,放射性物質(zhì)發(fā)生泄漏晋修。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一凰盔、第九天 我趴在偏房一處隱蔽的房頂上張望飞蚓。 院中可真熱鬧,春花似錦廊蜒、人聲如沸趴拧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)著榴。三九已至,卻和暖如春屁倔,著一層夾襖步出監(jiān)牢的瞬間脑又,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工锐借, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留问麸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓钞翔,卻偏偏與公主長(zhǎng)得像严卖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子布轿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容