最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

NavalArt開(kāi)發(fā)進(jìn)度 – 多人游戲和航母

2023-01-17 17:37 作者:NavalArt  | 我要投稿

各位艦長(zhǎng)大家好,距離上一次官方的開(kāi)發(fā)進(jìn)度帖子更新已經(jīng)有一段時(shí)間了。除開(kāi)游戲去年上一次的0.9大版本更新,每隔一段時(shí)間游戲的測(cè)試版也能收到定期的更新(如果您還不知道怎么啟用測(cè)試版,您可以在游戲庫(kù)中右鍵點(diǎn)擊屬性選項(xiàng),并使用測(cè)試代碼“navalarttest”)。

對(duì)于已經(jīng)啟用了測(cè)試版的艦長(zhǎng)來(lái)說(shuō),您可能已經(jīng)注意到測(cè)試版已經(jīng)幾周沒(méi)有收到新的更新了,這是因?yàn)槟壳拔以跒橛螒蚣尤攵嗳擞螒虻目蚣?,而加入框架需要改?dòng)游戲一些非常底層的代碼。

【為什么是多人游戲?】

一開(kāi)始,我在航母功能上花了一段時(shí)間來(lái)構(gòu)思并測(cè)試將要在航母更新中加入的新功能,同時(shí)我也在試圖加入多人游戲一些基本的功能來(lái)為之后的更新做準(zhǔn)備,然而我發(fā)現(xiàn)游戲現(xiàn)在的運(yùn)行的機(jī)制不太適合在之后的更新中直接加入多人游戲,如果進(jìn)行暴力移植的話將會(huì)產(chǎn)生許多麻煩,并且游戲目前的防空,導(dǎo)彈,飛行器機(jī)制雖然在本地運(yùn)行良好,但是他們其實(shí)并無(wú)法在多個(gè)玩家之間進(jìn)行同步,原因?qū)?huì)在下文進(jìn)行更詳細(xì)的闡述。

這可能也是許多著名的沙盒游戲,例如坎巴拉太空計(jì)劃,簡(jiǎn)單飛機(jī)沒(méi)有官方多人游戲的原因:一個(gè)多人游戲從一開(kāi)始開(kāi)發(fā)最好就是基于多人的,多人游戲所需要的運(yùn)行邏輯和單人并不相同。這對(duì)于一整個(gè)獨(dú)立游戲開(kāi)發(fā)組來(lái)說(shuō)可能都是一個(gè)難題,更不用說(shuō)目前游戲開(kāi)發(fā)的主要任務(wù)只有我來(lái)承擔(dān)。 但是既然多人游戲已經(jīng)被加入路線圖了,開(kāi)發(fā)者就不會(huì)食言,我選擇接受挑戰(zhàn)。

所以事情變得棘手了,如果我選擇在游戲中先加入航母系統(tǒng)的話,在航母系統(tǒng)之后的多人游戲更新中,我又要把航母系統(tǒng)和現(xiàn)在所有的系統(tǒng)一樣重寫一遍來(lái)貼合多人聯(lián)機(jī)的需求。所以我決定把多人游戲作為游戲開(kāi)發(fā)進(jìn)程中的更高優(yōu)先級(jí)的任務(wù)。好消息是,如果一些都順利的話,具有基本的甲彈對(duì)抗,魚(yú)雷的Steam聯(lián)機(jī)版本將會(huì)在二月初和大家見(jiàn)面。屆時(shí)我將會(huì)開(kāi)啟一個(gè)新的公開(kāi)測(cè)試版,艦長(zhǎng)們將可以和自己的朋友一塊使用自己的設(shè)計(jì)進(jìn)行游玩了。

【存在的挑戰(zhàn)】

因?yàn)镹avalArt是一個(gè)沙盒游戲,我們的玩家將可以自由設(shè)計(jì)他們的戰(zhàn)艦,也許有人會(huì)在一艘戰(zhàn)艦上放置許許多多的武備,例如炮塔,魚(yú)雷發(fā)射器,導(dǎo)彈或者飛行器。舉例來(lái)說(shuō),您可以想想您曾經(jīng)玩過(guò)的一些多人戰(zhàn)爭(zhēng)游戲,在一局游戲中,將不會(huì)有許多玩家進(jìn)行對(duì)抗,除非在背后有一個(gè)遠(yuǎn)程專用服務(wù)器在使得戰(zhàn)局同步與運(yùn)行。NavalArt的開(kāi)發(fā)目標(biāo)是使用Steam的P2P網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)聯(lián)機(jī)游玩,它所能提供的網(wǎng)絡(luò)帶寬更少,連接更不穩(wěn)定,所以在玩家之間進(jìn)行通信并且同步所有單位在目前的情況下是一個(gè)不可能實(shí)現(xiàn)的任務(wù)。

