遊戲數值策劃憑一張Excel表就可以一招鮮?

恩皮西發表於2024-01-18
開篇先講<個人數值設計規範>

實現下文所需的功能,需要的知識:

物件導向程式設計思想基礎知識+資料庫基礎+精通EXCEL公式+熟悉VBA

樹狀多表引用結構

多層樹狀表格關係結構:

遊戲數值策劃憑一張Excel表就可以一招鮮?

可以根據系統層級進行分類,首層應該只有一張表,決定遊戲最核心的體驗引數。末層應該有3張表。除了末層之外,都屬於設計表。下面對上圖中的四種種表進行簡單分類說明:

設計表:

儲存基於各個層級的設計資料。設計資料應該只儲存在相應層級,如果各個不同系統之間有強關聯,應該用一個上級層級表來規劃系統之間的關係和結構。

資料表:

和程式的介面,用於程式讀取資料使用,但是也需要策劃對該表的檢測識別,查錯等。

資料表說明表:

用於記錄資料表的約定規範,該說明表應當保證資料表的可讀性。

列舉表:

約定而成的列舉,用於儲存基本的分類和結構,但不是設計資料。

引用和資料管理規則

基於資料庫規範的資料管理。只做簡單介紹,詳細自行學習資料庫正規化

原子資料:

應當要求設計表中所有資料都是原子性的,一個用於設計的單元格只儲存一個資料,用於計算的過程組裝資料則不需要適用,同樣,末層資料表不需要適用、

0冗餘:

同一個資訊的資料應當採用引用,而不應該出現在2個地方,對於表格維護有災難性後果,引用應當符合表格層級關係,下一層級只能引用上一層級資料,如果跨層引用,應當給每個層級都複製資料引用區域。

主鍵關係:

(適用於vlookup)查詢關係只依賴於主鍵:對於range區域(矩陣),應該擁有唯一主鍵,並且查詢關係只依賴主鍵,同資料庫第二正規化。同樣目標為了明確資料關係,並且更容易配合excel函式lookup系列。

巴斯-科德正規化:

每一個碼都是完全函式依賴,任何非主屬性不能對主鍵子集依賴,該正規化對於資料表是否會出現空資料等情況有良好的改善,適用於大範圍不同列舉型別的通用性公式。

表結構

設計表

可讀的分組表

遊戲數值策劃憑一張Excel表就可以一招鮮?

設計表表中就應該擁有明確的分類規劃,增加可讀性並且明確資料影響範圍。資料表主要有如下三類資料,分別為引數,曲線,舉證。

引數:

決定遊戲內某個部分關鍵資料,該資料是獨立的。不受其他資料影響的。

曲線:

決定各類資料的趨勢資料,該曲線應該部分由引數決定,如首尾資料,如積分資料,在各類成長系統,線性,離散的不同等級的部分都會用到。曲線常見應該是一個2列或者2行的資料區域。

矩陣:

最常用的資料區域,在excel裡佔用一個range。是設計表的一個子表。可以獨立成為一張小表。該表格會決定各類列舉的設計分佈,如不同職業屬性。矩陣在過程中也常用於儲存資料。

計算過程:

引數+曲線→計算後的曲線

引數+矩陣→計算後的矩陣

曲線+矩陣→計算後的矩陣

計算規則:

資料儲存規則:區分原設計資料和計算資料,用不同的顏色區分,在調整資料時應該只修改原設計資料。

資料計算規則:資料計算應該充分考慮各種極端情況以及報錯情況,對報錯情況進行標識處理,主要是有2個目的,1:暴露錯誤,不把錯誤帶入下一層級計算。2:最佳化錯誤,使允許的錯誤不影響下一層級計算。

資料表

表格通用資訊:

表格名稱,表格英文名稱,表格型別,

表格所屬系統,表格所屬模組

表格預留表頭前空白區域儲存這些資訊,方便在各處整理歸納,以及跳轉,目錄等功能的實現。

關係型資料表

Excel的表格常規是普通二維表格,我們需要透過對欄位的管理增加表格關係,從而把它改造成關係型資料表。主要的部分是對欄位的規範以及自定義的外來鍵部分。

唯一識別碼:

