日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

转载 程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛? (手机游戏)...

發(fā)布時(shí)間:2025/3/20 87 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转载 程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛? (手机游戏)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

2018-02-05?黃小秋?數(shù)據(jù)與算法之美

?

來源:知乎

作者:黃小秋

原文鏈接:https://www.zhihu.com/question/68733553/answer/305463907

?

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

?

?

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

?

?

1、呱真的在旅行么?

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

3、呱是如何旅行的?

4、呱在每條路上的耗時(shí)是怎么計(jì)算的?

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

6、道路有哪些屬性?

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

8、如何科學(xué)使用物品?

9、旅途中會(huì)帶回哪些明信片?

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

11、朋友什么時(shí)候會(huì)來訪?

12、朋友來訪應(yīng)該投喂什么?

13、三葉草多久會(huì)長(zhǎng)好?

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

15、抽獎(jiǎng)球的概率是?

16、如何獲得成就?

17、有沒有免費(fèi)獲得三葉草的方法?

?

1

?

呱真的在旅行么?

?

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

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

?

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

?

?

2

?

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

?

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

?

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

?

東部地區(qū)

?

西部地區(qū)

?

南部地區(qū)

?

北部地區(qū)

?

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

?

除了普通的地點(diǎn)外,還有四種特殊的地點(diǎn)會(huì)影響呱旅行的路線:

?

  • START 起始點(diǎn)(帽綠色)

  • GOAL 目的地(桃紅色)

  • PATH 途徑地(橘黃色)

  • DETOUR 繞路地(淺黃色)

?

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

?

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

?

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

?

2、選擇途徑地
途徑地由目的地決定,每個(gè)地點(diǎn)都有對(duì)應(yīng)的途徑地,代碼中對(duì)此的描述是當(dāng)?shù)氐目h府/交通樞紐。

?

3、選擇繞路地
這個(gè)很有意思,我猜測(cè)作者的目的是為了讓旅途更有多樣性,每次路途會(huì)額外添加幾個(gè)地區(qū)內(nèi)繞路地點(diǎn),攜帶物品對(duì)決定繞路地似乎沒有影響。

?

4、生成經(jīng)過所有地點(diǎn)的旅行路徑
運(yùn)用了圖論很經(jīng)典的連通圖找最短路徑 Dijkstra 算法,配合途徑地和繞路地的邏輯,最終計(jì)算出旅行路徑。

?

目的地是怎么選擇的?

?

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

?

具體目的地的選擇就和攜帶的道具相關(guān),每個(gè)物品對(duì)應(yīng)目的地的優(yōu)先級(jí)與?區(qū)域加成?疊加就能獲得每個(gè)地點(diǎn)被選擇的概率。

?

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

?

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

?

?

?

?

3

?

呱是如何旅行的?

?

確定了地點(diǎn)之后,呱會(huì)開始旅行:

?

1、攜帶物品會(huì)決定蛙最長(zhǎng)能旅行多久,6 ~ 72 小時(shí)不等。

2、初始體力由攜帶物品決定,以 100 為基數(shù)提升。
*物品的具體屬性參考下面的圖鑒

3、經(jīng)過圖上的一條路(邊)的時(shí)候,道路的地形屬性和所攜帶的物品屬性互相作用,會(huì)決定呱實(shí)際消耗的時(shí)間和體力。

4、路上可能會(huì)遇見小伙伴,會(huì)在之后的旅行中結(jié)伴而行,從而出現(xiàn)在明信片中。

5、根據(jù)路途屬性,有一定概率會(huì)寄相關(guān)的明信片。

6、當(dāng)體力不支的時(shí)候,蛙必須停下來休息 3 小時(shí),休息完之后體力會(huì)恢復(fù)到 100。休息時(shí)間也算作旅行時(shí)間。

7、當(dāng)?shù)竭_(dá)目的或者旅行時(shí)間耗盡的時(shí)候,蛙就會(huì)回家。

?

a、回家時(shí)會(huì)攜帶三葉草和抽獎(jiǎng)券。

b、如果在時(shí)間耗盡前到達(dá)了目的地,蛙會(huì)在此基礎(chǔ)上帶回當(dāng)?shù)靥禺a(chǎn)和收藏品。

?

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

?

?

?

?

4

?

呱在每條路上的耗時(shí)是怎么計(jì)算的?

?

?

?

?

5

?

呱離家出走了怎么辦?

?

如果長(zhǎng)時(shí)間沒有準(zhǔn)備便當(dāng),包里和桌上都沒有食物,呱會(huì)憤然離家出走(どこかへ出かけています)。

?

這個(gè)時(shí)候在桌子上放上吃的,呱就會(huì)在 5~30 分鐘內(nèi)回家。

?

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

?

?

?

?

6

?

道路有哪些屬性?

?

連接不同地點(diǎn)之間的每條路 (edge) 都有以下幾個(gè)屬性

?

  • 地形
    四種地形分別是?普通、大海、山地、洞穴

  • 耗時(shí)
    途徑這條路的體力和時(shí)間損耗,分為基礎(chǔ)耗時(shí)和地形增加耗時(shí)
    呱需要跋山涉水自然會(huì)耗時(shí)久一點(diǎn)

  • 明信片概率
    明信片上不同元素出現(xiàn)的概率
    據(jù)說所有的地圖元素都有真實(shí)原型

  • 遇見伙伴
    遇見特定伙伴的概率

?

具體如下,不能再詳細(xì)了

?

?

?

?

?

7

每件物品都有什么效果?

?

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

?

?

有五類不同的物品

?

  • 便當(dāng)

商店購買或者抽獎(jiǎng)獲得的食物

?

  • 幸運(yùn)符

