自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員以上帝視角解讀“旅行青蛙”,你的呱真的在旅行嘛?

移動開發(fā)
知乎有位程序員大佬,為了讓老母親老父親們理解自己的呱究竟在干什么,于是花了五個晚上逆向游戲程序邏輯,提取各種數(shù)據(jù)。這里相當于動用了上帝視角來解答這些問題。

導語

知乎有位程序員大佬,為了讓老母親老父親們理解自己的呱究竟在干什么,于是花了五個晚上逆向游戲程序邏輯,提取各種數(shù)據(jù)。這里相當于動用了上帝視角來解答這些問題。目前點贊已經(jīng)超過2w。

大佬根據(jù)回答的內容,做了一個目錄,方便大家按需食用。

  1. 呱真的在旅行么?
  2. 呱是如何選擇旅行路徑的?
  3. 呱是如何旅行的?
  4. 呱在每條路上的耗時是怎么計算的?
  5. 呱離家出走了怎么辦?
  6. 道路有哪些屬性?
  7. 每件物品都有什么效果?
  8. 如何科學使用物品?
  9. 旅途中會帶回哪些明信片?
  10. 旅途中會帶回哪些特產(chǎn)?
  11. 朋友什么時候會來訪?
  12. 朋友來訪應該投喂什么?
  13. 三葉草多久會長好?
  14. 四葉草獲得的概率是?
  15. 抽獎球的概率是?
  16. 如何獲得成就?
  17. 有沒有免費獲得三葉草的方法?

1。呱真的在旅行么?

不得不佩服游戲的設計者,為了追求真實,實現(xiàn)了一套非常完整的旅行模擬系統(tǒng),有嚴謹?shù)穆糜温肪€設計。

因為旅行的過程并不展示給用戶,我原本以為邏輯會十分簡單。發(fā)現(xiàn)這套旅行模擬系統(tǒng)的時候,我也有些驚訝,也促使我深入研究這款游戲的邏輯。

 

[[220110]]

下面的解釋中間會用到少量計算機圖論 (graph theory) 的術語,但應該還是很直觀。

2。呱是如何選擇旅行路徑的?

程序內建東、西、南、北四個區(qū)域,呱會選擇一個地區(qū)旅行,每個區(qū)域的設計都是一個連通的無向圖 (connected undirected graph),而呱的旅行路線就是在圖上某兩個點之間走出一條路徑 (path)。

通過逆向手段,我提取出了程序中的信息,花了一些時間用 Graphviz 生成了每個地圖的樣子。

 

東部地區(qū).png
東部地區(qū)

 

1517968367-6259-0207.jpg
西部地區(qū)

 

南.png
南部地區(qū)

 

北.png
北部地區(qū)

圖上的每個節(jié)點 (vertex) 都代表了一個地點。每個地點都有可能被蛙經(jīng)過,并觸發(fā)一些事件。

除了普通的地點外,還有四種特殊的地點會影響呱旅行的路線:

  • START 起始點(帽綠色)
  • GOAL 目的地(桃紅色)
  • PATH 途徑地(橘黃色)
  • DETOUR 繞路地(淺黃色)

連接節(jié)點之間的是邊 (edge),代表連接地點的路,這些路上也會觸發(fā)遇上伙伴、拍攝照片等事件。

每次開始旅行的時候,根據(jù)老母親打包的物品,呱都會:

1、選擇目的地

攜帶特點食物或道具可以影響到地區(qū)的選擇,有些物品可以增加特定地區(qū)的被選概率,甚至可以直接確定選擇的地區(qū)。在一個區(qū)域內的目的地的選擇同樣取決于所攜帶的道具。具體每件物體效果會在后面提到。

2、選擇途徑地

途徑地由目的地決定,每個地點都有對應的途徑地,代碼中對此的描述是當?shù)氐目h府/交通樞紐。

3、選擇繞路地

這個很有意思,我猜測作者的目的是為了讓旅途更有多樣性,每次路途會額外添加幾個地區(qū)內繞路地點,攜帶物品對決定繞路地似乎沒有影響。

4、生成經(jīng)過所有地點的旅行路徑

運用了圖論很經(jīng)典的連通圖找最短路徑 Dijkstra 算法,配合途徑地和繞路地的邏輯,最終計算出旅行路徑。

目的地是怎么選擇的? 

程序員以上帝視角解讀“旅行青蛙”,你的呱真的在旅行嘛?

這里的數(shù)值不是絕對概率而是相對的優(yōu)先級

具體目的地的選擇就和攜帶的道具相關,每個物品對應目的地的優(yōu)先級與 區(qū)域加成 疊加就能獲得每個地點被選擇的概率。

每個目的地的 區(qū)域加成 初始值都為 30,道具的 決定地區(qū) 屬性值可以提升對應地區(qū)內目的地的 區(qū)域加成,從而增加區(qū)域內所有的目的地被選擇的概率。

部分道具可以直接限制選擇到規(guī)定的地區(qū)。

3。呱是如何旅行的?

