Tabletop Simulator Note:開發環境建置

想要為世界貢獻,還是得做些準備。

嘗試在最常見的 IDE 上進行桌遊腳本開發。
(主要以 mac 環境舉例)

資源整理

在 Window 上使用 VSCode 建立 Tabletop simulator 的 Lua 腳本開發環境:開發環境設定
Technical Info:檔案儲存位置等資訊

Tabletop Simulator Lua VSCode 插件

Tabletop Simulator Lua Extension for VSCode 插件 GitHub 官網

在 VSCode 安裝後可以做到使用下方的快捷鍵連結進行中的遊戲的腳本等行為

主要指令

Open TTS Console++

windows: Ctrl Alt `
mac: Ctrl Option `

Get Lua Scripts

windows: Ctrl Alt L
mac: Ctrl Option L

Save And Play

windows: Ctrl Alt S
mac: Ctrl Option S

操作步驟

  1. 開啟 Tabletop Simulator 並挑選想要改寫腳本的 mod 執行
  2. 進入 VSCode 使用 Get Lua Scripts 指令(通常插件會自動抓運行中 mod 的 Lua scripts)
  3. 即可於 VSCode 看到 mod 的 Lua 腳本

專案化版本控管

有了好用的 IDE 支援後,接著就想要有版本控管及多人協作的環境。

建立專案資料夾

可以直接去 GitHub 創新專案再 clone 到本地,亦可直接用 git 指令在本地初始化一個專案。

連結專案資料夾與遊戲存檔資料夾

  1. 終端機進入遊戲存檔資料夾(~/Library/Tabletop Simulator/Saves)
  2. 創建專案軟連結(ln -s 專案位置 軟連結名稱):ln -s ~/tabletopSimulatorScripts/ projectSoftLink

注意:
不指定軟連結名稱就是使用專案位置作為名稱

將遊戲於專案資料夾中存檔

  1. 開啟 Tabletop Simulator
  2. 選擇 CREATE,創建任意種類房間
  3. Games(上方 Tab) > Workshop,開起任意已訂閱的 mod
  4. Games(上方 Tab) > Save & Load,可以看到我們創建的專案軟連結(可以視為專案資料夾),單擊進入,單擊 Save Game 按鈕,單擊 Save 按鈕儲存遊戲存檔
    於電腦檔案系統中進入專案資料夾,可以看到儲存的遊戲存檔由兩個檔案構成:TS_Save_*.json 與 TS_Save_*.png

於專案資料夾撰寫腳本

  1. 開啟 Tabletop Simulator
  2. CREATE 任意房間
  3. Games > Save & Load > 專案資料夾 > 單擊前面存的遊戲存檔 > 單擊 Load 按鈕,以讀取要進行開發的遊戲存檔
  4. 開啟 VSCode 並使用 Get Lua Scripts 指令,連結目前 Tabletop Simulator 開啟存檔的 Lua 腳本,主要會看到名為 Global.-1.lua 的檔案
  5. 在 VSCode 目前 WORKSPACE 加入專案資料夾,這種 WORKSPACE 樣式會是之後開發的主要狀態
  6. 於專案資料夾內創建 src 資料夾,之後腳本都寫在這裡(非強制,跟團隊約定好為主)
  7. WORKSPACE/Tabletop Simulator Lua/Global.-1.lua 檔案中最上方需加入以 require(“src/*”) 形式加入所有腳本檔案,* 表示 src 資料夾下不含 .lua 副檔名的腳本檔案名,這樣使用 Save And Play 指令後就能將專案資料夾中的腳本加入連結的遊戲存檔(.json)中

注意:
使用 Save And Play 指令可以將撰寫的腳本寫入遊戲存檔,但遊戲內對物件進行的種種操作想儲存必須使用遊戲內存檔機制,否則遊戲關閉後都會消失
資料夾關聯的部分參考 Module Resolution

Lua VSCode 插件

Lua

用來做 Lua 語法自動的補全,只用 Tabletop Simulator Lua VSCode 插件很難針對 Lua 語法做偵錯

開發前準備

  • 至少要瀏覽過 Tabletop Simulator Lua Extension for VSCode 的相關文檔,了解 IDE 能做到哪些事,其實插件作者還在開發中,有些列出的功能都只在 beta 版,一般安裝版沒有
  • 熟悉 Tabletop Simulator 遊戲內物件操作
  • 待補