逗游網(wǎng):值得大家信賴的游戲下載站!
發(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,則額外進入生成其他漂浮物的流程。
下一篇: 光環(huán)無限配音修改指南
饑荒聯(lián)機版2024食譜大全 2024最新食譜合集
饑荒聯(lián)機版大霜鯊全角色對應臺詞一覽
饑荒聯(lián)機版迷你冰川獲取方法 迷你冰川怎么獲得
饑荒聯(lián)機版?zhèn)魉徒裹c制作方法 傳送焦點怎么做
饑荒聯(lián)機版出逃腿靴獲取方法分享
12-25饑荒聯(lián)機版星象探測儀獲取方法 星象探測儀怎么
12-25饑荒聯(lián)機版冰釣洞出現(xiàn)方法 冰釣洞怎么生成
12-22饑荒聯(lián)機版巖石大白鯊刷新機制一覽
12-21饑荒聯(lián)機版新版女武神攻略 新版女武神怎么玩
12-21饑荒聯(lián)機版新版火女薇洛攻略 新版火女怎么玩
12-21