アトリエ構造の前提

  • グループ数: 30
  • 1グループ内アトリエ数: 16
  • 総アトリエ数: 16 × 30 = 480
  • 役割整理:
    • アトリエ: 作業場所(保存先ではない)
    • 作品/未加工大理石: 明示的に持ち込む対象
    • 保存: 作品データに紐づけ(DataStore)

構成パターン

30 place 構成(推奨)

  • 各 Place が「アトリエグループ」を表し、1 Place = 16アトリエ
  • メリット:
    • 負荷分散: 480アトリエを30サーバーに分散。
    • 時間差開始: 1分間隔スタートを Place 別入場で制御しやすい。
    • 運用明瞭: グループごとの管理・監視が容易。
  • Explorer(各Place)例:
    Workspace
     └── Ateliers
          ├── Atelier1
          ├── ...
          └── Atelier16
    ReplicatedStorage
     └── Common
          ├── AtelierManager (ModuleScript)
          └── WorkCatalog (ModuleScript)
    ServerScriptService
     ├── DataStoreHandler (Script)
     └── GroupScheduler (Script)  -- 1分間隔スタート制御
    

単一 place+グルーピング構成

  • 1 Place30グループ × 各16アトリエ をフォルダーで管理。
  • メリット: 単一デプロイで済む。
  • デメリット: 同時接続や物理配置が重くなりがち。時間差運用が難しい。
  • Explorer 例:
    Workspace
     └── AtelierGroups
          ├── Group01
          │    ├── Atelier1 .. Atelier16
          ├── Group02
          │    ├── Atelier1 .. Atelier16
          └── Group30
               ├── Atelier1 .. Atelier16
    

選択と持ち込みのフロー

  • アトリエ選択: ユーザーがグループ内の1アトリエを明示的に選ぶ。
  • 作品/素材選択: ユーザーは自分の作品(最大256)または未加工大理石を選び、持ち込む。
  • 作業: アトリエは作業場。Clone された作業中オブジェクトが Workspace 内アトリエに置かれる。
  • 保存: 最終操作結果は作品データとして DataStore に保存(アトリエは保存先ではない)。

人数による結び付けルール

  • 通常: アトリエは単一作品で作業。保存はその作品へ。
  • 少人数時(8名以下: 4/3/2/1 ケース含む):
    • 同一作品を複数アトリエに結び付け可能。
    • 保存は「作品」へ集約。複数アトリエでの最終操作結果が同一作品に反映される。
  • 編集ロック例: 同一作品への同時矛盾更新を防ぐため、サーバー側で作品単位ロックを管理。

DataStoreのキー設計

  • 作品カタログキー:
    • 例: User:<UserId>:Works → 作品一覧(1..256、メタデータ付き)
  • 作品本文キー:
    • 例: Work:<UserId>:<WorkId> → 実データ(メッシュ・パラメータ・タイムスタンプ等)
  • セッション結び付け(少人数時):
    • 例: Session:<PlaceId>:Bindings に「AtelierId ↔ WorkId」一時結び付けを保持
  • 保存原則: 作品本文のみ更新。アトリエは結び付け情報(セッションスコープ)を持つだけ。

スケジューリングとルーティング

  • 1分間隔スタート(30グループ):
    • Place ルーティング: ロビーからグループの Place に順次送る。
    • DataStoreは Universe 共有: 30 Place すべて同一 DataStore にアクセス可能。

最小 UI(演出なし)

  • アトリエ選択リスト: Group 番号 → Atelier 番号の2段リスト(30×16)。
  • 作品選択リスト: 数に応じて段階解放(1作品なら自動、増えるほど番号/検索/タグ)。
  • 状態表示:
    • 選択中アトリエ: Group/Atelier IDs
    • 結び付け数(少人数時): 同一作品に紐づくアトリエ IDs
    • 保存対象: WorkId

必要なら、30 Place の具体的な配置テンプレート(StarterPlaceの複製方法、共通 ModuleScripts の共有フォルダ設計、ルーティングのダイアグラム)をまとめます。どちらの構成を正式採用しますか?(30 Place 推奨/単一 Place+グルーピング)