每個欄位在所有的表裡應該擁有唯一識別碼。常用的唯一識別碼是:表格名_欄位名。該名稱應該是唯一的並且和表格中的每個欄位意義對應,從而可以樹立不同資料之間的關聯關係。在有了關聯關係之後,就可以對關係的檢查以及跳轉,大大增加了表格的可讀性以及查錯能力。

主鍵:

每張表格應該有唯一主鍵欄位

對於主鍵的ID應該有一套完整的基於系統結構的ID規範,使ID出現時可以快速瞭解ID所代表的含義,可讀性的ID對於程式報錯時查錯有非常好的指導意義。但是不要在主鍵的ID中隱藏資訊和機制,如:用ID最後2位代表等級,省去了等級欄位,並且還節約了等級遍歷的操作。這種行為破壞了資料的原子性,可以在最終的資料表出現,但是任然不建議出現,儘可能的不要在設計表出現,對於資料的拆分組裝回變成一個繁瑣的工作。對於小型專案,節約程式成本而採用的ID帶有大量資訊的行為要客觀看待,在工作量和可擴充套件性中做出平衡。

外來鍵:

實現方法

規範化表頭:規範化表頭主要是為了實現欄位的可讀性,可是別性,同時可以提供欄位之間的關係(外來鍵),用於方便糾錯和跳轉。

欄位型別:主要是用於說明欄位的作用,用來區分於其他欄位,如:功能,數值,美術,音效,文案

欄位說明:和欄位外來鍵共同使用,2邊格式保持相同,主要是對欄位外來鍵的一種說明。

欄位外來鍵:使用欄位的唯一識別碼,和欄位的實際結構相同,用於識別院子資料的來源,方便查錯和跳轉。

欄位英文名:程式使用的,也是表內的唯一名稱,是主要的欄位標記。

欄位中文名:同欄位英文名,在一般情況下,優先使用英文名。

欄位資料型別:用於程式識別的欄位型別,可以是標準的資料型別:如INT,LONG,STRING,BOOL等,也可以是程式自定義的如Array,或者程式自定義的類。

規範化名稱管理

在公式引用資料時,應該大量採用名稱管理器。在大量的跨表的字母加數字的公式引數是幾乎沒有可讀性的。靈活使用名稱管理器可以解決公式可讀性問題。

一個好的名稱管理器的命名規範應該符合以下幾點:

  • 識別該名稱是否為單一數值還是range區域
  • 識別該名稱準確位置
  • 識別該名稱的準確含義
  • 在修改數值區域範圍時不需要修改名稱本身

常用的命名規範

全域性引數名稱

系統名稱_引數名稱

全域性引數不能過多,才能用最簡短的命名方法

區域性引數名稱

系統名稱_模組名稱_引數名稱

矩陣名稱

系統名稱_模組名稱_矩陣內容_舉證起始列名_矩陣大小

注意:

1. 系統名稱和模組名稱應該和表格名稱相關聯。方便準確查詢名稱資料位置。對於採用了名稱管理器的區域,應當用特殊顏色區分。

2. 名稱區域在右邊界和下邊界預留兩行和兩列,方便插入資料不需要改變名稱本身,同時也能繼承以前的區域格式。

表格糾錯

1. 外來鍵查詢自動糾錯,確保外來鍵內容存在

2. 填寫列舉部分資料,採用資料驗證部分,檢測資料合法性

3. 公式資料採用上面提到的錯誤處理方法,暴露錯誤或者處理錯誤

4. 匯出工具提供非法格式檢測能力。

表格自動化生成

核心引數:提前準備用於宏觀控制整個表的數值方向

資源列舉:文案美術音效列舉

屬性結構:各種型別的屬性結構提前設計(如:標準模型,職業標準模型,種族標準模型,模型關係)

分級結構:對於分級的欄位增加限制條件,(如:等級成長模型,星級成長模型)

設計計算方法:可計算屬性=F(標記屬性)   如,攻擊= F(職業標準模型,職業,等級成長模型,等級,種族標準模型,種族)

對於採用標準的設計方法的,末層資料表應該是可以透過VBA和公式進行自動生成的。減少大量的管理成本,可以將主要的經歷用在資料本身的設計上。

表格匯出

採用程式喜歡的匯出格式即可,常用格式不多,並且通用,在此並不多說。

