【閱讀筆記】旅行的青蛙——旅行模擬系統(tǒng)分析

知乎原文

作者:黃小秋鏈接:https://www.zhihu.com/question/68733553/answer/305463907來源:知乎著作權(quán)歸作者所有拙毫。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)瘦材,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處度帮。

原文是知乎的一個(gè)分享帖近速,涉及算法逆向工程。和彥斌同學(xué)饒有興致地聊了兩句。以下是摘要

1. 路線設(shè)計(jì)

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

程序內(nèi)建東、西仔夺、南琐脏、北四個(gè)區(qū)域,呱會(huì)選擇一個(gè)地區(qū)旅行

每個(gè)區(qū)域的設(shè)計(jì)都是一個(gè)連通的無向圖 (connected undirected graph)缸兔,而呱的旅行路線就是在圖上某兩個(gè)點(diǎn)之間走出一條路徑 (path)日裙。

通過逆向手段,原文作者提取出了程序中的信息惰蜜,花了一些時(shí)間用 Graphviz 生成了每個(gè)地圖的樣子昂拂。??

作為例子的東部地圖。膜拜一下

圖上的每個(gè)節(jié)點(diǎn) (vertex)都代表了一個(gè)地點(diǎn)蝎抽。每個(gè)地點(diǎn)都有可能被蛙經(jīng)過政钟,并觸發(fā)一些事件(想起了口袋妖怪的鯉魚王養(yǎng)殖游戲)。

除了普通的地點(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)的旅行路徑

目的地是怎么選擇的阳仔?

數(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ū) (D)顺又。

呱是如何旅行的?

確定了地點(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ì)回家。

? ? 7.1 回家時(shí)會(huì)攜帶三葉草和抽獎(jiǎng)券齐蔽。

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

所以如果你的蛙很久都沒回家含滴,回家了也沒有帶土特產(chǎn)诱渤,可能是路途上多次體力不支,暈倒在路邊谈况。

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

呱離家出走了怎么辦?(這算是個(gè)旅行系統(tǒng)的設(shè)計(jì)彩蛋吧)

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

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

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

道路有哪些屬性?

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

1.地形

四種地形分別是普通舷蒲、大海耸袜、山地、洞穴

經(jīng)典的SLG地形影響行動(dòng)的設(shè)計(jì)牲平,從當(dāng)年“”霸王的大陸“”開始

2.耗時(shí)

途徑這條路的體力和時(shí)間損耗堤框,分為基礎(chǔ)耗時(shí)和地形增加耗時(shí)

呱需要跋山涉水自然會(huì)耗時(shí)久一點(diǎn)

3.明信片概率

明信片上不同元素出現(xiàn)的概率

據(jù)說所有的地圖元素都有真實(shí)原型

4.遇見伙伴

遇見特定伙伴的概率

原帖中附有詳細(xì)圖

道具設(shè)計(jì)

收藏品

收藏品有點(diǎn)敗筆,太少了纵柿。像GAGEX Co推出的那幾款“昭和雜貨店”蜈抓,“昭和盛夏祭典”就相當(dāng)成功。

屬性分類

? ??HP

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

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

? ??????初始體力提升(%)

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

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

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

物品幾率

? ??????三葉草

????????獲得三葉草數(shù)量

? ??????額外隨機(jī)三葉草

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

? ??????抽獎(jiǎng)券

????????獎(jiǎng)券數(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ì)寫到

實(shí)例: 幾個(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)用(敲黑板@苑臁F伺印!)

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

在地圖上找到 秋田県(3022) 在北方拒逮。

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

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

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

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

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

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

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

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

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

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

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

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

上面提到了,成功到達(dá)目的地(GOAL)的時(shí)候才會(huì)獲得特產(chǎn),收藏品的獲得的基礎(chǔ)概率是 15%换可,使用四葉草或者幸運(yùn)鈴鐺可以減少收集收藏品的阻力椎椰,增加獲得概率成洗。

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

但是很可能是為了提高收藏的難度(因?yàn)榉N類太少)而故意放棄的

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

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

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

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

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

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

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

我去老虫!這個(gè)真是太人性了叶骨。連續(xù)三次會(huì)吃膩!怪不得每次給蝸牛米它回饋極少

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


四葉草獲得的概率是?

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

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

白:60%

藍(lán):27%

綠:9%

紅:3%

金:1%

如何獲得成就伞剑?

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

使用稱呼對(duì)游戲其他部分沒有任何影響市埋,不會(huì)改變獲得物品和明信片獲得概率黎泣,也不會(huì)影響出門時(shí)長(zhǎng)。




end

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缤谎,一起剝皮案震驚了整個(gè)濱河市抒倚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坷澡,老刑警劉巖托呕,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡项郊,警方通過查閱死者的電腦和手機(jī)馅扣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呆抑,“玉大人岂嗓,你說我怎么就攤上這事∪蛋” “怎么了厌殉?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)侈咕。 經(jīng)常有香客問我公罕,道長(zhǎng),這世上最難降的妖魔是什么耀销? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任楼眷,我火速辦了婚禮,結(jié)果婚禮上熊尉,老公的妹妹穿的比我還像新娘罐柳。我一直安慰自己,他們只是感情好狰住,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布张吉。 她就那樣靜靜地躺著,像睡著了一般催植。 火紅的嫁衣襯著肌膚如雪肮蛹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天创南,我揣著相機(jī)與錄音伦忠,去河邊找鬼。 笑死稿辙,一個(gè)胖子當(dāng)著我的面吹牛昆码,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邻储,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼未桥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了芥备?” 一聲冷哼從身側(cè)響起冬耿,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萌壳,沒想到半個(gè)月后亦镶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體日月,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年缤骨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爱咬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绊起,死狀恐怖精拟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虱歪,我是刑警寧澤蜂绎,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站笋鄙,受9級(jí)特大地震影響师枣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萧落,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一践美、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧找岖,春花似錦陨倡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箕昭。三九已至泌霍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缅疟。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓硕糊,卻偏偏與公主長(zhǎng)得像檬某,于是被迫代替她去往敵國(guó)和親胰默。 傳聞我的和親對(duì)象是個(gè)殘疾皇子漏隐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 旅行青蛙是一個(gè)近期非常熱門的休閑游戲,所謂佛系游戲暇检。旅かえる是貓咪后院游戲公司HIT-POINT新出的一款休閑小游...
    搞笑有嘻哈閱讀 692評(píng)論 0 1
  • 近期旅行青蛙這款游戲非常的火熱产阱,周圍的朋友、家人都養(yǎng)了一只小青蛙块仆」沟牛看到網(wǎng)上有人說這款游戲可以直接逆向編譯酿矢,沒有加密...
    MrYun閱讀 2,864評(píng)論 0 2
  • 來自純新手的手把手實(shí)踐經(jīng)驗(yàn)分享 初次接觸逆向,簡(jiǎn)單記錄一下心路歷程及一些自認(rèn)為有趣的東西怎燥,大佬們可繞過或者多多指教...
    JackyTsuuuy閱讀 651評(píng)論 0 0
  • “別讓我一個(gè)人醉瘫筐,你別不喝嘛!”干完一杯又一杯铐姚,酒這東西策肝,要是沒有互相勸酒,好像就沒有太多意思了隐绵。 許久不見的朋友...
    叫我梅芳就好閱讀 462評(píng)論 0 0
  • 單詞 遊びます(あそびです)玩之众,游樂 泳ぎます(およぎます)游泳 迎えます(むかえます)迎接,歡迎 疲れます(つか...
    悶油瓶小張閱讀 312評(píng)論 1 0