新排行榜-Internal

相關資料

歷史版本的資料儲存模組介紹

資料儲存模組

在上面的資料中有詳細介紹,這裡簡單介紹一下資料儲存模組。資料儲存是一個可選模組,開啟後允許地圖開發者使用位於伺服器的資料表進行資料存儲,多用於跨地圖、跨對局同步資料資訊、排行榜等功能。本篇文章將著重於新資料儲存表格用於排行榜功能的情況。

入口

從模組清單載入資料儲存模組,即可開始設定共四種資料表的列資訊:

image-20250806162055343

新表格介紹

就像所有資料表格一樣,每張表格您都需要指定一個」Key「列,也就是表格的主鍵(Primary Key)。 Key列資料必須唯一,是整張表格的索引列,透過對Key的檢索,你可以決定指定的表格的指定資料行。透過圖元對同一個Key的資料行進行多次編輯時,後編輯的資料總是會覆寫前面的資料。

Ranking datasheet

排行榜表是一種特殊的多列表格,您可以自訂若干個列儲存額外信息,例如積分、存活時長、總遊戲時長等,但是排行榜表必須有一列資料(Value列)用來進行正序或倒序排列。

image-20250806170632723

選擇UID as Key,排行榜會將Key列自動轉換為玩家卡:

image-20250901154851187

表格示意

Ranking datasheet1

Rank Key Value Custom Col1 Custom Col2 Custom Col…
1 Player1 UUID 100 whatever you want to store
2 Player2 UUID 90

Multi-column Data Table

多列表是一種支援多列資料的表格(區別於先前的資料表只支援一列資料)。您可以在一個Key下儲存多種數據,在圖元腳本中,還提供了編輯排行榜表關聯表的API,在KEY相同時(例如都是玩家UUID),可以透過特定圖元一併編輯排行榜表和多列數據表。

image-20250806170813281

表格示意

Multi-column Data Table1

Key Value Custom Col1 Custom Col2 Custom Col…
Player1 UUID 100 whatever you want to store
Player2 UUID 90

排行榜功能

啟用功能

若要啟用排行榜功能,您必須在工程中啟用資料儲存模組,並至少建立一張排行榜資料表。

在做好準備之後,在創作者中心的發布地圖介面,對即將發布的地圖進行編輯,即可看到排行榜相關設定:

image-20250806164442617

開啟此功能,您的地圖詳情介面就會出現一個排行榜按鈕,玩家可以在此瀏覽到您編輯的排行榜資訊:

image-20250806171313422 image-20250806164728942

編輯排行榜

在上文發布地圖的排行榜編輯介面,您可且暫時只可選擇一張資料表作為要展示的排行榜資訊。 (儘管您可以在工程中使用多張表格儲存資料)

image-20250806164912096

您可以對排行榜其他內容進行編輯:包括是否在局外顯示排行榜、使用哪些列作為排行榜的樣式,它們的順序是怎麼樣的。

選擇多語言,您可以手動編輯排行榜的標題的多語言資訊:

image-20250806173701944

沒有填入的語言會使用預設的表格列名。

編輯完成後,地圖資訊網頁上會顯示您目前的排行榜示意,多國語言並不會在示意中顯示:

image-20250806165547462

圖元

在適當的時機——例如玩家得分、每局對局結束時——使用圖元,向排行榜資料表儲存資料。

image-20250806165732042

注意必須是排行榜資料表相關的圖元,SheetName參數才會讀取到建立的排行榜資料表

為了更方便地編輯本篇教學介紹的兩種多列表格,特別加入了Tuple資料類型,它是一種特殊的清單。 Tuple類型支援自動識別指定資料表或排行資料表的value從而形成一個元素為指定資料類型的特殊清單。

image-20250806174722968

tuple圖元會自動讀取所有表格,並將表格的列的資料類型作為清單項目的資料類型:

image-20250806175459462

對於排行資料表,一旦新建了自訂資料列,那麼value實際上會包含N列數據,所以也會形成一個tuple:

image-20250806175601013

所以實際使用時,tuple可能會有嵌套:

image-20250806180055942

tuple圖元不會自動更新表的列名等信息,所以一旦發生更改,需要手動刷新tuple圖元。

程式碼

程式碼範例:

  1. Write
WriteDBLeaderboardAssociationValue(``"rank"``, ``"test_uid_1"``, {``60``, ``"1:00"``}, ``""``, out var c, out var d)
go
  1. Read
ReadDBLeaderboardAssociationValue(``"rank"``, ``"test_uid_1"``, out var data, ``""``, out var a, out var b)``var data_normal List<object> = data[``2``] Listvar data_normal List<object> = data[``2``] List<ob
go

相關API列表

  1. SetTuple
  2. GetTuple
  3. WriteDBLeaderboardAssociationValue
  4. RemoveFromLeaderboardDataStoreByKey
  5. ReadDBLeaderboardAssociationValue
  6. WriteToLeaderboardDataStore
  7. RemoveFromLeaderboardDataStoreByKey
  8. ReadFromLeaderboardDataStore

特別的,對於函數:ReadDBLeaderboardAssociationValue,它的回傳值是一個tuple:

Result:The type is {rankname_value}Tuple

  • {rank, key, 值}
  • rank: int
  • key: string
  • value: tuple
  • {value, GameCompletionTime}

對於函數:WriteDBLeaderboardAssociationValue,參數Key和Value:

  • Key: It is recommended to convert the player’s UID into a string as the key, so that the player’s callsign can be displayed in craftland
  • Value:The type is {rankname} Tuple. After selecting SheetName, double-click Value to quickly add the corresponding block

更多API的參數和說明,請使用:官網Documents說明

本機偵錯

在進行地圖編輯時,無法獲得線上玩家的數據,但是Craftland Studio PC提供了透過本地json來查看調試時儲存的數據的方式。

image-20250806170248163

除錯發生資料儲存後,點選圖中選項,即可跳到本機json資料夾,資料表資訊會以json形式儲存,可以供開發者檢查邏輯是否正確。

image-20250806170420358