確定了地點之后,呱會開始旅行:

  1. 攜帶物品會決定蛙最長能旅行多久,6 ~ 72 小時不等。
  2. 初始體力由攜帶物品決定,以 100 為基數(shù)提升。(物品的具體屬性參考下面的圖鑒)
  3. 經(jīng)過圖上的一條路(邊)的時候,道路的地形屬性和所攜帶的物品屬性互相作用,會決定呱實際消耗的時間和體力。
  4. 路上可能會遇見小伙伴,會在之后的旅行中結伴而行,從而出現(xiàn)在明信片中。
  5. 根據(jù)路途屬性,有一定概率會寄相關的明信片。
  6. 當體力不支的時候,蛙必須停下來休息 3 小時,休息完之后體力會恢復到 100。休息時間也算作旅行時間。
  7. 當?shù)竭_目的或者旅行時間耗盡的時候,蛙就會回家。
  • a、回家時會攜帶三葉草和抽獎券。
  • b、如果在時間耗盡前到達了目的地,蛙會在此基礎上帶回當?shù)靥禺a(chǎn)和收藏品。

所以如果你的蛙很久都沒回家,回家了也沒有帶土特產(chǎn),可能是路途上多次體力不支,暈倒在路邊。(再也不怪蛙兒不想著給娘帶土特產(chǎn)了,原來是娘把你餓著了)

 

[[220115]]

4。呱在每條路上的耗時是怎么計算的?

 

TIM截圖20180208172108.png

5。呱離家出走了怎么辦?

如果長時間沒有準備便當,包里和桌上都沒有食物,呱會憤然離家出走(どこかへ出かけています)。

這個時候在桌子上放上吃的,呱就會在 5~30 分鐘內回家。

有趣的是,離家出走也算作成就計算中的旅行次數(shù)...emmmm。

6。道路有哪些屬性?

連接不同地點之間的每條路 (edge) 都有以下幾個屬性:

  • 地形:四種地形分別是 普通、大海、山地、洞穴
  • 耗時:途徑這條路的體力和時間損耗,分為基礎耗時和地形增加耗時;呱需要跋山涉水自然會耗時久一點
  • 明信片概率:明信片上不同元素出現(xiàn)的概率。據(jù)說所有的地圖元素都有真實原型
  • 遇見伙伴:遇見特定伙伴的概率

具體如下,不能再詳細了

 

v2-7415bade0ede80076d3ca63a7d2a4c35_r.jpg

7。每件物品都有什么效果?

奉上這張吐血整理的物品效果圖鑒:

 

v2-ac9de692ddf463e7838b1c007ab578dc_hd.jpg

 

v2-589b369c1564310488c541d7da42b992_hd.jpg

有五類不同的物品:

  • 便當:商店購買或者抽獎獲得的食物
  • 幸運符:除了四葉草和可以購買的幸 (tǔ) 運 (háo) 鈴之外,都要抽獎獲得
  • 道具:商店購買
  • 特產(chǎn):呱旅游時獲得
  • 收藏品:特別的特產(chǎn),通常在縣府獲得,無法使用

屬性分類

  • HP
  • 最大時間(小時)
  • 決定蛙的旅行時間
  • 初始體力提升(%)
  • 增加一開始一鼓作氣能旅行的距離
  • 隨機體力提升(%)
  • 隨機額外增加體力提升的最高百分點

物品幾率

  • 三葉草
  • 獲得三葉草數(shù)量
  • 額外隨機三葉草
  • 隨機額外獲得的最大三葉草數(shù)量
  • 抽獎券
  • 獎券數(shù)量
  • 物品數(shù)量增多
  • 增加獲得目的地收藏品的概率

決定地區(qū):對應地區(qū)被選中的概率,如果值為 D 則可以直接決定目的地所在區(qū)域

移動速度:根據(jù)地形不同,提升移動速度,減少途徑所耗費的時間,在相同旅行時間內可以走更遠

朋友:遇到特定旅行伙伴的概率

遭遇地形:途徑特定地形時候獲得相應明信片的概率

FLAG 屬性:立一些特定的 Flag,主要影響成就系統(tǒng),下面會寫到

8。如何科學使用物品?

 

[[220118]]

這里用幾個例子來展示物品和路線結合的效果

1、決定想去的地區(qū)

攜帶的便當和抽獎獲得的護身符(お守り)可以提升選擇特定地區(qū)的概率。 抽獎獲得的車票(きっぷ)可以直接決定所去到的地區(qū)。

例:想去北方,使用北國きっぷ。

2、影響路途的距離和時間

帶 最大時間 值高的食物吃走得遠,帶 體力提升 值高的食物吃走得快耗時少。

3、快速通過沿途路線的地形

帶有地區(qū)速度加成的食物或者道具,可以增加特定地形的移動速度。

不同物品的 移動速度 效果可以疊加,詳情查看上面的解釋。

4、匹配在道路上遇到的伙伴

如果在途徑會遭遇伙伴的道路,特定物品可以增加實際遭遇概率

例:抽獎抽到的黃色ぼうろ(餅干)可以增加路途中遇到螃蟹的幾率。

