由一個有趣的交互BUG引起 兼談游戲的引導系統

>>>  創業先鋒 眾人拾柴火焰高  >>> 簡體     傳統


文 / 顧露 授權GameRes游資網發布。

  近日在iPad上玩一個叫《變形金剛》的游戲時,遇到了一個無響應的 bug。想了想感覺可以記一下,寫在這兒,對自己也是個提醒。

  當把游戲放下,過段時間后從解鎖屏幕恢復時,這個游戲就無法響應任何的觸摸輸入了,屏幕上的具體情況如下圖:


  有經驗的開發者,光靠這個截圖,應該就已經大致明白發生了什么問題了。我們簡單分析一下吧:

  中間的消息框,是提示會話已過期需重新登錄,這一類對話框很常見。為了防止玩家在登錄已經失效的情況下操作,這個對話框通常會被設計為模態的,也就是所有其它的界面響應都會被它攔截,只有“確定”那個按鈕能響應用戶操作。

  而在屏幕下方,呈現的是一個標準的新手引導提示——所有的界面元素全部被遮擋,只有屏幕下方正中間的“劇情”按鈕被高亮提示。

  明白了各自的作用,理解這個“全屏無響應”的現象就很容易了——它們倆不約而同地覺得自己是全屏唯一該被響應的元素,其他所有元素都得被攔截。結果就是它們互相把對方給攔截了,誰也響應不了,整個游戲就死鎖無響應了。

  原理說明白,解決方案就很簡單了。

  • 首先,最簡單的方案是,設計上顯式指定響應的優先級。如讓失效提示總是比新手引導更“高”,也就是彈框能無視新手引導的屏蔽(或反過來)。對代碼做最小的修改,讓他們彼此不沖突即可。(方案A)

  • 其次,稍復雜的方案是,讓模態對話框和新手引導使用同一種機制去做屏蔽全屏觸摸的操作,而通過那種機制去保證多個獨占的界面元素同時發生時不會產生沖突。比如在有的操作系統上,當屏幕上已有一個未處理的模態對話框而又彈出一個時,原有那個會臨時隱藏,待新的那個響應之后,原有那個會又彈出來,也就是一個“棧(stack)”的串行機制。這個機制的好處是,再有新的獨占元素加入,也很容易納入支持,代碼里可以以統一且一致的方式處理。(方案B)

  • 最后,針對新手引導的特點,還有一種做法可能會讓代碼邏輯更簡單和清晰——當新手引導中高亮獨占的元素時,總是按照那個元素的區域在屏幕上的一個特定層生成一個隱形的新按鈕。當玩家觸摸時,總是把觸摸事件由這個隱形按鈕轉發給對應的元素。這么做看起來是把事情復雜化了,但實踐中往往能簡化問題,因為跟那個被獨占的目標按鈕 (可能出現在 UI 場景樹的任意層次上) 不同,總是臨時創建新按鈕,可以保證新手引導的所有交互始終發生在指定的那一層,極大地降低了新手引導與其他游戲機制沖突的可能性。(方案C)


  大家知道,新手引導通常是縱貫整個游戲的所有功能模塊的,一旦管理不善,瑣碎的 bug 簡直層出不窮。而且如果新手引導與被引導的具體功能交互按鈕耦合過緊,模塊內部的修改很容易波及到新手引導。(這也是新手引導往往都是項目后期才加進來的原因,當結構還在大改時,加新手引導就是作死啊)

  通過一層間接性,把引導系統和每個模塊的具體 UI 實現隔離開,就能降低引導系統被無意中破壞的可能性,從而提高整個項目的工程質量。

  這三種方案無所謂孰優孰劣,在不同的情境下,它們都有值得被考慮和實現的理由。進度壓力和圖省事,往往會使得我們選擇方案A,但是,只有清楚ABC各自的利弊得失,并作出符合當時情況的選擇,才能在項目的不斷演進中,對潛在風險的變化情況做到心中有數。

  說完了這個交互的 bug,我想把話題轉換一下,談一談作為一個普通玩家,我自己喜歡什么樣的引導。這一部分非常主觀,能堅持看下去的同學也挺不容易了,就隨便看看吧。

  相比那些全屏獨占,一步一步強制引導玩家完成整個引導流程的游戲而言,我更喜歡那種不主動打斷玩家的,不強制執行的,比較溫柔的引導提示,用黑話講叫“非侵入式的引導”。當打開一個新游戲的時候,與其被引導強制帶著完成十幾甚至幾十步操作(這個過程有的游戲甚至長達5分鐘以上),我更喜歡自己戳戳點點,看看會發生什么,這其實是一種很重要的樂趣。就好像新買了一個游戲機,我們一般不會去捧著說明書按部就班地走一遍流程(不管它印刷得再精美),而是會插上游戲抄起手柄立刻來兩盤。

  非侵入式的提示有很多種,比較常見的有這些例子:


  圖標或按鈕的右上角紅點或數字——常用于新的功能開啟,新的事件發生,新的消息收到,新的獎勵可領,等等。


  不需要手動確認的“氣泡或文字標簽”——“點點這里會有奇妙的事情發生哦”


  中世紀的戰役視角,是非常典型的溫和型提示系統。注意看左邊側邊欄的一豎排事件圖標提醒——如果你不處理,它就靜靜待在那里,處理之后即刻消失。而左上角的語音和文字提示是純被動的,完全不影響任何玩家當下做出的操作。這些小的細節交織在一起,給整個游戲營造出一種非常溫和,克制,與友善的氛圍。

  總得來說,非侵入式的提示比一步一步的機械引導,對于設計者而言需要更多的思考和嘗試,因為玩家和非玩家,對不同游戲類型的熟悉度,都會導致不同玩家對引導完全不同的需求。常見的是,有的玩家拿起來就能玩,他們會跳過任何提示;而有的玩家不管你怎么引導都不知道該怎么玩(無關智商)。有時,我們也許只是太久沒玩一個游戲,忘了在游戲里能干些什么,應該怎么操作,而引導系統又怎么能知道我是否還記得怎么玩,啥時候想要再重溫一遍哪個系統的引導呢?

  一些單機游戲在這方面顯然有著非常細致的考慮,它們會把游戲的玩法(和劇情的進展)以完整的百科全書 (或可交互的方式)放在一個角落里。隨著游戲的展開,玩家隨時可以回去查看和熟悉:


  《英雄傳說:閃之軌跡2》里有非常完善和排版精美的百科全書式游戲機制說明。


  《討鬼傳·極》中玩家可以隨時以新手任務的形式重溫各種不同武器的玩法。

  說起來,如果我們不能把引導系統設計得那么聰明,那不如下些笨功夫,像這些單機游戲一樣,做得細致一些罷。



GameRes游資網 2015-08-23 08:48:01

[新一篇] 小黃鴨調試法 每個程序員都要知道的

[舊一篇] 需求分析之經驗之談
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表