採用vba可以實現一鍵匯出,並且同步版本管理(SVN),以及伺服器上傳和伺服器更新。對於快速糾錯提供方便。一組資料的除錯修改到表格自動化生產再匯出到客戶端和伺服器部分應該可以在20秒內完成。快速看到資料反饋,你就擁有更多的設計和思考時間。

儀表盤

對於設計資料部分儘可能多采用圖示結合的方式,提供更直觀簡潔的體驗,目前沒有找到特別好的報表工具等視覺化外掛,在此不多說,但是excel自帶的表格和資料也可以提升很多設計體驗。

常用工具

聯動檢視器。主要採用vlookup函式即可。需要將各類列舉還原成我們最熟悉的語言方便檢視。圖片部分採用index和Match函式來索引提前準備好的資源列舉。透過名稱管理器賦值給圖片,來顯示即可。圖片列舉可能需要批次的匯入,可以採用選擇性貼上union編碼實現,編碼如下:

<table><img

src="圖片路徑">

可以加入相關引數控制圖片大小。

匯出

遊戲數值策劃憑一張Excel表就可以一招鮮?

各類格式匯出方法,常用的如下:

XML,JSON,CSN,TXT,LUA

注意各種編碼格式,注意utf-8和ansi的區分,注意有無BOM區分。

附加功能

1. SVN提交,伺服器提交,可以採用shell來呼叫SV和伺服器的檔案傳輸工具即可。

2. 郵件備份,訪問指定的郵件介面,新增附加傳送郵件即可。

跳轉:

遊戲數值策劃憑一張Excel表就可以一招鮮?

這裡需要用到欄位結構標記以及關係型資料表中說到的外來鍵。需要表格中有其他表格ID索引的數值都可以跳轉過去。主要是對組裝好的資料根據資料格式進行拆解成為原子資料,並且對原子資料的外來鍵查詢,在透過搜尋找到對應的原子資料的位置,這樣可以應用於大量的資料檢視工作簡化,如,檢視英雄,檢視技能,跳轉到技能部分,檢視buff,跳轉到buff部分。

目錄:

為表格指定的模組提供快速的開啟隱藏功能,從而可以在一張表上管理大量的sheet而不會感到困難,可以透過表格的表頭規範來自動生成目錄部分。

整合:

對於及其常用的功能應該整合到一個通用的使用者介面,如:工具箱。

對於需要選擇區域的常用功能,應該整合到右鍵部分,這樣可以快速使用。

第三者訪問:

表格功能中有大量與路徑繫結的部分,對於路徑管理需要有統一的入口,為了方便其他同事對錶格的使用,應該提供各類路徑設定的功能。不然表格更換機器和路徑後功能則會失效。

幾年前寫過一篇文章《個人數值設計規範》,總結了我設計數值時的一些要求,但是很多人看了無法理解為什麼需要這樣的規範以及怎麼應用這些規範。我決定開一個坑,來作為解釋設計規範樣例。該樣例是一個真實的專案的完整資料表,包含一個多年專案的全部資料表和設計表。

遊戲型別:slg

設計方向:強互動的收集養成。

後面的主要內容是,不同系統在表格上是怎麼設計怎麼執行的。額外的功能工具是怎麼設計的。專案年代久遠,可能有一些錯誤,我也可能會隨時修改這個文章。

表格的製作是一張總表,透過自己的程式碼來實現目錄切換。從而管理超過200個分頁的sheet來使用。表格主要是我個人使用以及其他策劃和測試的閱讀和使用。專案中只有我一人作為數值,所以採用總表較為方便,只有我一人進行表格修改,所以也不會出現衝突問題,

總綱

下面我列出了一些可能要講的主題。

遊戲數值策劃憑一張Excel表就可以一招鮮?

目錄

一般情況下一個專案設計數值表也是從目錄開始做起,但是在真正做表之前一般會對系統結構和專案定位先做清楚,但是為了方便看錶格,我還是先說一下目錄。

目錄的存在主要是為了自己方便,也是升級了幾個版本,最原始,只是表格加上鍊接,讓我快速的找到對應的表格。是下面這個樣子的。

遊戲數值策劃憑一張Excel表就可以一招鮮?

但是很快,當表格數量擴張的時候,它就不夠方便了,於是自己做了一個目錄。就變成下面這個樣子了。

遊戲數值策劃憑一張Excel表就可以一招鮮?