【數(shù)學(xué)】

舉例來(lái)說(shuō),如果有200架飛機(jī)存在與一場(chǎng)對(duì)局中,游戲以10Hz的頻率在玩家之間同步這些飛機(jī)的位置和旋轉(zhuǎn),也就是每秒十次,那么:

位置: 12字節(jié)
旋轉(zhuǎn): 12字節(jié)(實(shí)際上由于它是一個(gè)四元數(shù),是16字節(jié))
所以每架飛行器需要24字節(jié)來(lái)同步它當(dāng)前的狀態(tài),當(dāng)我們把它放到公式中:

(12+12)*10*200 = 48000 字節(jié)/秒 = 46.875 KB/秒

可能我們刷視頻的時(shí)候有時(shí)候網(wǎng)速占用能上到MB,但是這對(duì)于游戲來(lái)說(shuō)是一個(gè)非常大的數(shù)值,舉例來(lái)說(shuō),一個(gè)10vs10的CS:Go休閑對(duì)局所使用的流量是 60 KB/秒,一個(gè)典型的基于Steam P2P的游戲如果想要進(jìn)行流暢的游玩的話,它的流量占用大約是30KB/秒,更不用說(shuō)玩家可能在他們的船只上放置超出200架飛機(jī)。

【解決方案】

對(duì)于炮塔和魚(yú)雷發(fā)射器來(lái)說(shuō),問(wèn)題并不是很大,因?yàn)榕谒汪~(yú)雷的彈道除開(kāi)中間的誤差計(jì)算以外,其他部分都是確定性的,它們具有確定的初速度和確定的發(fā)射角度和地點(diǎn),所以主持對(duì)局的玩家的客戶端作為服務(wù)器,它只需要在炮彈發(fā)射的時(shí)候告訴所有玩家的游戲,在xx地生成魚(yú)雷/炮彈,然后所有客戶端同時(shí)在本地模擬彈。當(dāng)炮彈/魚(yú)雷擊中物體的時(shí)候,服務(wù)器告訴所有客戶端,銷毀這個(gè)物體。魚(yú)雷和炮彈的坐標(biāo)并不需要再所有時(shí)候進(jìn)行同步。

對(duì)于導(dǎo)彈和飛行器來(lái)說(shuō),情況就不一樣了。你可能曾經(jīng)玩過(guò)一些RTS也就是即時(shí)戰(zhàn)略游戲,他們使用一種叫做deterministic lockstep的技術(shù),翻譯過(guò)來(lái)叫做確定性鎖步。使用這項(xiàng)技術(shù)的游戲,無(wú)論它在誰(shuí)的電腦上運(yùn)行,對(duì)于同樣的用戶輸入操作,它所給出的輸出,也就是游戲中的表現(xiàn)都是一樣的。所以,它們可以只在網(wǎng)絡(luò)上同步用戶的操作,例如框選單位,進(jìn)行攻擊,而同步操作并不需要怎么使用網(wǎng)絡(luò),所以使用此項(xiàng)技術(shù)的游戲進(jìn)行聯(lián)機(jī)只需要使用很少的流量。(Steam上一款著名的游戲《異星工廠》同樣使用了此項(xiàng)技術(shù)來(lái)同步數(shù)以萬(wàn)計(jì)的單位)

既然這項(xiàng)技術(shù)這么好,您可能會(huì)想,為啥我們不在NA中也加入這個(gè)功能? 現(xiàn)實(shí)是,在NA中加入這項(xiàng)功能并不是十分現(xiàn)實(shí)。

