プロフェッショナルな開発スタジオにおいて、サードパーティツールの導入と自動化への投資は、開発者の生産性を劇的に向上させることができます。Robloxのクラウドファーストアプローチには多くの利点がありますが、開発ワークフローの特定の部分をクラウドの外に移すことで、大規模なチームが時間の経過に伴う変更を追跡し、コードをレビューし、すでに慣れ親しんでいる言語とツールを使用する助けになります。
- 外部のテキストエディタを使用するだけか、コードをバージョン管理するだけが必要な場合は、Script Syncが素晴らしい選択肢です。
- プロジェクト全体をローカルファイルのセットとして管理したい場合は、このページでいくつかのツールと戦略をカバーしています。
同期の問題
根本的に、Robloxで外部ツールを使用することは_同期_の問題です:
- Robloxインスタンスがディスク上のファイルとして存在していることを望み、それにより自分のツールを使用して作業できるようにします。
- 作業を終えた後、ファイルを再びRobloxプロジェクトに取り込む必要があります。
- その間に他の誰かが同じファイルを変更した場合、競合を処理する必要があります。
全体のソリューションがシームレスで自動的に感じられるためには、a) ファイルへの変更を監視し、b) これらの変更をStudioに取り入れる必要があります。
Robloxのクラウドファーストアプローチとは異なり、Rojoは「ファイルシステムファースト」アプローチを提供します。これは、あなたのマシン上でサーバーを実行し、Studioプラグインと通信して、ファイルとStudioデータモデルを同期します。
Rokitを使用してRojoをインストール
手動でRojoのバイナリをダウンロードして実行することもできますが、そのアプローチではチーム内の異なる開発者が異なるRojoバージョンを使用するリスクがあります。より良い解決策は、Rokitのようなツールチェーンマネージャを使用することで、これはリポジトリとバージョンのリストを含む設定ファイルを使用して、マシン間でのインストールおよびアップグレードプロセスを一貫性のあるものにします。
Rokitは、プロジェクト内のパッケージではなく、ベースラインの開発環境を管理するため、nvmに似ていますが、npmとは必ずしも一致しません。シンプルなrokit.tomlファイルは次のようになります:
[tools]
rojo = "rojo-rbx/rojo@7.6.1"
wally = "upliftgames/wally@0.3.2"
lune = "lune-org/lune@0.10.4"
その後、これらのツールをrokit installでインストールします。グローバルrokit.tomlファイルに加えて、Rokitはプロジェクトごとのファイルもサポートしているため、異なるプロジェクトで異なるバージョンのRojo、Wally、または他のツールを簡単に使用し、チーム全体が同じバージョンを維持できます。
ツールが新しいバージョンをリリースすると、.tomlファイル内のバージョン番号を明示的に上げ、Rokitを使用してアップグレードを実行し、新しいバージョンをテストし、問題が発生した場合はダウングレードします。コマンドとインストール手順については、Rokitを参照してください。
Rojoを実行
Rokitを使用してRojoをインストールした後、実際にインストールされたのはRojoサーバーです。次のステップは、Roblox Studio用のRojoプラグインをインストールすることです。
Creator Storeからインストールするか、次のコマンドを使用してローカルにインストールできます:
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と同様に、Rokitを通じてインストールできます。
ゲームの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.2.1"
react-roblox = "jsdotlua/react-roblox@17.2.1"
cryo = "phalanxia/cryo@1.0.3"
その後、wally installを実行します。Wallyは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 = "こんにちは、世界!",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)
ほとんどの他のソフトウェアプロジェクトと同様に、目標は、貢献者がリポジトリをクローンし、Rokitをインストールし、いくつかのコマンドを実行して、チームの他のメンバーと同じ開発環境を整えられることです。
バージョン管理
プレーンテキストファイルのセットをコンピュータに持つことで、さまざまな機能が利用できるようになりますが、その主なものは_バージョン管理_です。ファイルをGitまたはMercurialリポジトリに保存し、リモートリポジトリをホストし、GitHub、GitLab、またはBitbucketでコードの変更をレビューし、好みのテキストエディタを使用できます。
Visual Studio CodeとCursorは、最も大きな拡張機能エコシステムを持っていますが、Sublime TextやNotepad++、Vimなども人気の選択肢です。どのエディタを選んでも、Studioのスクリプトエディタの機能をマッチさせるには、いくつかの拡張機能が必要になるでしょう。
また、以下の追加を検討するかもしれません:
- 一般的な問題をキャッチし、コーディング標準を強制するためのリンターであるselene
- コードフォーマッタであるStyLua
- 自動補完、型チェックなどのためのLuau Language Server
すべてを元に戻す
サードパーティツールは、Roblox Studioに変更を同期するため、いずれのワークフローもロックインを伴わないため、いつでもこれらのツールを一つまたはすべて使用を停止し、Studioでゲームの編集に戻ることができます。このリスクのない状況は、サードパーティツールの実験を特に魅力的にします。