在「動森」裡,有沒有可能避免「炸島」?

2021-01-15 虎嗅APP


近期發售的 Nintendo Switch 遊戲《集合啦!動物森友會》作為近期的熱門 「社交類」 遊戲,聯機可以說是十分關鍵的一個功能。並且官方在遊戲設計上也是鼓勵玩家相互聯機交流,不論是比比誰家的大頭菜能賣得貴就去誰家賣,還是誰家有來訪的特殊商人,賣地毯還是賣古董,都可以很大程度拓寬玩家可接觸到的遊戲資源的種類,提升遊玩的樂趣。



然而,就在這個聯機功能裡,也存在著一些看似不理想的設計。


一個問題就是關於玩家進入和離開他人的島嶼時 「隆重」 的歡送儀式。玩家要花費幾十秒去存儲和等待其他玩家的連接。如果島主開放了島後,其他玩家們頻繁地進出島嶼,意味著在島上的玩家們要被頻繁地打斷,非常影響遊戲體驗。


更令人沮喪的是,還會發生 「炸島」 的情況,在一些評分網站上玩家們給予本作的打分時的負面評價很多也源自於此。


動森的聯機迷思


簡單來說,這些情況都是歸因於遊戲的存檔和同步機制。玩家在單人遊玩的時候,也就是所謂的單機模式,存檔功能就像傳統遊戲一樣:玩家可以手動存檔,遊戲也會定期自動存檔。然而在和其他玩家聯機時,也就是多人遊戲模式,事情就開始變得複雜了起來。


當前多人遊戲的存檔模式是,在開放島嶼時和有其他玩家進出島時,雙方玩家都會自動存檔。除此之外,遊戲不會在中間自動存檔。這就意味著,如果在遊玩期間有哪個玩家突然掉線,所有在該島上的玩家的遊戲進度都會重置到上一次存檔的時刻。


這無疑是非常令人沮喪的,尤其是在這期間有玩家獲得了很大的成就的時候。



那麼這些影響遊戲體驗的設計原因到底是為什麼呢?我們先來看看這樣一個簡單的情景:玩家B通過網際網路聯機到了玩家A的島上,然後慷慨地往地上扔了99000鈴錢,這時如果玩家B沒有存檔並且以非正常方式離開了該島,玩家B顯然只能恢復到上一個存檔:進入玩家A的島之前的狀態,也就是說玩家B的99000鈴錢還在手裡。


假如此刻不重置所有人的進度的話,玩家A的島上還留著玩家B留下的錢,這麼一來……錢被複製了!這個場景就是一個經典的數據同步問題。


可能看到這裡會有讀者感到奇怪:我們也玩過那麼多網遊,沒聽說過哪個遊戲誰掉線了之類的就會讓別人複製或者丟檔之類的啊?原因是因為我們通常所玩的絕大多數的網遊,都是用戶直接連接遊戲運營方的伺服器,即:主從式模式


大部分重要的遊戲數據,比如玩家所持的道具金錢等都存儲在遊戲伺服器上,並也在只在伺服器上做改變,玩家的客戶端,遊戲主機,電腦或是手機,只是一個 「終端」,負責與伺服器之間的交互,接收玩家的操作,把結果顯示給玩家等。


所以玩家的遊戲終端所發生的問題都不會影響到伺服器上的數據,更不會影響到其他玩家。而《集合啦!動物森友會》這樣的遊戲,作為一定程度上擁有自己存檔的 「單機遊戲」,在聯機上將會和前文提的網遊有著很大的不同。


每一名玩家都擁有自己的本地存檔,而為了確保在聯機前後玩家們的數據是同步的,且不會出現比如複製這樣的漏洞,這便引出了我們接下來要討論的話題:分布式數據的同步問題。


數據同步問題


分布式這個概念可能對於現代的人來說既熟悉也陌生,或者廣義上有人也會把這種概念稱作「雲」。


但其實關於這方面的概念和技術在計算機領域已經深入研究了幾十年了,這其中數據同步是一個細分的技術領域,很多問題至今也沒有完美的解決方案。


我們不會在這篇文章中討論這些複雜的計算機科學技術,但可以藉此機會管中窺豹,同時探討下是否有更好的聯機方案。我在接下來的內容中會儘可能簡化聯機模型,真實的運作機制肯定還會有更多細節上的步驟。


