對於專業發展工作室,設置第三方工具並投資自動化可以大幅提升開發人員的生產力。Roblox的雲端第一方法有很多優點,但將某些部分 of 開發工作流程外的雲端可以幫助大型團隊跟蹤變更、檢查代碼和使用它們熟悉的語言和工具。
同步問題
在核心上,使用 Roblox 與外部工具的同步是一個 同步 問題:
- 您想要您的 Roblox 指令碼存在為 .luau 個檔案在碟上,以便您可以使用自己的工具來在它們上工作。
- 您必須將您的檔案重新匯入到 Roblox 項目後,才能完成對它們的工作。
- 如果有其他人在那之間變更了這些相同的檔案,你必須處理任何可能出現的衝突。
要使整個解決方案感覺自如和自動,你必須聽到文件的變更,並且將這些變更重新匯入 Studio。這就是說,你需要一個伺服器和 Studio 外掛程式,這是 Rojo 解決此問題的方式。
與 Roblox 的雲朵第一方法不同,Rojo 允許「檔案系統第一」的方法。它會將您的項目中的所有資源文件都變成 Luau 檔案。然後執行服務伺服器。Rojo 插件連接到服務器來同步這些資源與 Studio。
正在使用 Foreman 安裝 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 文件中明確跳過版本號,使用 Foreman 執行升級,測試新版本,並在發生任何問題時降級。對於指令和安裝說明,請參閱 .toml。
執行 Rojo
在你和Foreman安裝Rojo之後,你真的安裝了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 自動匯同回到 Studio。
Rojo 項目有特定的命名要求、眾多的配置選項和一些限制,這些都在 Rojo 文件夹 中討論。
包管理器
Roblox 有一個強大的 API 包,但如果您想要使用社群軟件包在一致的方式重複使用,您需要一個包管理器。 Wally 是一個流行的選擇。 您可以通過 Foreman 安裝它,就像 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 。 Wally 會建立一個 Packages 目錄和從指定的包裹下
{
"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儲存庫;在2>GitHub
Visual Studio Code 有最大的擴展生態系統,但 Sublime Text、Notepad++ 和 0>Vim0> 都是流行選擇。 選擇您選擇的編輯器,即可滿足 Studio 指令編輯器的功能。
您也可以考慮添加:
- 像 selene 這樣的審查器來檢查常見問題並強制執行程式碼標準
- 像 StyLua 這樣的代碼格式
- 一個語言服務器,例如 Luau 語言服務器 以自動完成、類型檢查等
資產
此頁面上的工具最適用於脚本;3D 藝術家已經使用外部工具,例如 Blender 和 Maya,存儲源文件在版本控制中,並且將其匯入到 Studio 中。在您有 Studio 素材後,我們建議您使用 包裹 ,當可能的時候。
Roblox 實現包裹跟據此頁面上的工具很多相同的原則:一個中央化的儲存庫,其版本歷史提供一個無縫的方式來保持所有複製的資產的同步。有關更多資訊,請參閱包裹。
還原所有內容
因為第三方工具會將更新變更同步到 Roblox Studio 而不是將它們重新寫入,因此,這個工作流程中沒有任何鎖定。 隨時,您可以停止使用其中一個或所有這些工具,並僅在 Studio 中編輯您的體驗。缺乏風險使使用第三方工具特別有吸引力。