關於數值策划在使用Excel表時的一點想法


在之前的MMORPG項目中,我曾經迭代過3版自己設計的數值表,新的一版出來后都對上一版有很大的改進,也算是對我在做數值策划不斷進步的一個見證。

最開始的一版設計出來后,粗略地看是有點晦澀難懂的,而且跟組內其他同事講解設計思路的時候,需要自己順着Excel表的公式引用一步步查找,然后還要將Excel公式的意義還原,方便同事理解。這個時候,每一次講解就相當於自己在腦海里重新設計一版數值了,耗費了大量的時間,效率很低。后來就開始琢磨迭代第一版數值,保證自己在過一遍的時候,能夠比較順暢,思路能夠清晰,於是對每一步的結果是如何得到的都進行了說明和解釋。當第二版數值出來的時候,我就去找主策,跟主策講解整張數值表,發現效果比之前要好很多,也快了不少。但是似乎還是不夠,因為在講解的過程中,發現主策是需要根據我一步一步的說明往下深入,直到我講解完,才能夠提供給我一個后續深入的想法或者優化意見。這時候發現,自己設計出的表讓其他人去讀,似乎並沒有得到很大的改觀,其他人需要找到一張表的起始位置,然后結合我給出的說明一步步往前推,但中間的一些結果其實他們並不怎么關心。其實這個時候,大體就明白了建表的需求了。后來完成的第三版設計,有了更大的改進,也反過來驗證了我的想法。整個的歷程大致就是這樣的,下面我就把一些在使用Excel表時的一些tips列出來供大家參考,也供自己后續不斷反思。

數值表的需求

  • 數值策划的需求:提供輸入數據(參數)來源、必要的中間結果、最后的輸出數據,方便數值檢錯、數值調優
  • 其他人的需求:提供必要的文字說明、流暢的數據流體驗,方便數據邏輯上的理解
對於數值策划的需求,這個是最基礎的,也是必須的。必要的中間結果需要根據項目的具體系統提供具體內容,這步沒有做好的話,在設計完數值表以后去檢錯、調優,效率會比較低。對於其他人的需求,其實這算是用戶體驗方面的內容了。這點上面感覺很少有人會去關注吧,之前在一個數值群里看到一張圖片,一個公式中嵌套了多個IF和其他函數,當時真是驚呆了,這樣的公式一旦有個小改動就完蛋了。對於一個負責任的數值策划來說,不僅僅要將數值感受的體驗做好做強(對外),也應該關注一下自己建表用表的體驗、講解Excel思路時其他人的體驗(對內),不要求做的表格多好看,只要做的邏輯清晰、讀表流暢就OK了。

Tips1:對數據進行分類處理

  • 數據類型分類

一般而言,一張表中主要會產生四類數據:輸入數據(參數變量)、中間結果數據、統計數據、輸出數據。
  1. 輸入數據(參數變量):這類數據是原始數據,需要在進行計算時事先提供,后續數值調優是根據調整輸入數據來完成的
  2. 中間結果數據:這類數據是在進行多步驟時的運算,保留下來的一些過程中的結果,后續的數值檢錯需要用到這些數據來進行定位
  3. 統計數據:這類數據主要對中間結果數據或者后面的輸出數據進行統計,可有可無,可歸並到兩者中,輔助用來觀察數值調優的效果
  4. 輸出數據:這類數據就是我們設定的目標數據
可能不同的數值策划有自己不同的分類,但是做了分類處理,在數據的查找上就不會太浪費時間。
  • 數據區域分類

結合上面的數據類型,將不同類型的數據放置到不同的Excel表區域中。為了便於理解以及閱讀習慣,區域按列從左往右進行划分,依次為輸入數據(參數變量)、中間結果數據、統計數據、輸出數據。
  • 數據顏色分類

結合上面的數據類型,將不同類型的數據賦予不同的背景色。這樣做的目的也是為了方便快速查找,畢竟我們對不同顏色還是非常敏感的。這里,最好將背景色的區分度做強,將數據界線划分明顯。

Tips2:不同表之間保持一致性

  • 保持不同表之間數據類型分類的一致性
  • 保持不同表之間數據區域分類的一致性
  • 保持不同表之間數據顏色分類的一致性
如果你設計的第一張表的輸入數據標識為綠色,那么后面其他的表的輸入數據也應該設置為綠色背景色,盡可能保持低的理解認知成本。同樣的,不同表之間的輸入數據區域盡量統一放置在表的最左方。

Tips3:添加必要的文字和公式說明