分布式數據的同步會引出一些單機所沒有的問題。主要的問題為:


主機間同步的數據是否準確一致;


主機之間數據通訊所產生的時間延遲;


數據不同步或發生錯誤時的應對方法。


我們先看看《集合啦!動物森友會》的聯機模式時如何解決這些問題的。


最簡單的情況,玩家A開放小島,稍後玩家B進入,過一段時間後玩家B離開小島。容我用圖表來表示這其中數據存檔的過程。



玩家A在開放島嶼後,會進入 「聯機模式」,此刻開始產生的數據不會再自動保存,直到下次保存事件的發生。玩家B申請進入玩家A的島嶼時,此刻玩家A將會保存當前數據,並把小島的信息發送給玩家B,這時玩家B也會自動保存,接收完小島數據後,進入玩家A的小島。


在此時,玩家A和玩家B在該島上實現了數據的同步。在這期間雖然玩家可以互動,數據也在實時交換,但並沒有寫入到玩家們本地的存檔中。直到玩家B申請離開小島,雙方的主機才正式保存數據,給這次出島遊畫上了個句號。


那麼保存的數據是否準確同步呢?由於雙方都在實時更新數據,只要其中沒有發生錯誤,沒有人篡改本地數據作弊,那麼理論上數據是同步的,當然遊戲也會通過校驗來確保雙方在島上共通發生過的事情是一樣的。


再來看第二點延遲問題,由於網絡傳輸不可避免的會有延遲,這可能會導致保存的數據存在誤差。具體來說舉個例子,玩家B往地上剛扔了一大袋子鈴錢,假如在此時刻雙方玩家同時保存,玩家A由於網絡延遲還沒有收到玩家B扔下錢的信息,保存的數據中地上沒有錢。


在玩家B的保存數據中自己已經把錢扔在了地上。所以在雙方的保存數據集合裡,這袋子錢憑空消失了。為了避免發生類似的情況,最簡單的辦法就是設立一個保存前的延遲時間來給予信息足夠的時間來傳輸。


是的,你肯定想到了,這就是為何在有人進出島的時候有那麼隆重的 「儀式」,這都是為了給予存檔前必要的延遲時間來同步,包括數據時間戳檢查:判斷以哪位玩家的待保存記錄為最新時間,數據校驗等等。確保萬無一失後,各個玩家的主機才會開始正式保存。


那麼遇到了數據無法同步或者其他錯誤,比如哪位玩家掉線了怎麼辦呢?很簡單,大家也都知道了,就是 「炸島」,所有玩家的存檔回到上一次的保存點,中間發生的數據全部丟失。




在更多玩家加入後,運作機制同理。可以看出,這套機制姑且不提玩家們的遊戲體驗,至少很好地完成了在不同玩家主機間同步數據存檔的任務。不會出現複製丟失等漏洞,在功能上是合格的。


解決問題的可能


任天堂以做出優質體驗的遊戲著稱,但當前的多人聯機體驗顯然不能讓所有人完全滿意,即使這樣的設計可能是該遊戲開發團隊的工程師們左右權衡後的結果。但我們是否有可能設計出滿足了以上基本功能,並且儘可能去顧及玩家們的遊戲體驗的聯機機制呢?


我們來先試試直接解決當前玩家們的痛點。



能否省略玩家進出島時的 「歡迎/送別儀式」:前文中提到過,這段時間不僅僅是用來加載目標小島的數據,更是用來同步和存儲玩家之間的數據,如果取消或者縮短的話,很可能會影響到數據能否成功同步,對於網絡環境惡劣的聯機環境下更是尤為重要。


不過在有玩家入島時,島上的玩家會顯示「好像有人來玩了」,在這一小段等待時間後,島上的玩家會同時進行保存。理論上在此時刻已經完成了玩家間的數據同步,之後等待新上島的玩家加載數據的這段時間,應該是可以省略掉的。


假如其他玩家在保存完畢後就可以正常進行遊戲了,新入島的玩家還需要有一段加載小島數據的時間,這段時間結束後還需要同步其他玩家在這段時間內所產生的數據。如果有玩家還處於未上島還在加載小島數據的時候,有新的玩家申請上島等,這就又是一系列新的問題了。


能否避免「炸島」:當有玩家意外斷開連接的時候,為了防止數據無法同步,所有玩家退回到上一次的存檔點在當前的聯機機制中可能是唯一的選擇。


