mcpField
R
rojo-pro

rojo-pro

github.com/dig1t開発5243 回インストール5 週間前に更新
リポジトリ

rojo-pro について

Rojo Professionalは、Rojoを使ってファイルシステム上の開発とRoblox Studioを連携させるスキルです。Studioプラグイン経由のライブ同期、デプロイ用ファイルのビルド、Gitでのプロジェクト管理を扱います。

主な機能

  1. 01Roblox Studioとのファイル同期
  2. 02`.rbxl`と`.rbxm`ファイルのビルド
  3. 03プロジェクトツリーとプロパティの設定
  4. 04開発用と本番用プロジェクトの管理
  5. 05sourcemapとパッケージ型の生成

活用シーン

  1. 01外部エディターでのRobloxゲーム開発
  2. 02コード変更のStudioへの同期
  3. 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.luauScript(サーバーで実行)
*.client.luauLocalScript(クライアントで実行)
*.luau or *.luaModuleScript
init.server.luauディレクトリが Script になります
init.client.luauディレクトリが LocalScript になります
init.luauディレクトリが ModuleScript になります
*.model.jsonカスタムモデル定義
*.meta.json同階層のファイル/フォルダーのメタデータ
*.rbxm / *.rbxmxバイナリ/XML モデルファイル
*.txtStringValue
*.csvLocalizationTable
プロジェクトのファイル構成
{
  "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 に追加する
  • 環境ごとに複数プロジェクトのセットアップを使用する

コメント