除了四葉草和可以購買的幸?(tǔ)?運(yùn)?(háo)?鈴之外,都要抽獎(jiǎng)獲得

?

  • 道具

商店購買

?

  • 特產(chǎn)

呱旅游時(shí)獲得

?

  • 收藏品

特別的特產(chǎn),通常在縣府獲得,無法使用

?

屬性分類

?

HP

最大時(shí)間(小時(shí))

決定蛙的旅行時(shí)間

初始體力提升(%)

增加一開始一鼓作氣能旅行的距離

隨機(jī)體力提升(%)

隨機(jī)額外增加體力提升的最高百分點(diǎn)

?

物品幾率

?

  • 三葉草

獲得三葉草數(shù)量

額外隨機(jī)三葉草

隨機(jī)額外獲得的最大三葉草數(shù)量

?

  • 抽獎(jiǎng)券

獎(jiǎng)券數(shù)量

物品數(shù)量增多

增加獲得目的地收藏品的概率

?

決定地區(qū)

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

?

移動(dòng)速度

根據(jù)地形不同,提升移動(dòng)速度,減少途徑所耗費(fèi)的時(shí)間,在相同旅行時(shí)間內(nèi)可以走更遠(yuǎn)

?

朋友

遇到特定旅行伙伴的概率

?

遭遇地形

途徑特定地形時(shí)候獲得相應(yīng)明信片的概率

?

FLAG?屬性

立一些特定的?Flag,主要影響成就系統(tǒng),下面會(huì)寫到

?

?

8

如何科學(xué)使用物品?

?

?

?

這里用幾個(gè)例子來展示物品和路線結(jié)合的效果

?

1、決定想去的地區(qū)
攜帶的便當(dāng)和抽獎(jiǎng)獲得的護(hù)身符(お守り)可以提升選擇特定地區(qū)的概率。 抽獎(jiǎng)獲得的車票(きっぷ)可以直接決定所去到的地區(qū)。
例:想去北方,使用北國(guó)きっぷ。

?

2、影響路途的距離和時(shí)間
帶?最大時(shí)間?值高的食物吃走得遠(yuǎn),帶?體力提升?值高的食物吃走得快耗時(shí)少。

?

3、快速通過沿途路線的地形
帶有地區(qū)速度加成的食物或者道具,可以增加特定地形的移動(dòng)速度。
不同物品的?移動(dòng)速度?效果可以疊加,詳情查看上面的解釋。

?

4、匹配在道路上遇到的伙伴
如果在途徑會(huì)遭遇伙伴的道路,特定物品可以增加實(shí)際遭遇概率
例:
抽獎(jiǎng)抽到的黃色ぼうろ(餅干)可以增加路途中遇到螃蟹的幾率。

綜合運(yùn)用(敲黑板!!!)

?

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

?

1、在地圖上找到 秋田県(3022) 在北方。

2、便當(dāng)選擇?あさつきのヒ?ロシキ (蔥餅?)可以提升去北方的概率。

3、攜帶 ?青色のお守り (藍(lán)色護(hù)身符)可以提升去北方的概率。

4、如果有?北國(guó)きっぷ(北方車票?)可以直接決定去北方,上面的便當(dāng)和護(hù)身符可以換別的。

5、通過目的地概率表發(fā)現(xiàn)攜帶各類帳篷前往 3022 目的地的概率更高。

6、查看可能的路線發(fā)現(xiàn)從起始點(diǎn) 3000 到 3022 之間會(huì)途徑很多山路。

7、攜帶?ハイテクテント (高級(jí)帳篷?)增加山地移動(dòng)速度更顯著。

8、如果還有空余,可以帶上?よつ葉(四葉草)或者?幸運(yùn)の鈴,提升帶回物品的概率。

?

?

?

?

?

?

9

?

旅途中會(huì)帶回哪些明信片?

?

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

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

?

幾種不同的 pose

?

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

?

迷路的呱呱

?

路邊的排水渠

?

?

10

?

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

?

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

?

?

?

?

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

?

11

?

朋友什么時(shí)候會(huì)來訪?

?

蝸牛、蜜蜂和烏龜會(huì)時(shí)不時(shí)來訪。來訪停留的時(shí)間 180~270 分鐘。

?

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

?

?

12

?

朋友來訪應(yīng)該投喂什么?

?

給來訪的朋友投喂會(huì)獲得三葉草和抽獎(jiǎng)券的回禮:

在此基礎(chǔ)上,投喂帶有稀有 FLAG 屬性的物品會(huì)多獲得 20 根三葉草,多獲得 1~4 張抽獎(jiǎng)券。

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

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

?

?

?

13

三葉草多久會(huì)長(zhǎng)好?

?

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

?

?

每一根都是獨(dú)立重生的。最短 5 分鐘 (300 秒),最長(zhǎng) 4 小時(shí) (14400 秒) 重生。

?

?

14

?

四葉草獲得的概率是?

?

完成教程后會(huì)自動(dòng)誕生第一顆四葉草,除此之外,每一根三葉草重生的時(shí)候都有?1%?的概率成為四葉草。

?

15

抽獎(jiǎng)球的概率是?

?

  • 白:60%

  • 藍(lán):27%

  • 綠:9%

  • 紅:3%

  • 金:1%

?

?

16

?

如何獲得成就?

?

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

?

這也是玄學(xué)錯(cuò)誤迷信的一個(gè)地方。使用稱呼對(duì)游戲其他部分沒有任何影響,不會(huì)改變獲得物品和明信片獲得概率,也不會(huì)影響出門時(shí)長(zhǎng)。

轉(zhuǎn)載于:https://www.cnblogs.com/mike-mei/p/8426222.html

總結(jié)

以上是生活随笔為你收集整理的转载 程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛? (手机游戏)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。