但也許我們可以嘗試儘可能減少玩家的損失,比如開啟定時自動存檔如何呢?聽上去似乎是個簡單易行的辦法,但稍微想一下就會明白,這和之前提到的為什麼玩家在進出島時有著歡送儀式有著同樣的問題:存檔需要同步


需要一段同步時間並在這期間阻止玩家產生任何數據更改行為。簡單來說就是如果有定時自動存檔的話,島上的玩家們可能會時不時被打斷並暫停住,等待所有玩家同步保存完成,再繼續活動。無法做到單機模式那樣自動存檔不會對遊玩產生影響。


進一步來看,存檔間隔時間如果設置的短,時不時的暫停住會很影響遊戲的流暢性。間隔時間長,「炸島」後的損失和沮喪感又會增加。


嘗試網遊式的聯機模式


既然通常的主從式模式的網遊不會發生這個問題,那動森的聯機機制是否也可以擁有一個公共的伺服器來處理島上的內容,變成主從式呢?理論上來說這是可行的,但並不實際,核心根源在於動物之森不是真正的網遊,遊玩之前不必須聯網


來試著設想一下這種模式將會發生什麼。島主在開啟小島大門的時候,島上的數據上傳至官方的伺服器,伺服器準備好了提供公共聯機服務。


島主也作為用戶之一登陸進了自己的小島,交互所產生的數據全部保存在伺服器上。其他玩家登陸上島也是同理,隨時進出小島,離開小島時就自己和伺服器同步後保存,不再存在玩家之間的同步問題,一切看上去都那麼美好。


那麼如果有人掉線了呢?好像也不會有什麼問題,對嗎?答案是否定的,有玩家掉線,雖然對其他玩家不會有直接影響,但掉線的玩家主機上還有著本地存檔,這就意味著這個存檔與伺服器是不同步的。


所以為了讓數據同步,這個玩家必須要再連接進這個小島,同步數據後正常離開才可以。在這之前不容許離線單機遊玩。


更麻煩的是,如果有玩家掉線後島主想關閉大門,這個島是否結束在伺服器上的服務呢?之前掉線的玩家怎麼辦,難道還要必須等對方上線才能結束嗎?這種種問題使得這種模式並不切合實際,更不用提這種聯機模式對於伺服器的壓力有多大,出於成本考慮也不會是個好的選擇。


結語


由於《集合啦!動物森友會》是個有著本地存檔的單機遊戲這個固有屬性使然,在多人聯機方面需要面臨種種挑戰。希望這篇文章能對大家對於當前動森聯機模式的種種不便給出一個簡單的解答。在這些看似不完善的模式背後,可能也是工程師與開發人員的妥協與無奈。


最後,由於本人對於動森網絡聯機的實際運作機制以及細節並不了解,以上原理是根據對於遊戲運作時展示的特徵,結合相關知識進行的假設。若有錯誤,懇請指教。


