角色視野理論和世界粒度有密切的關(guān)系,主要為了解決客戶端的計(jì)算量而單獨(dú)提出來的。以前的例子曾經(jīng)提到過國(guó)戰(zhàn)的例子,都是從服務(wù)器角度來解析如何實(shí)現(xiàn),卻從來沒有考慮客戶端的情況,而角色視野就是從客戶端角度來解決國(guó)戰(zhàn)的例子。
我考察下,國(guó)戰(zhàn)時(shí),對(duì)客戶端會(huì)有什么影響呢?首先,在角色視野將充斥大量的人和事物;其次,各種魔法和戰(zhàn)斗將頻繁發(fā)生;再次,和服務(wù)器的通訊量將激增;最后,本機(jī)計(jì)算量將飆升。很多質(zhì)疑單一世界架構(gòu)的可能性,就是認(rèn)為,在現(xiàn)有架構(gòu)下,無法解決這些問題。我們撇開不談,先研究下,對(duì)于一個(gè)角色來說,參與國(guó)戰(zhàn)的話,需要什么呢?
對(duì)于一個(gè)角色來說,他真正面對(duì)的,只是他視野內(nèi)所有的東西,我舉個(gè)荊棘谷的例子。我在荊棘谷的時(shí)候,曾經(jīng)在部落營(yíng)地發(fā)生過好幾次戰(zhàn)斗,在阿拉希高地也進(jìn)攻過部落營(yíng)地,幽暗城有一次,可惜剛?cè)腴T口就死了,老是進(jìn)不去,暈,沒亡靈角色,不會(huì)走。格羅姆高營(yíng)地的戰(zhàn)斗有不少特點(diǎn),首先,他的樹多,視野不是很寬,還蠻多懸崖、廢墟。但我們戰(zhàn)斗的時(shí)候真正面向的只是眼前一個(gè)錐形視野,有時(shí)候,被部落從背后偷襲卻沒發(fā)現(xiàn)。當(dāng)然,在你轉(zhuǎn)身跳躍時(shí),場(chǎng)景會(huì)急劇變化,成360度全景視野。
另外一個(gè)特點(diǎn),我們真正看清楚的是周圍大概30碼球形范圍內(nèi)的東西,而超過30碼外的,輪廓就很小了,可以看到他們正在和怪物戰(zhàn)斗,但具體使用什么法術(shù)或者技能的細(xì)節(jié)卻看不出來。比如術(shù)士使用死亡纏繞,怪物被恐懼到處跑,你可以看到怪跑動(dòng)的過程,卻看不到死亡纏繞發(fā)出的過程。而更遠(yuǎn)的山脈僅僅只能看到一個(gè)輪廓。這幾個(gè)特點(diǎn),和真實(shí)人類視野也是相似的。人真正看到的也是眼睛目力所及的一個(gè)錐形區(qū)域,越遠(yuǎn)的地方看到的也越小。
我們?cè)谑澜缌6仍噲D探討,如何降低粒度來降低數(shù)據(jù)量,這個(gè)課題跟角色視野息息相關(guān)。假設(shè)有1千人在視野范圍內(nèi)進(jìn)行戰(zhàn)斗,你真正能夠看到,看仔細(xì)的只會(huì)是很小距離內(nèi)的一部分人,而其他人甚至頭只要?jiǎng)酉戮湍芙o你很好的視覺體驗(yàn)。
我們知道,角色視野是個(gè)球形區(qū)域,越遠(yuǎn)的視野將越小,粒度越粗。當(dāng)粒度足夠粗的時(shí)候,大可不必象細(xì)粒度那樣計(jì)算。所以我在世界粒度篇曾經(jīng)提過,如果降低粒度來?yè)Q取計(jì)算量的減少。
還有另外方案,我們知道當(dāng)視野超過一定距離時(shí),粒度將相應(yīng)降低,那么我們將角色限制在一個(gè)球形空間中,角色看到視野超過球形空間半徑以外的東西,都是類似于視頻那樣的圖象,而不是靠實(shí)時(shí)計(jì)算出來的。這種方案的基礎(chǔ)是認(rèn)為,網(wǎng)絡(luò)傳輸給客戶端的代價(jià)要遠(yuǎn)低于客戶端的計(jì)算代價(jià),這種方案有一定的理論基礎(chǔ)。對(duì)視頻來說,已經(jīng)有足夠的技術(shù)壓縮一定范圍內(nèi)的視頻圖象,而角色看到的是粗粒度的圖象實(shí)際上具有很大的壓縮空間。對(duì)于近距離的角色變化,完成可以通過本地進(jìn)行細(xì)粒度計(jì)算來完成。這樣,可以降低了本地GPU的計(jì)算壓力。
在國(guó)戰(zhàn)模式下,在角色視野范圍可能密布其他角色,由本地承擔(dān)計(jì)算任務(wù),以現(xiàn)在的GPU能力,控制在百人之內(nèi)應(yīng)該還是可以的。視野之外,由服務(wù)器計(jì)算完成,通過壓縮到本地解開,合并成一個(gè)完整的角色視野。