這個目錄分為幾塊,主要功能就一個,快速找到對應的表。。以及一些功能按鈕。我逐一介紹,如果涉及到其他部分的功能,會在後續的文章中講解。

一、頂部功能區

遊戲數值策劃憑一張Excel表就可以一招鮮?

就是這一部分。

1.1左邊三個按鈕

是為了檢視錶格彙總使用的,第一個按鈕用於開啟三個彙總sheet。分別為

遊戲數值策劃憑一張Excel表就可以一招鮮?

在專案後期他們的用處就很小了。

第一個表格基本就是羅列了這裡面的所有sheet。

遊戲數值策劃憑一張Excel表就可以一招鮮?

接下來說欄位管理表,這個稍微有點用處,它把真個表裡的每個欄位都展示出來,可以檢查一些欄位命名錯誤或者表格格式錯誤。表格格式我稍後講到,因為沒有一個規範的表格格式,是沒法做出目錄的。

遊戲數值策劃憑一張Excel表就可以一招鮮?

這裡可以看到,我給每個欄位設計了一個唯一識別號,是表格名稱(不是sheet名稱)加上欄位名稱實現的,這個可以幫我們快速找到指定的欄位,後期其他工具對應指定欄位的查詢也是有用的。

最後一個表格關係表,就沒什麼用了。就不介紹了。原本是像做一個網狀的表格引用關係的視覺化圖,後來沒有時間去實現,對於專案本身也沒有什麼用處。

1.2啟動右鍵功能

因為右鍵的功能是基於excel的,而不是基於表格的,所以在更換電腦使用表格時,會沒法使用右鍵的功能。所以增加了這個按鈕。右鍵我通常會增加一些使用頻率很高的功能。

遊戲數值策劃憑一張Excel表就可以一招鮮?

可以看到,這裡有工具箱,資訊,編輯文案,顯示路徑,文案配色,識別號跳轉等功能更,這些功能我在後面會介紹。

1.3更新客戶端svn

不管你在什麼專案組,總會有一個版本管理工具,可能是svn,可能是git,你總要反覆更新,使用頻率很高,這裡做成一個按鈕,方便使用。功能很簡單。程式碼非常簡單,但是你要安裝svn的時候安裝命令列工具才能使用,在安裝的時候有一個選項,沒有的話重灌一下就好了

程式碼如下:

  1. Sub 更新SVN客戶端()

  2. code = "cmd.exe /c svn update " & "D:\SVN\Galaxy\client" & "&& pause"  

  3. Call Shell(code)

  4. End Sub
複製程式碼

二、中央功能功能區

中央功能區的關鍵功能只有一個,找到核心表格,這塊程式碼稍微難寫一點,可能是我沒有找到好寫的方法,好在只用寫一次,對效率要求也不高,程式碼不好就算了。

左邊三個區域,總表,規劃,檢視器,規劃表,都是手動設定的連線到指定的sheet的。點選就開啟,程式碼也非常簡單。

  1. Sub 檢視器()

  2. 開關某頁BYstring ("飛船檢視器")

  3. 開關某頁BYstring ("飛船檢視器2")

  4. 開關某頁BYstring ("怪物檢視器")

  5. 開關某頁BYstring ("英雄檢視器")

  6. End Sub



  7. Function 開關某頁BYstring(i As String)
  8. If Workbooks(ThisWorkbook.name).Sheets(i).Visible = xlSheetVisible Then
  9. Workbooks(ThisWorkbook.name).Sheets(i).Visible = xlSheetHidden
  10. Else
  11. Workbooks(ThisWorkbook.name).Sheets(i).Visible = xlSheetVisible
  12. Workbooks(ThisWorkbook.name).Sheets(i).Select
  13. End If
  14. End Function
複製程式碼

基本就是顯示出來。右邊的區域就稍微複雜一點,首先,把表格分類為系統。在中間區域把所有的系統顯示出來。然後實現,點選,在右邊把該系統的所有表格顯示出來。

這些程式碼稍微有些複雜。

在實現這個功能之前,我們需要對錶格有一定的規範要求。你可以制定自己的規範標準,我在這裡說下我是如何制定的。

我的每個資料表大致是這樣的。

遊戲數值策劃憑一張Excel表就可以一招鮮?

1. 設定返回按鈕,功能為隱藏該sheet