相關焦點

  • 動森鱸魚,再也不想見到這種沒有良心的魚!
    三體社區特約科幻作家 吳霜青年科幻作家、編劇、科幻活動家全球華語科幻星雲獎獲獎作者代表作《雙生》《捏臉師》0 1 再也不想見到這種沒有良心的魚!眾所周知,我是科幻作家裡最會做飯的。前幾天,我想請朋友到家裡吃飯。考慮到疫情期間,大家的體重都不太樂觀;我便自信地發去了近期常做的菜——清蒸鱸魚的圖片。
  • 時間、季節、半球詳解《動物之森》動森小知識
    動森的時間設定採用的switch系統時間,與現實時間流動一致,也就是說:你在春天它也在春天,晚_上打開看到的也是晚上。p.s. 島上的天氣是隨機的,沒有跟現實一樣。所以在遊戲開局時會讓你選擇所在洲,這裡說一下南北半球的選擇:1.由於動森的沉浸式玩法,建議選擇自己生活的半球,會體驗與現實相似的四季變化。2.如果你與朋友一起玩互相串門,可以選擇南半球,這樣可以與朋友互補。
  • 深扒動森博物館裡的隱藏玩法和彩蛋
    也在玩動森嗎?關注動森研究所,讓我們帶你浪。
  • 動物之森怎麼建造迷宮 動森迷宮規劃思路及建造方法
    :原標題:動物之森怎麼建造迷宮 動森迷宮規劃思路及建造方法 動物之森怎麼建造迷宮?經過五一勞動節活動,很多玩家都萌發了建造迷宮的想法,那麼我們該如何在自己的小島上打造一個迷宮景點呢?動物之森怎麼建造迷宮 動森迷宮規劃思路及建造方法 動物之森怎麼建造迷宮?
  • 動保組織盯上《動森》:不要在遊戲裡釣魚,魚也是會痛的!
    各位已經上島的動森玩家們,是不是又開啟了新一天的休閒模式,為了建設自己的小島而奮鬥著呢?為了建設好自己的小島,不少小夥伴開啟了釣釣魚,賣賣菜的休閒時光。然而,最近動森卻被動物保護協會組織(PETA)給盯上了,這個組織專門發布了一篇「動森指南」,希望能夠解決一些「棘手的道德問題」,在島上生活也能幫助到動物們。
  • 浪人觀察:動森這麼火 為何有些人已經開始「棄島」了
    但當你發現房子可以擴建、家具可以自己做,還能花遊戲裡的錢買的時候,一個宏偉的計劃就誕生了。於是玩家每天都需要在海灘走一圈,看看有沒有裝著DIY手冊的漂流瓶,接著地上埋了東西的坑要挖一挖,石頭得敲一敲,樹木需砍一砍,魚兒再抓一抓。好不容易弄了點錢,衣服店跑一圈,商店走一遭,剩下那一點還上房貸···這一套流程走下來,時間也就這樣過去了。
  • 動森7月昆蟲及魚類圖鑑
    你也在玩動森嗎? 關注動森研究所,讓我們帶你浪。 在即將到來的7月裡,又有哪些新出的魚蟲可以捕捉呢? 今天,我就為大家帶來七月即將上線的昆蟲和魚類圖鑑。
  • 動森攻略| 抓到蝦夷扇貝為什麼沒有阿獺?人魚和海盜系列有哪些?最新更新答疑!
    雖然在現實生活中還不能去遊泳,但是在動森世界裡換上潛水衣就能跳水遊泳,還可以體驗一把「海底撈」!每次大家撈上蝦夷扇貝的時候還有可能遇到新的NPC阿懶,它每次不僅會給你「好東西」,還會給你送上一句心靈雞湯,可別說,阿懶有時候說的話還怪道理的呢,比如下面這幾句:          可是這次更新,想必大家還有一些疑問。人魚DIY到底有多少種?為什麼撈到了蝦夷扇貝卻沒遇到阿懶?
  • 動森裡的流星雨什麼時候來?各種星星道具如何獲得?
    動森裡具有一個完整的天氣系統,雖然大部分時候都是晴朗的,但偶爾還是會有陰天和雨天。而最讓玩家驚喜的天氣,應該就是「流星雨」了。因為在流星雨來臨的時候進行許願可以在第二天的沙灘上撿到星星碎片。並且在流星雨當天還能和博物館館長的妹妹對話獲得家具的獎勵。
  • 動森裡奇奇怪怪、價格很貴的昆蟲在自然界長什麼樣?
    動物森友會》(傳說中的動森)非常非常火。今天看了半天B站視頻,我覺得這個遊戲有點過家家的意思。遊戲裡的設定跟之前玩的《星露谷物語》有點像。不過今天想說的是這裡面的昆蟲。你們知道動森裡那些奇奇怪怪的、價格很貴的昆蟲在自然界長啥樣嗎?
  • 周末玩什麼:猛男遊戲「動森」,《極樂迪斯科》中文版
    動物森友會》(あつまれどうぶつの森)已經不需要我來推薦,你早就已經玩上了。如果你還沒有玩上,我強烈推薦你去試試!很難用語言來生動地解釋這款遊戲究竟玩的是什麼。和可愛的小動物們在森林裡過日子——這樣的描述或許過於抽象,可只有在玩過之後,你才會明白這個遊戲的樂趣在哪裡。「動森」的魅力在哪裡,請允許我用一個真實的故事來說明,這是關於一位猛男的故事。
  • 當你離開「動森」3個月後,小島上會發生什麼?
    流失我開始聽不懂大家討論的「動森」內容是在 5 月底快到 6 月的時候。5 月中旬,我因為在工作上有了一些新的變動,工作量的增加讓我無法再像 3、4 月份遊戲剛發售那會兒一樣,每天都能抽時間到「動森」裡瞎轉悠,但我每晚下班後如果有時間,也依舊會在「動森」玩家群裡看大家聊天,時不時插幾句話,自我麻痺自己還沒有流失,只是暫時按下了暫停鍵。
  • 動森攻略|今夜你想許什麼願?動物之森流星許願全攻略!
    不知道大家是否在動森見過流星,或者是否曾經許願過。以下是咩咩醬在動物森林中看到流星許願的完整攻略!首先先放一張動物之森的流星十二星座和星空系列全道具家具圖紙合集,大家快來看看有沒有你心動的家具:看那個新月形的椅子,月球等,有沒有心動的感覺?
  • 逆水寒與動森是屬於前者還是後者
    然而,前不久育碧卻對阿里提起了訴訟,他們認為《Area F2》抄襲了《彩虹六號:圍攻》,緊接著事情還沒有過多久,昨天逆水寒又被網友們集體聲討,說他們的新版本抄襲了《動物森友會》。眾所周知,今年上半年來動森發售之後,在主機界幾乎橫掃了所有對手,作為任天堂手中的王牌之一,遊戲性自然不必多說,動森能火完全也是憑藉任天堂在遊戲中的創意和貼近現實的設定,但遊戲本質還是一個經營養成類的遊戲。
  • 動物之森礦場不長石頭怎麼辦 動森礦場不刷石頭解決辦法
    動物之森礦場不長石頭怎麼辦?為了快捷便利的刷取石頭,很多玩家都在遊戲中打造了礦場,但不少人都遇到了礦場不刷新石頭的問題,今天小編要為大家帶來的就是動森礦場不刷石頭解決辦法了,一起來看看吧!  動物之森礦場不長石頭怎麼辦  石頭沒有刷新很大的原因可能就是礦場沒有規劃好,存在一定的漏洞。
  • 因為和「大麻」重名,Facebook正在刪除提到「雜草」的動森帖子
    不過最近在Facebook上,動森反倒用一種離奇的方式變成了「敏感話題」。準確地說,是遊戲中的「雜草」與「交易」成了被禁止討論的話題。上圖是Facebook上一個動森討論組貼出的公告,公告的大意為:「不要在遊戲的討論中提及『雜草』或者『交易』等詞語,儘可能使用『野花』等近義詞代替,雖然我們知道這確實很蠢。」
  • 《動森》全網電商下架,原因是內容高自由度,還是無腦加價造成?
    不少以前沒有購買的網友表示,總之就是後悔,非常後悔!但是別擔心,雖然電商平臺上無法購買,但是線下實體商店依舊能夠購買的,所以大家還是有機會,不要這麼失落嘛!這款遊戲火熱到什麼程度呢?就是周圍的人,小到上小學的學生,大到幾十周歲的爸爸媽媽們,都在玩。
  • 來自動森的婚禮,動物主題婚禮,不僅有自由還有未來感
    最近,身邊的朋友們大致能分為兩種:「動森玩家」和「沒有Switch的人」。自從「動物森友會」在隔離期間出圈,被稱之為「生活」的吉光片羽,通過這個遊戲重新與我們聯結起來。除了各有各美麗的隨心島建之外,幾百種不同小動物的島民設定也是動森引以為傲的亮點之一。
  • 動森玩家已經被鱸魚逼瘋了!遊戲才發售漲價50%!
    全 民 公 敵上一次記住「鱸魚」這兩個字時還在背誦「休說鱸魚堪膾」的動森玩家大概沒能料到,《集合啦!動物森友會》發售僅一周,就把「鱸魚」這個詞深深刻進了他們的腦子裡。在聽到「鱸魚」的瞬間,相當一部分動森玩家會不受控制地展現出沮喪失落、焦躁不安乃至於勃然大怒等情緒,這是十分典型的鱸魚創傷後應激障礙(鱸魚PTSD)。
  • switch動物之森星星碎片有什麼用 動森星星碎片獲取攻略
    switch動物之森星星碎片有什麼用?相信很多玩家都知道,我們每天上線的時候,狸克都會通知下今天的廣播新聞,如果廣播中有提示今晚有流星雨的話,我們就要做準備了。 動森和現實時間對應的遊戲玩法讓遊戲充滿了小驚喜。而今天博士就來為大家介紹遊戲中的流星雨。流星雨是在夜空中有許多的流星從天空中一個所謂的輻射點發射出來的天文現象。