プロフェッショナルな開発スタジオにとって、サードパーティツールを設定し、自動化に投資することは、開発者の生産性を劇的に向上させることができます。ロブロックスのクラウドファーストアプローチには多くの利点がありますが、開発ワークフローの特定の部分をクラウドの外に移動することで、大規模なチームが時間の経過に伴う変更を追跡し、コードをレビューし、すでに慣れ親しんでいる言語やツールを使用するのに役立ちます。
- 外部テキストエディタを使用したいだけの場合や、コードをバージョン管理したい場合は、Script Syncが素晴らしい選択肢です。
- プロジェクト全体をローカルファイルのセットとして管理したい場合は、このページでいくつかのツールと戦略を紹介します。
同期の問題
基本的に、ロブロックスと外部ツールを使用することは_同期_の問題です:
- ロブロックスのインスタンスをディスク上のファイルとして存在させ、自分のツールを使って作業できるようにしたい。
- 作業が終わった後、ファイルをロブロックスプロジェクトに戻す必要があります。
- その間に他の誰かが同じファイルを変更していた場合、競合を処理する必要があります。
全体のソリューションがシームレスで自動的に感じられるためには、a) ファイルの変更をリッスンし、b) これらの変更をスタジオに取り込む必要があります。
ロブロックスのクラウドファーストアプローチとは異なり、Rojoは「ファイルシステムファースト」アプローチを可能にします。これは、あなたのマシン上でサーバーを実行し、スタジオプラグインと通信してファイルとスタジオデータモデルを同期させます。
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サーバーです。次のステップは、ロブロックススタジオ用のRojoプラグインをインストールすることです。
クリエイターストアからインストールするか、次のコマンドでローカルにインストールできます:
rojo plugin install次に、新しいゲームのプロジェクト構造を生成し、ビルドします:
rojo init my-new-experience
cd my-new-experience
rojo build -o my-new-experience.rbxlまたは、既存のゲームをポートすることもできます。いずれにせよ、プロジェクトができたら、Rojoサーバーを起動します:
rojo serveロブロックススタジオで、先ほどビルドした.rbxlファイルを開き、Rojoプラグインを開いて、現在実行中のサーバーに接続します。この時点で、好みのテキストエディタで変更を加え、これらの変更が自動的にスタジオに同期されるのを確認できます。


Rojoプロジェクトには、ファイルの命名要件、さまざまな設定オプション、いくつかの制限があり、これらはすべてRojoドキュメントで説明されています。
パッケージマネージャ
ロブロックスには強力な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に追加して、その内容がロブロックスに同期されるようにすることです。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も人気の選択肢です。どのエディタを選んでも、スタジオのスクリプトエディタの機能に合わせるにはいくつかの拡張が必要です。
次のような追加を検討することもできます:
- 一般的な問題をキャッチし、コーディングスタンダードを強制するためのリンターselene
- コードフォーマッタStyLua
- 自動補完、型チェックなどのための言語サーバーLuau Language Server
すべてを元に戻す
サードパーティツールはロブロックススタジオに変更を同期するため、置き換えるのではなく、ワークフローのどの部分にもロックインはありません。いつでもこれらのツールの1つまたはすべての使用を停止し、スタジオでゲームを専用に編集することに戻ることができます。リスクがないため、サードパーティツールを試すことが特に魅力的です。