2. 設定到處按鈕,功能為到處資料成制定檔案,這裡是csv到指定的資料夾給程式使用,它同時包含了提交功能,會自動提交到svn,這部分在匯出部分再說。

3. 提供說明資訊按鈕,點選後跳轉到一個說明sheet對這個表格進行說明,稍後展示,主要是說明這個表格的規範,列舉等。

4. 表格名稱,它固定的在B1單元格

5. 系統名稱,它固定在D1單元格

6. 表格型別,它固定在F1單元格

7. 預留行4,第四行為欄位型別,在後面會用到,說明欄位的內容。主要有,功能,文案(做多語言時需要),美術(改動頻率較低),數值(改動頻率較高)

8. 預留行5,這是一個外來鍵,和格式說明,如果這個欄位來自其他表格,這裡要說明,如

遊戲數值策劃憑一張Excel表就可以一招鮮?

這裡可以看到,這個欄位應該填寫4個技能id,前三個來自主動技能ID,最後一個來自被動技能ID,這裡填寫的資料應該在對應的表格對應的欄位找到,不然你就填錯了。

9. 預留行6,對於外來鍵的中文說明。基本上是對預留行5的中文解釋

10. 預留行7,這是欄位的標準名稱,它是被程式識別的名稱,也是從這一行起,後面才是到處的資料內容。

11. 預留行8,這裡是欄位的中文名稱,主要是幫助理解。

12. 預留行9,這裡是欄位的型別,程式識別用,自己也會識別,有可能會存在和程式商議的特殊字元格式。

13. 後續的才是表格的資料內容。

關於規範3,我們這個例子是英雄表,英雄表的說明是這樣的:

遊戲數值策劃憑一張Excel表就可以一招鮮?

這裡束縛了某些欄位能填的值和意義。這裡必須記錄,不然會完全忘記,例如種族,我們能填寫0-4,但是含義很容易忘記,如果及時的更新在說明表裡,就可以任何時候檢視。

基於上面的表格格式,我們可以遍歷整個資料表,找出所有的系統和所有的表格。

先看重新整理目錄,它的功能是刪掉前面的系統標籤,然後遍歷整個表,重新生成所有的系統標籤。下面是重新整理目錄按鈕的程式碼。

  1. Sub 自動化目錄()

  2. num = 1

  3. Dim 系統字典

  4. Set 系統字典 = CreateObject("Scripting.Dictionary")

  5. Dim 系統 As Worksheet

  6. For Each 系統 In ActiveWorkbook.Sheets

  7. If 系統字典.exists(系統.Range("D1").Value) Then

  8. ElseIf 系統.Range("D1").Value = "" Then

  9. Else

  10. 系統字典.Add 系統.Range("D1").Value, num

  11. num = num + 1

  12. End If

  13. Next

  14. '清除原有按鈕

  15. For Each s In ActiveWorkbook.Sheets("目錄和說明").Shapes

  16. If 系統字典.exists(s.name) Then

  17. s.Delete

  18. Else

  19. 's.Delete

  20. End If

  21. Next

  22. num2 = 1

  23. 按鈕行數 = 7

  24. '這段程式碼有毒

  25. For Each a In 系統字典

  26. If (a = "") Then

  27. Else

  28. '

  29. '位置X,位置Y,寬,高

  30. ActiveSheet.Shapes.AddShape(msoShapeRectangle, 250 + 120 * Int((num2 - 1) / 按鈕行數), 140 + 32 * ((num2 - 1) Mod 按鈕行數), 100, 25) _

  31. .Select

  32. 'Selection.OnAction = "'開啟系統""" & (a) & """'"

  33. Selection.ShapeRange.ShapeStyle = msoShapeStylePreset13

  34. Selection.ShapeRange(1).OnAction = "自動化分級目錄"

  35. Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = a

  36. With Selection.ShapeRange(1).TextFrame2.TextRange.Font

  37. .NameComplexScript = "微軟雅黑"

  38. .NameFarEast = "微軟雅黑"

  39. .name = "微軟雅黑"

  40. End With

  41. Selection.ShapeRange(1).name = a

  42. End If

  43. 'message = message & a & vbLf

  44. num2 = num2 + 1

  45. Next

  46. End Sub
複製程式碼


這樣就能夠生成一箇中間的系統列表標籤了。如下

遊戲數值策劃憑一張Excel表就可以一招鮮?

