第三方工具

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

对于专业开发工作室,设置第三方工具并投资自动化可以显著提高开发者生产力。Roblox 的云优先方法有很多优势,但将开发工作流程的某些部分移出云可以帮助更大的团队在时间上跟踪更改、审查代验证码并使用他们已经熟悉的语言和工具。

同步问题

在核心上,使用 Roblox 与外部工具的问题是同步的 问题

  • 你想让你的 Roblox 脚本存在于磁盘上的 .luau 文件中,以便你可以使用自己的工具来对它们进行操作。
  • 您必须将文件返回到 Roblox 项目后才能完成对它们的工作。
  • 如果在此期间另一个人修改了相同的文件,你必须处理任何冲突。

为了整个解决方案感觉无缝且自动,您需要 a) 监听文件的更改,并 b) 将这些更改纳入 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-experience
cd my-new-experience
rojo build -o my-new-experience.rbxl

或者,你可以 迁移现有体验 . 无论如何,一旦你有了项目,就启动 Rojo 服务器:


rojo serve

在 Roblox Studio 中,打开刚刚构建的 .rbxl 文件,启动 Rojo 插件,然后连接到正在运行的服务器,在此时你可以开始在你喜欢的文本编辑器中进行更改,然后这些更改会自动同步到 Studio。

Rojo 项目对文件、配置选项和一些限制有特定命名要求,这些都在 Rojo 文档 中涵盖。

包管理器

Roblox 有一组强大的包含 API,但如果您想以一致的、可重复的方式利用社区软件包,您需要一个包管理器。沃利是一个受欢迎的选择。您可以通过管理员安装它,就像 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 目录,下载指定的包在那里。最后一步是将 Packages 目录添加到 Rojo 以便其内容同步回到 Roblox。打开 default.project.json 并添加路径。为了简单起见,这个例子将整个目录添加到 ReplicatedStorage 以便所有包都可用于所有脚本,但您可能会选择将特定包添加到 ServerScriptServiceStarterPlayerScripts :


{
"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、运行几个命令,并拥有与其他团队成员相同的开发环境。

版本控制

在您的计算机上拥有一组简单的文本文件可解锁各种功能,但主要功能是版本控制。您可以将脚本和配置文件存储在 GitMercurial 存储库中;托管远程存储库并在 GitHubGitLabBitbucket 中查看代码更改;使用任何您喜欢的文本编辑器。

Visual Studio 代码 拥有最大的扩展生态系统,但 Sublime Text , Notepad++Vim 都是受欢迎的选择。无论您选择哪个编辑器,匹配 Studio 脚本编辑器的功能都会需要一些扩展。

您还可以考虑添加:

  • selene 这样的调试器来捕捉常见问题并强制执行编码标准
  • StyLua 这样的代码格式化器
  • 一个像 Luau 语言服务器 这样的语言服务器用于自动完成、类型检查等
  • 打开云端脚本(未同步到工作室)更新发布体验或重启服务器

资产

本页面上的工具最适合脚本;3D艺术家已经使用了像 Blender 和 Maya 等外部工具,将源文件存储在版本控制中,然后将他们的作品导入 Studio。有了 Studio 素材之后,我们建议尽可能使用

Roblox 实现的包遵循本页面上的工具的许多相同原则:一个集中存储库与版本历史记录,提供了一种无缝的方式来保持资产的所有副本同步。了解有关如何提高他们的工作流程的更多信息,请参阅

撤销所有

因为第三方工具不会替换 Roblox Studio,所以这个工作流程的任何部分都不涉及锁定。随时您可以停止使用一个或所有这些工具,并返回使用 Studio 专门编辑您的体验。缺乏风险使使用第三方工具进行实验特别有趣。