綜合運用(敲黑板!!!)

呱想去秋田県男鹿市看燈塔

  1. 在地圖上找到 秋田県(3022) 在北方。
  2. 便當選擇 あさつきのピロシキ (蔥餅?)可以提升去北方的概率。
  3. 攜帶 青色のお守り (藍色護身符)可以提升去北方的概率。
  4. 如果有 北國きっぷ(北方車票?)可以直接決定去北方,上面的便當和護身符可以換別的。
  5. 通過目的地概率表發(fā)現(xiàn)攜帶各類帳篷前往 3022 目的地的概率更高。
  6. 查看可能的路線發(fā)現(xiàn)從起始點 3000 到 3022 之間會途徑很多山路。
  7. 攜帶 ハイテクテント (高級帳篷?)增加山地移動速度更顯著。
  8. 如果還有空余,可以帶上 よつ葉(四葉草)或者 幸運の鈴,提升帶回物品的概率。

 

[[220119]]

9。旅途中會帶回哪些明信片?

途徑每條道路上會遇到的明信片元素都有很明確的概率。

普通的明信片是自動合成的。根據(jù)道路元素、所攜帶道具、遇到的同行小伙伴,程序會選擇合適的背景、前景和呱和小伙伴的 pose,合成完整的明信片。粗略計算,有 120 種左右的組合。

 

[[220120]]
幾種不同的 pose

有一些帶有特定的故事情節(jié)明信片是單張繪制的,這里也可以看出游戲制作者的用心:迷路和小伙伴看地圖通常出現(xiàn)在地圖的邊緣,冷清下水道一般出現(xiàn)在四通八達的城市交通樞紐。

 

[[220121]]
迷路的呱呱

 

[[220122]]
路邊的排水渠

10。旅途中會帶回哪些特產(chǎn)?

上面提到了,成功到達目的地(GOAL)的時候才會獲得特產(chǎn),收藏品的獲得概率是 15%,其他物品的概率如下:

 

12.jpg

游戲代碼中有收藏品收集三次必定成功的設定,但是實際上并未啟用,可能在之后的版本中會引入。

11。朋友什么時候會來訪?

蝸牛、蜜蜂和烏龜會時不時來訪。來訪停留的時間 180~270 分鐘。

蜜蜂需要有至少 3 件收藏品才會出現(xiàn),烏龜需要有至少 6 件收藏品。

12。朋友來訪應該投喂什么?

給來訪的朋友投喂會獲得三葉草和抽獎券的回禮:

 

v2-42ca38c99c94b36574c7fa7c02124490_hd.jpg

在此基礎上,投喂帶有稀有 FLAG 屬性的物品會多獲得 20 根三葉草,多獲得 1~4 張抽獎券。

朋友會記住最近三次的食品。連續(xù)投喂同一種物品,獲得回禮的數(shù)量會降低。

為了達到最好效果,最好換四種不同的禮物輪流投喂,具體可以參照下面的喜好表格:

 

123.jpg

13。三葉草多久會長好?

花壇中總共有 20 根三葉草。

 

TIM截圖20180208173134.png

每一根都是獨立重生的。最短 5 分鐘 (300 秒),最長 4 小時 (14400 秒) 重生。

14。四葉草獲得的概率是?

完成教程后會自動誕生第一顆四葉草,除此之外,每一根三葉草重生的時候都有 1% 的概率成為四葉草。

15。抽獎球的概率是?

  • 白:60%
  • 藍:27%
  • 綠:9%
  • 紅:3%
  • 金:1%

16。如何獲得成就?

蛙旅行的時候會立一些 Flag,我從代碼中整理了一下觸發(fā)的條件:

 

1234.jpg

這也是玄學錯誤迷信的一個地方。使用稱呼對游戲其他部分沒有任何影響,不會改變獲得物品和明信片獲得概率,也不會影響出門時長。

17。有沒有免費獲得三葉草的方法?

你猜?

 

[[220125]]
責任編輯:未麗燕 來源: 知乎
相關推薦

2021-05-18 06:51:37

CPU程序員系統(tǒng)

2009-05-21 15:58:12

程序員工作經(jīng)驗職場

2018-02-06 10:46:53

2010-12-20 09:26:44

SQL索引

2018-11-02 16:16:41

程序硬盤存儲

2013-04-28 11:03:41

編程語言程序員私有云

2018-01-29 22:26:25

旅行青蛙蘋果APP Store

2018-02-05 10:43:16

旅行青蛙

2018-10-10 15:52:48

程序員代碼編程

2013-07-22 11:25:12

2012-12-19 09:39:18

程序員

2018-01-24 11:19:26

2013-04-08 15:39:15

程序員

2011-06-20 08:38:42

程序員

2020-01-10 17:29:12

IT開發(fā)者程序員

2017-09-13 09:49:54

iPhone X

2012-06-08 03:32:26

程序員電子郵件

2021-04-06 11:44:21

程序員退休互聯(lián)網(wǎng)

2013-07-22 13:57:02

2015-04-10 19:37:34

程序員
點贊
收藏

51CTO技術棧公眾號