很古老的程式碼了,我後續的專案也在沿用,程式碼都不需要修改。重新整理目錄按鈕給後續的系統頁籤增加了OnAction = "自動化分級目錄"功能,這段程式碼我也貼出來,它是為了實現點選系統頁籤展示頁面頁籤存在的。

  1. Sub 自動化分級目錄()

  2. '************獲取系統名稱********************************

  3. c = Application.Caller

  4. ActiveSheet.Shapes(c).Select

  5. 系統名 = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text

  6. '********************************************************

  7. '**************搜尋表格**********************************

  8. Dim 表格字典

  9. Set 表格字典 = CreateObject("Scripting.Dictionary")

  10. Dim 表格總字典

  11. Set 表格總字典 = CreateObject("Scripting.Dictionary")

  12. Dim 表格管理區域 As Range

  13. Set 表格管理區域 = ActiveWorkbook.Sheets("表格管理表").Range("A10:E500")

  14. For Each 表格 In ActiveWorkbook.Sheets

  15. If 表格.Cells(1, 4).Value = 系統名 Then

  16. 表格字典.Add 表格.name, 表格.Cells(1, 4).Value

  17. Else

  18. End If

  19. If 表格總字典.exists(表格.name) Then

  20. Else

  21. 表格總字典.Add 表格.name, 表格.Cells(1, 4)

  22. End If

  23. Next

  24. num2 = 1

  25. 按鈕行數 = 15

  26. '*******************清除原有按鈕*************************

  27. For Each s In ActiveWorkbook.Sheets("目錄和說明").Shapes

  28. If 表格總字典.exists(s.name) Then

  29. s.Delete

  30. Else

  31. 's.Delete

  32. End If

  33. Next

  34. '********************************************************

  35. '*********************************************************

  36. '這段程式碼有毒

  37. ' ActiveSheet.Shapes.AddShape(msoShapeRectangle, 780, 100, 100, 23) _

  38. ' .Select

  39. ' 'Selection.OnAction = "'開啟系統""" & (a) & """'"

  40. '

  41. '

  42. ' Selection.ShapeRange.ShapeStyle = msoShapeStylePreset16

  43. ' Selection.ShapeRange(1).OnAction = "開啟系統"

  44. ' Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "開啟全部"

  45. ' Selection.ShapeRange(1).Name = 系統名

  46. ActiveSheet.Range("o6").Value = 系統名

  47. Dim MyT As Long

  48. MyT = timeGetTime

  49. For Each a In 表格字典

  50. If (a = "") Then

  51. Else

  52. '位置X,位置Y,寬,高

  53. ActiveSheet.Shapes.AddShape(msoShapeRectangle, 650 + 180 * Sin(num2 * 3.165 / 20 + 3.14 / 5), 250 - 200 * Cos(num2 * 3.14 / 20 + 3.14 / 5), 120, 25) _

  54. .Select

  55. 'Selection.OnAction = "'開啟系統""" & (a) & """'"

  56. Selection.ShapeRange(1).IncrementRotation -50 + num2 * 8

  57. Selection.ShapeRange.ShapeStyle = msoShapeStylePreset17

  58. Selection.ShapeRange(1).OnAction = "開啟表格"

  59. Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = a

  60. Selection.ShapeRange(1).name = a

  61. With Selection.ShapeRange(1).TextFrame2.TextRange.Font

  62. .NameComplexScript = "微軟雅黑"

  63. .NameFarEast = "微軟雅黑"

  64. .name = "微軟雅黑"

  65. End With

  66. End If

  67. 'message = message & a & vbLf

  68. num2 = num2 + 1

  69. 'Do

  70. 'DoEvents

  71. 'Loop Until timeGetTime - MyT >= num2 ' 等於 5000/1000 = 5 秒

  72. Next

  73. ActiveSheet.Range("A1").Select

  74. End Sub
複製程式碼


這樣就能夠實現中右部分的功能了。如下:

遊戲數值策劃憑一張Excel表就可以一招鮮?

程式碼裡有一段被我註釋了這段程式碼有毒的程式碼,那段程式碼在邏輯上似乎是正確的,但是會導致excel無法儲存。我研究很久也沒弄清楚是為什麼,假裝它是一個excel存在的關於圖片的bug,然後我採用了另一種方法實現,不過有興趣的可以研究一下,然後找到原因給我留言。

三、底部功能區

這部分主要是儲存和設定一些檔案路徑,給svn和匯出使用的,增加了一個方便更改的按鈕。主要是其他同事在使用表格的時候,本機的路徑和你的不一樣,就無法正確使用到處和svn相關功能,所以增加了這部分。

規劃表

一般情況下,我在做一個專案之前會按照樹狀結構去從宏觀引數,細化為關鍵引數,再細化為系統的相關引數,再去製作系統的數值的。這樣我們需要一個規劃表來實現這個設計思路。一般情況下,我使用三個sheet來實現,分別為

  • 總節奏控制
  • 戰鬥
  • 經濟

2.1.1 總節奏控制

這張表至關重要。裡面用到的引數會被整個遊戲引用,它會決定遊戲的最宏觀結構。做這張表的時候,要仔細思考,和團隊最能管事的人討論清楚。因為這張表裡面的所有數字都非常重要。修改這張表的引數會導致整個遊戲的數值產生變動。

每一個遊戲的總節奏控制的引數不一定相同。但是如果你覺得它是在整個遊戲之上的引數,請列到這張表裡,我會給大家展示我的這個表裡存摺哪些引數。這張表也並不是在專案的開始階段就會完成的,但是你總要預留這樣的表,有些不確定的數字可能需要在專案中不斷的修改,但是每次修改都需要非常慎重。

一般情況下,一個引數都是為了解決一個關鍵問題。

核心引數1:角色滿級時間

核心引數2:角色滿級等級

核心引數3:英雄滿級等級

核心引數4:體力經驗比

核心引數5:體力恢復速度(分鐘)

核心引數6:單場戰鬥回合數。

核心引數7:基地滿級等級

如圖所示:

遊戲數值策劃憑一張Excel表就可以一招鮮?

核心曲線1:主角等級時間曲線

核心曲線2:英雄等級時間曲線

核心曲線3:普通副本時間進度曲線

核心曲線4:精英副本時間進度曲線

核心曲線5:基地等級時間曲線

如圖所示:

遊戲數值策劃憑一張Excel表就可以一招鮮?

關鍵時間進度的分配和預留:

遊戲數值策劃憑一張Excel表就可以一招鮮?

還有很多其他相關的曲線,是做後續系統後覺得非常重要列在這裡統一管理。

如:飛船成長線,飛船消耗線。

2.1.2戰鬥

戰鬥部分所儲存的關鍵引數往往是屬性相關。各類加成佔比,如飛船的各類屬性分配引數。如下。

遊戲數值策劃憑一張Excel表就可以一招鮮?

戰鬥相關的各類加成以及等級分配的引數,我做成了以卡片的形式存在,如,飛船卡。

遊戲數值策劃憑一張Excel表就可以一招鮮?

飛船等級卡

遊戲數值策劃憑一張Excel表就可以一招鮮?

提示:我表格中灰色部分,往往代表該引數由計算得出,不應該直接修改。他們應該是由更基礎的引數計算得出,需要修改更基礎的引數。

英雄加成卡

遊戲數值策劃憑一張Excel表就可以一招鮮?

官職加成卡

遊戲數值策劃憑一張Excel表就可以一招鮮?

科技加成卡

遊戲數值策劃憑一張Excel表就可以一招鮮?

這張表裡我沒有儲存英雄本身相關的引數,因為它過於重要,統一放在英雄規劃表中。

2.1.3經濟

一.價值

經濟表中最初關鍵的是各類貨幣價值參考,請注意這裡是只做標準參考,而不是完全遵循。主要原因是,貨幣分類為2種,1非通脹類(和時間等比,和rmb等比)2.通脹類,隨著時間和遊戲進度簡直不同。在設計貨幣價值時,是否為通脹類貨幣非常關鍵,對於通脹類貨幣的價值在不同階段的表現要單獨關注。下面我列舉我的表格裡的相關參考。

1. 貨幣價值

遊戲數值策劃憑一張Excel表就可以一招鮮?

2. 時間價值

遊戲數值策劃憑一張Excel表就可以一招鮮?

二:玩家時間

這裡主要是做一下初步的玩家每天各種玩法的戰鬥時間,玩家極限在遊戲中可以直接遊玩花費的時間,主要是各類活動的次數。這個設計往往決定遊戲肝度。這個引數也可以放在總節奏控制表中。

遊戲數值策劃憑一張Excel表就可以一招鮮?

三:經驗曲線。

如,主角經驗相關引數。

遊戲數值策劃憑一張Excel表就可以一招鮮?

四:貨幣產出分配和經濟流圖

下面是各類貨幣和系統的產出對應圖。

遊戲數值策劃憑一張Excel表就可以一招鮮?

下面是經濟流圖

遊戲數值策劃憑一張Excel表就可以一招鮮?

五:各類經濟曲線,這個就非常複雜,篇幅很多,只舉例部分,剩下截圖。

遊戲數值策劃憑一張Excel表就可以一招鮮?

遊戲數值策劃憑一張Excel表就可以一招鮮?

六:星戰的核心經濟引數

遊戲數值策劃憑一張Excel表就可以一招鮮?

七:飛船經濟相關分配卡

遊戲數值策劃憑一張Excel表就可以一招鮮?

這裡不做介紹直接上圖。

總表

總表這裡主要是有2張表,實際上表裡有3張,曲線總表以及不用,曲線都在經濟表裡。

這裡只有屬性總表和引數總表。

1. 屬性總表

我們需要對遊戲中的所有單位的所有屬性非常屬性並且唯一規劃,這樣我們能大大提高和程式的溝通。我在這張表裡,給遊戲中的所有屬性和分類做了列表,大大節約了和程式的溝通。

這是一張非常大的表,我獵取部分給大家看一下。以及說一下我怎麼使用這個表

遊戲數值策劃憑一張Excel表就可以一招鮮?

你可以看到,我這裡對英雄的所有屬性進行了編號,100-137,對分類進行了編號。對列舉進行了編號,這些編號在後期填表時會有很多方便之處。特別是在技能,buff,科技相關。例如,有一個科技的效果是增加英雄生命上限10%。我可能配置為。C01;100;10%以這樣的語義表示式,可以省去程式大量的單獨寫程式碼的工作量,大大增加開發時間,而且在遊戲中出bug的時候也可以快去的找到指定引數。對於列舉也可以單獨運營,例如,對於人類造成傷害提高10%,C01;M010400;100;10%.

後面截圖給大家看一下其他型別的相關屬性。

遊戲數值策劃憑一張Excel表就可以一招鮮?

遊戲數值策劃憑一張Excel表就可以一招鮮?

2. 公式總表

公式總表實際上更加簡單,就是羅列遊戲中所有用到的公式,方便查驗。

這張表裡還有2個額外的東西,是專案特性所需要的,一個是對ui介面所有數值進行解釋,告訴程式顯示的究竟是什麼值,另外這個值是受不同狀態影響前還是影響後的。

這張表超過900行,我截圖目錄和一些樣例來講解。

遊戲數值策劃憑一張Excel表就可以一招鮮?

可以看到遊戲中各個系統都有大量需要計算的東西,程式經常需要檢視,測試也需要根據這張表去檢驗程式的工作是否有bug。

給大家距離展示一下一些公式。如影響展示介面。公式說明:

遊戲數值策劃憑一張Excel表就可以一招鮮?

在這裡不但要說明公式是如何計算的,還要告訴程式相關的值在哪裡可以取到。如標準模型血量= Config.BarHeroHPModel,在config表下的BarHeroHPModel引數可以獲得。

另外,為了方便校驗,我在右側提供了驗錯工具,輸入對應的引數,直接獲得結果。

遊戲數值策劃憑一張Excel表就可以一招鮮?

橙色部分為輸出區域(我所有的表都是這樣)程式檢測的時候,只要指定一個英雄,把相關引數輸入在這裡就可以計算出最後的結果,而且每個步驟的結果也都顯示出來了。非常方便程式檢查錯誤。

再比如說升級。

遊戲數值策劃憑一張Excel表就可以一招鮮?

同樣的方式。

公式總表的第二部分是關於介面顯示的,主要是告訴程式,ui介面上的每個引數顯示的是什麼,是怎麼計算的。例如。

遊戲數值策劃憑一張Excel表就可以一招鮮?

對於可能的動態引數,說明是否受到科技影響以及受到哪些科技影響。以及技能影響。

遊戲數值策劃憑一張Excel表就可以一招鮮?

好了。就介紹到這裡吧,後期更新隨緣了(可能就不再更新了)。



相關文章