日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛?

發布時間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


來源:知乎

作者:黃小秋

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


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




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

1、呱真的在旅行么?

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

3、呱是如何旅行的?

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

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

6、道路有哪些屬性?

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

8、如何科學使用物品?

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

10、旅途中會帶回哪些特產?

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

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

13、三葉草多久會長好?

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

15、抽獎球的概率是?

16、如何獲得成就?

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


1


呱真的在旅行么?


不得不佩服游戲的設計者,為了追求真實,實現了一套非常完整的旅行模擬系統,有嚴謹的旅游路線設計。

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

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



2


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


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


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


東部地區


西部地區


南部地區


北部地區


圖上的每個節點 (vertex)?都代表了一個地點。每個地點都有可能被蛙經過,并觸發一些事件。


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


  • START 起始點(帽綠色)

  • GOAL 目的地(桃紅色)

  • PATH 途徑地(橘黃色)

  • DETOUR 繞路地(淺黃色)


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


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


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


2、選擇途徑地
途徑地由目的地決定,每個地點都有對應的途徑地,代碼中對此的描述是當地的縣府/交通樞紐。


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


4、生成經過所有地點的旅行路徑
運用了圖論很經典的連通圖找最短路徑 Dijkstra 算法,配合途徑地和繞路地的邏輯,最終計算出旅行路徑。


目的地是怎么選擇的?


這里的數值不是絕對概率而是相對的優先級


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


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


部分道具可以直接限制選擇到規定的地區。





3


呱是如何旅行的?


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


1、攜帶物品會決定蛙最長能旅行多久,6 ~ 72 小時不等。

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

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

4、路上可能會遇見小伙伴,會在之后的旅行中結伴而行,從而出現在明信片中。

5、根據路途屬性,有一定概率會寄相關的明信片。

6、當體力不支的時候,蛙必須停下來休息 3 小時,休息完之后體力會恢復到 100。休息時間也算作旅行時間。

7、當到達目的或者旅行時間耗盡的時候,蛙就會回家。


  • a、回家時會攜帶三葉草和抽獎券。

    b、如果在時間耗盡前到達了目的地,蛙會在此基礎上帶回當地特產和收藏品。


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





    4


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




    5


    呱離家出走了怎么辦?


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


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


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





    6


    道路有哪些屬性?


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


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

    • 耗時
      途徑這條路的體力和時間損耗,分為基礎耗時和地形增加耗時
      呱需要跋山涉水自然會耗時久一點

    • 明信片概率
      明信片上不同元素出現的概率
      據說所有的地圖元素都有真實原型

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


    具體如下,不能再詳細了






    7

    每件物品都有什么效果?


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

    有五類不同的物品

    ?

    • 便當

    商店購買或者抽獎獲得的食物


    • 幸運符

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


    • 道具

    商店購買


    • 特產

    呱旅游時獲得


    • 收藏品

    特別的特產,通常在縣府獲得,無法使用

    ?

    屬性分類

    ?

    HP

    最大時間(小時)

    決定蛙的旅行時間

    初始體力提升(%)

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

    隨機體力提升(%)

    隨機額外增加體力提升的最高百分點


    物品幾率

    ?

    • 三葉草

    獲得三葉草數量

    額外隨機三葉草

    隨機額外獲得的最大三葉草數量


    • 抽獎券

    獎券數量

    物品數量增多

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

    ?

    決定地區

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

    ?

    移動速度

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

    ?

    朋友

    遇到特定旅行伙伴的概率

    ?

    遭遇地形

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

    ?

    FLAG?屬性

    立一些特定的?Flag,主要影響成就系統,下面會寫到



    8

    如何科學使用物品?


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


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


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


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


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

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


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


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

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

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

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

    5、通過目的地概率表發現攜帶各類帳篷前往 3022 目的地的概率更高。

    6、查看可能的路線發現從起始點 3000 到 3022 之間會途徑很多山路。

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

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






    9


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


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

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

    幾種不同的 pose


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


    迷路的呱呱


    路邊的排水渠



    10


    旅途中會帶回哪些特產?


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



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


    11


    朋友什么時候會來訪?


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


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



    12


    朋友來訪應該投喂什么?


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

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

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

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



    13

    三葉草多久會長好?


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


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



    14


    四葉草獲得的概率是?


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


    15

    抽獎球的概率是?


    • 白:60%

    • 藍:27%

    • 綠:9%

    • 紅:3%

    • 金:1%



    16


    如何獲得成就?


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


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



    17


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


    你猜?


    — 完 —


    總結

    以上是生活随笔為你收集整理的程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。