iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
SideProject30

年輕人,想玩自己寫!系列 第 21

第二十章,你掉的是這個金成就?還是這個銀成就?

  • 分享至 

  • xImage
  •  

昨天提到了有關成就列表的設計要注意的事項。
那麼如何實做呢?

設計成就資料表

我們可以將成就分成下面兩種不同的資料類型:

  1. 一次性解鎖
    就是達到某個條件後得到了這個成就,之後就不會再來修改的資料型態。
    也因為這樣,所以他主要的記錄方式就會是布林值。
    此外,一旦玩家得到這個成就後,也不應讓他有被更動的可能。
  2. 累積性解鎖
    這類型的成就是依數量變動的,達到基本數量可以得到基本的成就,再進一步則可能得到下一階的成就。
    有點像是前一種成就的列表,依數量給出下一個成就。
    依數量成長達成的里程碑,給出不同的獎牌或進一步的名稱,這樣的成就類型。

同時,成就本身也會有不同的狀態需要注意:

  1. 是否已顯示
  2. 是否已獲得
  3. 是否仍有效

依照上面的討論,我們就可以得出下面怎麼設計一張成就資料表的結論:

Achievement 成就資料表設計

  • ID(String)成就ID,唯一值
  • NAME(String)成就的名字
  • DESCRIPTION(String)對成就有趣的描述
  • ICON(File/Uri)圖示、圖片,如果有的話
  • IS_HIDDEN(bool)為隱藏或顯示狀態
  • AMOUNT(int)所需數量,若不為0則為累進性成就,依數值判定成就內容
  • APP_VERSION(String)程式版本,確認在不同版本中有作用的成就內容

成就與遊戲的關係

成就應該是要帶給使用者驚喜的感覺,但又不能中斷使用者的遊戲體驗。
因為這樣的原因,在使用者獲得成就的當下,一定不能什麼都不提醒,也不能直接跳出對話框打斷他的行為。
一般常見的做法是跳個像是Toast的信息,或是在畫面的某一角小小提醒他一下。
結束遊戲後,也會在可以查看成就的地方出現明顯的引導。
在「30天煉成」這個遊戲中,我應該會跳個SnackBar提醒一下(這樣我就不用特別再重畫UI),
同時考慮要不要直接發notification給使用者,這樣在他離開遊戲後,也會被提醒得到了成就。
而且發的當下就會跳出提示了,一舉多得。
/images/emoticon/emoticon01.gif

展示成就與使用者資料

成就資料表可以是一開始就寫進資料庫,然後在成就頁面時依資料表的條件顯示。
因為成就頁面就是要羅列所有已得到或可能得到的成就,所以這樣的設計是合理的。
但在使用者資料頁面,也應該會有能展示成就的地方,類似勛章一樣的設計。
可以是在得到的當下,修改成就資料表的同時,一起修改使用者資料,讓他在使用者頁能展示這個新成就。
也可以設計成讓玩家能在使用者頁面,選擇想配戴哪個成就勛章。
這部份會再思考看看,哪種設計會比較能讓玩家有成就感。
/images/emoticon/emoticon13.gif

參考
Achievement 成就系統


上一篇
第十九章,你渴望成就嗎?
下一篇
第二十一章,你很誠實,所以我決定讓你的手機響個不停(上)
系列文
年輕人,想玩自己寫!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言