這條tips的內容不同於我們平時寫的數值文檔,數值文檔上面主要是包括數值策划提供的配置內容以及邏輯規則或公式,方便程序完成不同系統上數值方面的實現代碼,只需要讓程序知道如何實現即可,至於為什么是這樣實現的則放在這里進行。
你需要在每一張Excel表中開出一塊區域專門用來對表中計算的每一個數據進行必要的文字+公式說明。如果某些數據的計算是通過VBA實現的,可以在相關代碼中進行標明,可以在每一個Sub的上面進行注解,也可以在Sub中的相關代碼進行標注。
這一條tips存在一定的工作量,如果選擇不做,可能你做出的表過一周就不記得結果是怎么一步一步得出來的;如果選擇做,建議你可以在每天下班以后進行補充,這樣不會影響建表效率,同時延后一點總結有助於進行數據檢錯。會有這么幾個好處:
  • 適當讓自己慢下來,總結之前設計的思路和反思
  • 數據檢錯,就像做完考題后再回過來進行檢查,減少出錯的幾率
  • 加深記憶,有了文字/公式說明,就不用過很久跟其他人講解的時候花費更多的時間再去推導一遍
  • 如果以后不得不離開公司,方便交接工作

Tips4:不同表之間的跳轉

一個游戲的系統和玩法會很多,每個系統或玩法都至少需要用到1張表,做到后面你會發現你的Excel表已經有幾十個分表了,這個時候就需要不同表之間快速跳轉來免去我一張表一張表的查找了。
關於數值策划在使用Excel表時的一點想法 - 建築學概論 - Seven的部落格
  Excel表有提供表與表之間的跳轉功能,就是上圖中紅色區域,右鍵點擊就會彈出一個選擇不同表的框供跳轉表格。個人覺得這個操作步驟有點多,所以基本上我不會去用這個功能,都自己會在第一張表建立目錄,然后之后的每一張表都會提供一個返回目錄的功能,極大的縮短了我找表的時間。如果你的目錄表設計的不錯,就更不用為找表而煩惱了:)。

Tips5:單元格公式的簡化

  • 函數個數的簡化
如果一個單元格用到的公式里面包含了十幾個函數,看着都累,還容易出錯。所以,盡可能的減少公式里使用函數的個數,盡量控制在5個以內,最好是3個。如果存在IF語句嵌套,最好在2層IF語句以內。如果計算步驟實在多,完全可以使用輔助列來幫助解決問題。
  • 函數替代
Excel中可以用很多函數來實現相同的功能,比如反向查找功能,可以用sumifs函數實現,也可以用vlookup+if函數或者vlookup+choose函數來實現。在這里,選擇一個高效的函數是十分必要的,越是到后面,高效函數帶來的效果越加明顯。這里,沒有很多規則可言,不過能不用數組計算就盡量不用。
這條tips做好了,能夠減少Excel表的文件大小容量,第二版數值出來,我拿去跟第一版數值表對比的時候,我深有體會。同時,也能加快Excel的運算效率,方便后面進行數據調優。

Tips6:利用VBA處理復雜過程

如果計算時涉及到一些邏輯層面的復雜過程,可以考慮使用【按鈕+VBA】或者自定義函數模式進行數據運算。

Tips7:輸入數據(參數變量)做詳細說明

這條tips的想法是來自於我轉載的文章《AI中的參數系統設計》一文,把這篇文章的想法放到這里來也是通用的。
輸入數據的詳細說明盡可能滿足以下幾個部分
  • 用於識別的名稱(中文)、字段(英文)
  • 數據類型:整型、浮點型、字符串、長整型、字節型......
  • 當前值:該參數當前的合法值,保證數據能跑通
  • 數據的定義域:數據的數值在定義域內是合法的,用來檢查合法性使用
  • 參數描述:對於該參數的簡要描述
  • 趨勢描述:對於該參數的變化所帶來的影響的簡要描述
  • 引用關聯項數組:該參數所影響的參數項列表(P1,P2,...,Pn)
  • 被引用關聯項數組:影響該參數的參數項列表(P1,P2,...,Pn)
在具體落地實現的時候,其實只是將最早的數據名稱+數值這種結構擴展到上面的參數系統結構而已,在Excel表中其實只是額外的增加了幾列內容。而這幾列內容能夠在你進行數值調優的過程中,指導如何進行參數大小的調整來逐步逼近想要的結果。

Tips8:邏輯從左往右進行

跟上面的輸入數據區域分類一樣,保持上一步的計算結果顯示在下一步的計算結果的左邊列,主要是為了減少理解成本,跟代碼中盡量減少使用loop語句是一個道理。

Tips9:禁止工作簿與工作薄之間的跨表鏈接

不同工作薄之間的跨表鏈接會帶來很多問題,比如表打開時的數據更新問題、表自身的容量也會因跨表鏈接而增加等等。之前做的項目因為有使用跨表鏈接而帶來了很多不必要的麻煩,經常出現刷表失敗,或者刷完表后進入游戲查看發現效果不變(因為你更新了一個工作薄的數據后,還必須打開關聯的工作薄進行數據更新,當時簡直嗶了汪了)。
所以,不要進行工作薄與工作薄之間的跨表鏈接,同一工作薄內各個表之間的跨表鏈接是允許的,不會出現什么問題。如果因為工作表數目過多,而必須進行工作薄跨表鏈接,建議把需要跨表的數據放置在一個區域中,方便管理。
 
關於自己在使用Excel表時的一些小tips,大概收獲的就是這么多了,后續在以后的工作中有想到,會接着在這一並補充 :)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM