rojo-pro について
Rojo Professionalは、Rojoを使ってファイルシステム上の開発とRoblox Studioを連携させるスキルです。Studioプラグイン経由のライブ同期、デプロイ用ファイルのビルド、Gitでのプロジェクト管理を扱います。
主な機能
- 01Roblox Studioとのファイル同期
- 02`.rbxl`と`.rbxm`ファイルのビルド
- 03プロジェクトツリーとプロパティの設定
- 04開発用と本番用プロジェクトの管理
- 05sourcemapとパッケージ型の生成
活用シーン
- 01外部エディターでのRobloxゲーム開発
- 02コード変更のStudioへの同期
- 03デプロイ用プロジェクトファイルの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dig1t/ skills --skill rojo-proインストール後、Claude Code で/rojo-proを入力して読み込まれたか確認します。
同梱ファイルreferences/patterns.mdreferences/sharp_edges.md
詳細
Rojo Professional
Rojo はファイルシステムと Roblox Studio をつなぎます。外部エディターでコードを記述し、プラグイン経由で Studio にライブ同期し、デプロイ用の .rbxl/.rbxm ファイルをビルドして、すべてを Git で管理できます。
クイックリファレンス
基本的なコマンド
# Initialize new project
rojo init my-game
# Start dev server (connects to Studio plugin)
rojo serve
# Serve specific project file
rojo serve dev.project.json
# Build standalone file
rojo build -o game.rbxl
rojo build deploy.project.json -o game.rbxl
# Generate sourcemap (for luau-lsp type checking)
rojo sourcemap default.project.json -o sourcemap.json
# Install Studio plugin
rojo plugin install
ファイル名の規則
| ファイルパターン | Roblox インスタンス |
|---|---|
*.server.luau | Script(サーバーで実行) |
*.client.luau | LocalScript(クライアントで実行) |
*.luau or *.lua | ModuleScript |
init.server.luau | ディレクトリが Script になります |
init.client.luau | ディレクトリが LocalScript になります |
init.luau | ディレクトリが ModuleScript になります |
*.model.json | カスタムモデル定義 |
*.meta.json | 同階層のファイル/フォルダーのメタデータ |
*.rbxm / *.rbxmx | バイナリ/XML モデルファイル |
*.txt | StringValue |
*.csv | LocalizationTable |
プロジェクトのファイル構成
{
"name": "MyGame",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"$className": "ReplicatedStorage",
"Shared": { "$path": "src/Shared" },
"Packages": { "$path": "Packages" }
},
"ServerScriptService": {
"$className": "ServerScriptService",
"Server": { "$path": "src/Server" }
},
"ReplicatedFirst": {
"$className": "ReplicatedFirst",
"Client": { "$path": "src/Client" }
},
"StarterPlayer": {
"$className": "StarterPlayer",
"StarterPlayerScripts": {
"$className": "StarterPlayerScripts",
"$path": "src/StarterPlayerScripts"
}
}
}
}
ツリーノードのプロパティ
$className- Roblox クラス(サービスでは必須、$pathがある場合は任意)$path- 同期するファイルシステム上のパス$properties- インスタンスのプロパティ$ignoreUnknownInstances- 追跡されていないインスタンスを削除しません(地形で便利です)- その他のキー - 子インスタンス名
省略可能なプロジェクト設定
{
"servePort": 34872,
"servePlaceIds": [123456789],
"placeId": 123456789,
"gameId": 987654321,
"globIgnorePaths": ["**/*.spec.luau", "**/test/**"],
"emitLegacyScripts": true
}
プロジェクトのセットアップと複数環境のパターンについては、references/patterns.md を参照してください。同期のトラブルシューティングについては、references/sharp_edges.md を参照してください。
よく使われるパターン
複数プロジェクトのセットアップ(開発/本番)
project/
├── default.project.json # Development (rojo serve)
├── deploy.project.json # Production build
├── src/
├── Packages/
└── ...
ライブラリ/パッケージの配布
スタンドアロンモジュールを配布するための最小限の設定:
{
"name": "my-library",
"tree": {
"$path": "src"
}
}
インスタンスのプロパティを設定する
{
"$className": "Part",
"$properties": {
"Anchored": true,
"Size": [4, 1, 2],
"Color": [1, 0, 0],
"BrickColor": { "BrickColor": "Bright red" },
"Material": { "Enum": "Material.Neon" }
}
}
Studio で作成したインスタンスを保持する
{
"Workspace": {
"$className": "Workspace",
"$ignoreUnknownInstances": true,
"GameContent": { "$path": "src/Workspace" }
}
}
ツールチェーンとの統合
Aftman(ツール管理)
# aftman.toml
[tools]
rojo = "rojo-rbx/[email protected]"
wally = "UpliftGames/[email protected]"
stylua = "JohnnyMorganz/[email protected]"
selene = "Kampfkarren/[email protected]"
luau-lsp = "JohnnyMorganz/[email protected]"
Wally(パッケージ管理)
# wally.toml
[package]
name = "author/my-game"
version = "1.0.0"
realm = "shared"
registry = "https://github.com/UpliftGames/wally-index"
[dependencies]
Promise = "evaera/[email protected]"
Signal = "sleitnick/[email protected]"
パッケージは Packages/ にインストールされるため、プロジェクトファイルでマッピングする必要があります。
型チェックのセットアップ
# Generate sourcemap for luau-lsp
rojo sourcemap default.project.json -o sourcemap.json
# Generate Wally package types
wally-package-types --sourcemap sourcemap.json Packages
リポジトリをクローンした後
Packages/ がない場合や、「path does not exist」というエラーが表示される場合:
wally install # Install packages from wally.toml
rojo sourcemap default.project.json -o sourcemap.json # Regenerate sourcemap
Packages/ は Git の追跡対象外のため、クローンするたびに再生成する必要があります。
避けるべきパターン
しないこと:
- Rojo の接続中に Studio でファイルを編集する(変更が上書きされます)
- ファイル名/フォルダー名にスペースを使う(PascalCase または snake_case を使用してください)
- Roblox サービスに
$classNameを指定し忘れる .luaと.luauの拡張子を一貫性なく混在させる- サーバーコードを ReplicatedStorage に置く(セキュリティ上のリスクです)
Packages/を Git にコミットする(wally installで生成されます)- クローン後に
wally installを実行し忘れる(Packages/ が存在しません)
すること:
.luau拡張子を一貫して使用する(Roblox 公式の Lua 方言です)- プロジェクト構造を変更した後は、ソースマップを最新の状態に保つ
- フォルダーをモジュールとして扱うパターンには
init.luauを使用する Packages/を.gitignoreに追加する- 環境ごとに複数プロジェクトのセットアップを使用する
コメント
Markdown 対応