逗游網(wǎng):值得大家信賴的游戲下載站!

微信:doyo_game
關注逗游
單機首頁 游戲庫 排行榜 資訊 攻略 專題 合集 工具補丁 手機游戲 正版商城
所在位置:攻略中心 > 圖文攻略 > 饑荒:聯(lián)機版 > 正文

饑荒聯(lián)機版海上漂浮物刷新機制介紹

發(fā)布時間:2021-11-17 09:42 來源:bilibili  作者:兩只六尾

 

饑荒聯(lián)機版中海上漂浮物是如何刷新的?新手玩家可能對其規(guī)律還不了解,下面一起來看看饑荒聯(lián)機版海上漂浮物刷新機制介紹吧。

饑荒聯(lián)機版海上漂浮物刷新機制介紹

一、漂浮物種類

權重刷新物品:

中文名,代碼,權重

浮木, driftwood_log, 1

船殘骸, boatfragment03, 0.3

船殘骸, boatfragment04,0.3

船殘骸, boatfragment05, 0.3,

割下的草, cutgrass,1

繩子, twigs,1

海底垃圾, oceanfishableflotsam_water, 1

必刷物品:

漂流瓶,messagebottle

二、表層邏輯

1、漂流瓶刷新和其他物品的刷新是兩個互不干擾的流程,但會共同使用一些相關函數(shù)。

2、漂流瓶的刷新周期為隨機1-2天,如果隨機生成的刷新點不滿足條件,則會在8分之一天之后重新刷新。刷新地點為以玩家為中心,角度隨機,半徑40的點。

3、其他物品的首次刷新周期為隨機1-150秒,之后的刷新周期為隨機30-180秒。地點與漂流瓶相同。

4、每個玩家獨立刷新,也就是說,湊在一起的玩家數(shù)越多,感官上刷新的會越快(多)。

三、底層邏輯

本部分所有函數(shù)默認在flotsamgerator組件下,每個生成過程都與單獨一個玩家綁定。

漂流瓶刷新流程:當系統(tǒng)需要生成漂流瓶時,系統(tǒng)會首先調用StartGuaranteedSpawn函數(shù)。緊接著調用ScheduleGuaranteedSpawn函數(shù)對漂流瓶設置一個計時器,周期為1-2個游戲天數(shù)(TUNING.TOTAL_DAY_TIME)的均勻分布。當計時器時間結束,便會觸發(fā)SpawnGuaranteedFlotsam函數(shù)。此時會調用SpawnFlotsamForPlayer函數(shù)對物品進行生成。生成之后會根據(jù)生成的結果回調ScheduleGuaranteedSpawn函數(shù)為漂流瓶的下次更新計時。如果生成物品成功,則按之前的時間計時;如果生成物品失敗,則上述計時器的周期為8分之一游戲天數(shù)(GUARANTEED_FLOTSAM_REATTEMPT_DELAY)。

其他物品刷新流程:當系統(tǒng)需要生成其他漂浮物品時,系統(tǒng)會首先調用ScheduleSpawn函數(shù)。系統(tǒng)會設置一個計時器,計時周期為1-150的隨機秒數(shù)(150的來源為代碼中寫的是180-30)。計時周期調用SpawnFlotsamForPlayer函數(shù)生成其他物品,并重新進入計時周期。之后的計時周期為30-180的隨機秒數(shù)。

SpawnFlotsamForPlayer函數(shù):首先獲取玩家的位置,并判斷玩家是否在船上,如果不在船上則直接返回。否則就獲取船的坐標。物品刷新的位置僅與玩家位置和船的位置有關,物品位置生成的函數(shù)為GetSpawnPoint。如果生成的坐標可用,則會生成漂浮物。這里需要注意的一點,當系統(tǒng)需要生成漂流瓶時,會傳入override_prefab和override_notrealflotsam兩個參數(shù),而當生成其他漂流物時,這兩個參數(shù)傳入的為空。override_prefab和override_notrealflotsam兩個參數(shù)會接著傳給GetSpawnPoint函數(shù)。第一個參數(shù)用來指定生成的漂浮物,如果不指定該參數(shù),則會根據(jù)權重隨機生成漂浮物。(因此只有當這里傳入“漂流瓶”參數(shù)時,才能生成漂流瓶。)第二個參數(shù)override_notrealflotsam最終會被傳給setinsttoflotsam函數(shù),用來判斷是否給生成物品添加"flotsam"標記。除此之外,SpawnFlotsamForPlayer函數(shù)還有一個額外的參數(shù)reschedule,這個參數(shù)類型是一個函數(shù)名。當系統(tǒng)從ScheduleSpawn函數(shù)地調用SpawnFlotsamForPlayer函數(shù)是,會將ScheduleSpawn函數(shù)本身作為reschedule的參數(shù),來為下一個計時周期做準備。

SpawnFlotsam函數(shù):該函數(shù)共有3個參數(shù)spawnpoint, prefab, notrealflotsam。spawnpoint為從SpawnFlotsamForPlayer函數(shù)傳進來的物品坐標,prefab為指定生成物品(可以為空)。notrealflotsam會傳給setinsttoflotsam函數(shù)。如上述所說,函數(shù)會先判斷prefab是否為空,如果為空,則通過權重隨機選擇一個物品生成。之后生成一個隨機數(shù),用來判斷是否對物品旋轉180度。然后將物品轉移到相應的坐標,然后將物品和notrealflotsam參數(shù)傳入setinsttoflotsam函數(shù)。

GetSpawnPoint函數(shù):生成坐標。。大致思想是,以玩家坐標為基礎,角度隨機,半徑為40的點生成。會對坐標的可用性進行判斷。

setinsttoflotsam函數(shù):該函數(shù)共有三個參數(shù),inst, time, notag。inst為要生成的物品。如果time為空,則會將time賦值為3-4個游戲周期(均勻分布)。該時間被用來計算物品刷新到沉沒的時間。notag用來判斷是否增加"flotsam"tag。同時,為物品設計3個監(jiān)聽事件,分別為到沉沒時間、被撿起、被移除。之后會分別有其他函數(shù)來對應處理。比較有意思的是,當物品沉沒時,會在物品原坐標處生成一個“splash_sink”。(本人在游戲中測試了一下,好像是一個氣泡。)

整體邏輯:

有一個變量_maxflotsam,用來控制最大的漂浮物數(shù)量,目前為4(但是并沒有在程序中看到對當前漂浮物數(shù)量的判斷。所以這個變量可能并未被實際使用)。

當生成世界時,會對_updating變量進行判斷,如果為false,則置為true,并讓所有在_activeplayers列表中的玩家進入漂流瓶生成流程和其他漂浮物生成流程。如果為true,則刪除當前所有的漂浮物(包括漂流瓶)的數(shù)據(jù),并重新生成。。

當新玩家進入游戲時,會將玩家添加到_activeplayers列表中。同時進入生成漂流瓶的流程。除此之外,會判斷_updating變量。如果為true,則額外進入生成其他漂浮物的流程。

進入《饑荒:聯(lián)機版》專區(qū)
查看更多《饑荒:聯(lián)機版》攻略
標簽: 
http://m.4uh5.cn/article/462952復制本文地址
閱讀本文后,您的心情是:(選擇后可查看結果)
 
惡心
憤怒
強贊
感動
路過
無聊
雷囧
關注
今日關注游戲
游戲專題
IGN 9分以上作品 愿者上鉤釣魚的那點趣事 深冬之寒,來一起看看游戲中精美的雪景吧