第一,NavalArt使用浮點(diǎn)來(lái)進(jìn)行數(shù)學(xué)計(jì)算,浮點(diǎn)具有一個(gè)特性,就是當(dāng)數(shù)值開(kāi)始變大的時(shí)候,它會(huì)產(chǎn)生一些誤差,這些誤差隨著時(shí)間的積累會(huì)使得最終誤差變得很大,所以在相同的用戶輸入下,例如將所有飛行器移動(dòng)到另外一地,飛行器到達(dá)目標(biāo)的時(shí)間和地點(diǎn)將可能每次都變得不同,結(jié)果將不是確定性的。同時(shí),確定性鎖步要求所有聯(lián)機(jī)玩家的游戲都使用相同的速度和頻率運(yùn)行,這將產(chǎn)生許多致命的缺點(diǎn)。如果您之前玩過(guò)一些RTS游戲的話,您可能有時(shí)候會(huì)碰到游戲突然變得卡頓并提示“XX玩家正在使得游戲變慢”,抑或是游戲突然掉線并提示“您已經(jīng)失去同步”。同時(shí),也有許多其他原因使得我們不能使用這項(xiàng)技術(shù)。

為了解決這個(gè)問(wèn)題,我們需要縮減對(duì)珍貴的網(wǎng)絡(luò)流量帶寬的占用, 這將意味著在現(xiàn)有的導(dǎo)彈和飛行器的機(jī)制基礎(chǔ)上直接加入多人聯(lián)機(jī)游戲?qū)⑹腔旧喜豢赡艿?,他們需要進(jìn)行方向性的重制,但是這將不會(huì)需要太久的時(shí)間,因?yàn)槔鐒?dòng)畫的一些代碼可以在重制中被重用。這也是下一個(gè)多人測(cè)試版不會(huì)具有導(dǎo)彈和飛機(jī)的實(shí)際功能的原因,因?yàn)橹苯釉诰W(wǎng)絡(luò)中使用單機(jī)代碼的話會(huì)產(chǎn)生bug。

您可能也注意到在現(xiàn)有版本中,飛機(jī)會(huì)直接穿山而過(guò)。在之后的飛行器重制中,這個(gè)問(wèn)題也將會(huì)被解決。目前打算是將整個(gè)地圖坐標(biāo)網(wǎng)格化,這樣為飛行器加入尋路和避障就會(huì)更容易了。飛機(jī)將也可能實(shí)現(xiàn)編隊(duì)飛行,因?yàn)樗鼈兛梢詸z測(cè)哪個(gè)網(wǎng)格被隊(duì)友飛行器占據(jù)了,從而避開(kāi)被占據(jù)的坐標(biāo)。

使用網(wǎng)格系統(tǒng)也將大大削減網(wǎng)絡(luò)資源的占用,因?yàn)槲覀冃枰降闹挥芯W(wǎng)格坐標(biāo),當(dāng)我們用比特,也就是2的n次冪來(lái)同步他們的時(shí)候,很顯然他們會(huì)比一整個(gè)12字節(jié)的三維向量要更小,后者是整整12*8為96比特。飛機(jī)的運(yùn)動(dòng)和旋轉(zhuǎn)可以通過(guò)在網(wǎng)格坐標(biāo)之間進(jìn)行插值來(lái)計(jì)算。

也有其他許多技術(shù)可以被用在多人游戲上,例如增量同步,數(shù)據(jù)壓縮。所以請(qǐng)您再給予一點(diǎn)耐心,游戲?qū)⒉粫?huì)被放棄,它在未來(lái)也會(huì)如過(guò)去幾年般變得越來(lái)越完善。

【最后】

我希望您喜歡這篇描述了游戲開(kāi)發(fā)在目前階段碰到的困難和可能的解決方法的文章,下一篇更新日志將會(huì)在不久后的多人游戲公開(kāi)測(cè)試版本發(fā)布。

(圖片作者:Julius_Tetsuo、肄業(yè)遮目)

NavalArt開(kāi)發(fā)進(jìn)度 – 多人游戲和航母的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
三亚市| 彰化市| 年辖:市辖区| 西和县| 通城县| 镶黄旗| 合阳县| 菏泽市| 永春县| 富顺县| 富阳市| 深水埗区| 靖边县| 屏山县| 公主岭市| 武强县| 黄石市| 拉萨市| 嘉定区| 衡山县| 固阳县| 壤塘县| 彝良县| 报价| 紫云| 盐山县| 宽城| 大足县| 肃北| 永州市| 廊坊市| 黑河市| 光泽县| 海兴县| 九龙坡区| 七台河市| 巨鹿县| 永善县| 梓潼县| 诸城市| 东宁县|