對於專業開發工作室,設置第三方工具和投資自動化可以大幅提高開發者生產力。Roblox 的雲端第一方法有許多優點,但將開發工作流程的某些部分外移到雲端之外可以幫助更大的團隊跟蹤變更過程、檢查代碼,並使用他們已熟悉的語言和工具。
同步問題
在核心上,使用 Roblox 與外部工具的問題是同步問題:同步
- 您希望您的 Roblox 腳本存在於 .luau 碟上,以便您可以使用自己的工具來對它們進行操作。
- 您必須將文件帶回到 Roblox 項目後才能完成對它們的工作。
- 如果在此期間有其他人修改了相同的文件,你必須處理任何衝突。
為了讓整個解決方案感覺無縫且自動,您需要 a) 聆聽檔案變更,並 b) 將這些變更重新融入 Studio。換言之,你需要一台伺服器和一個 Studio 外掛程式,這是 Rojo 解決這個問題的方式。
與 Roblox 的雲端第一方法不同,Rojo 允許「檔案系統第一」方法。它會將你項目中的所有腳本檔案轉換為 Luau 檔案。然後運行一個伺服器。Rojo 插件會連接到伺服器,與 Studio 同步這些檔案。
使用管理員安裝 Rojo
您可以手動下載並執行 Rojo 二進制檔,但這種方法會冒著不同開發人員在您的團隊使用不同版本 Rojo 的風險。使用工具管理器,例如 Foreman,其使用配置文件—一個列表的儲存庫和版本—來使安裝和升級過程在機器上保持一致。
因為它管理你的基線開發環境而不是你項目中的包裹,所以 Foreman 更接近 nvm 而不是 npm,但比較並不完美。一個簡單的 foreman.toml 文件看起來像這樣:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
然後你使用 foreman install 安裝這些工具。除了全球 foreman.toml 外,Foreman 支持每個項目的文件,因此您可以輕鬆使用不同版本的 Rojo、Wally 或任何其他工具來執行不同的項目,並將整個團隊保持在相同版本上。
當工具發布新版本時,您可以在 .toml 文件中明確增加版本號,使用管理員執行升級,測試新版本,並在發生任何問題時降級。對於指令和安裝說明,請參閱主管。
執行 Rojo
在你安裝 Rojo 與 Foreman 之後,你真正安裝的是 Rojo 伺服器。下一步是安裝 Roblox Studio 的 Rojo 插件:
rojo plugin install
然後生成新體驗的項目結構,並建立它:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
或者,你可以 傳送現有體驗 。無論如何,一旦你有了項目,就開始 Rojo 服務伺服器:
rojo serve
在 Roblox Studio 中,打開您剛剛建立的 .rbxl 文件,啟動 Rojo 外掛程式,然後連接到正在運行的服務伺服器,在此點您可以開始在您喜愛的文字編輯器中進行更改,然後這些更改將自動同步到 Studio。
Rojo 項目有一些命名要求對於文件、許多配置選項和一些限制,所有這些都在 Rojo 文件說明 中被覆蓋。
包管理員
Roblox 有一組強大的包含 API,但如果您想以一致且可重複的方式使用社區軟件包,您需要一個包管理器。Wally是一個受歡迎的選擇。您可以通過管理員安裝它,就像 Rojo 一樣。
在你體驗的 Rojo 目錄內,執行 wally init 。然後將你想要的包裝添加到 wally.toml 。文件可能會看起來像這樣:
[package]
name = "my-home-directory/my-new-experience"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
react = "jsdotlua/react@17.1.0"
react-roblox = "jsdotlua/react-roblox@17.1.0"
cryo = "phalanxia/cryo@1.0.3"
然後執行 wally install 。沃利創建一個 Packages 目錄,下載指定的包在那裡。最後一步是將 Packages 目錄添加到 Rojo,以便其內容與 Roblox 同步。開啟 default.project.json 並添加路徑。為了簡化,這個例子將整個目錄添加到 ReplicatedStorage 以便所有包都可用於所有腳本,但您可能會選擇將特定包添加到 ServerScriptService 或 StarterPlayerScripts :
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
然後您可以在腳本中要求包裹,就像其他任何 ModuleScript 一樣:
local Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local React = require(ReplicatedStorage.Packages.react)local ReactRoblox = require(ReplicatedStorage.Packages["react-roblox"])local handle = Instance.new("ScreenGui", Players.LocalPlayer.PlayerGui)local root = ReactRoblox.createRoot(handle)local helloFrame = React.createElement("TextLabel", {Text = "Hello World!",Size = UDim2.new(0, 200, 0, 200),Position = UDim2.new(0.5, 0, 0.5, 0),AnchorPoint = Vector2.new(0.5, 0.5),BackgroundColor3 = Color3.fromRGB(248, 217, 109),Font = Enum.Font.LuckiestGuy,TextSize = 24})root:render(helloFrame)
與其他大多數軟體項目一樣,目標是讓貢獻者能夠複製一個儲存庫、安裝 Foreman、執行幾個指令,並擁有與其他團隊成員相同的開發環境。
版本控制
在您的電腦上有一組純文字檔案可解鎖各種能力,但主要的是 版本控制 。您可以將腳本和配置文件存儲在 Git 或 Mercurial 儲存庫中;托管遠端儲存庫並在 GitHub、GitLab 或 Bitbucket 中檢查代碼變更;並使用您喜歡的任何文本編輯器。
Visual Studio 代碼 擁有最大的擴展生態系統,但 Sublime Text、Notepad++ 和 Vim 都是受歡迎的選擇。無論您選擇哪種編輯器,匹配 Studio 腳本編輯器的功能都會需要一些擴展。
您也可以考慮添加:
- 像 selene 一樣的調試器來捕捉常見問題並強制執行編碼標準
- 像 StyLua 一樣的代碼格式化器
- 一個像 Luau 語言服務器 一樣的語言服務器,用於自動完成、類型檢查等
資產
這個頁面上的工具最適合用於腳本;3D藝術家已經使用外部工具,例如 Blender 和 Maya,在版本控制中儲存源檔案,並將創作匯入 Studio。當您擁有 Studio 素材後,我們建議在可能的情況下使用 包裝。
Roblox 的包裝實現遵循這個頁面上的工具的許多相同原則:一個集中式儲存庫,具有版本歷史記錄,提供一種無縫的方式來保持所有版本的資產同步。要了解有關如何提高他們的工作流程的更多信息,請參閱 包裝 。
取消所有
因為第三方工具會將變更同步回到 Roblox Studio 而不是替換它,這個工作流程的任何部分都不會涉及鎖定。隨時您可以停止使用一個或所有這些工具,並返回 Studio 專門編輯您的體驗。缺乏風險使使用第三方工具進行實驗特別有趣。