了解。
ここからは Structure Layer(構造レイヤー)の「部屋グラフ仕様」を、OS 設計として破綻なく・拡張性最大で・Roblox との連携に最適化した形で“完全定義” していくね。

あなたの 意味 → 構造 → 幾何 → 表示 の OS パイプラインに合わせて、Structure Layer は “意味を構造に変換する心臓部” だから、ここを丁寧に設計すると後が全部スムーズになる。


🧩 Structure Layer:部屋グラフ仕様(完全版)

Structure Layer の中心は RoomGraph(部屋グラフ)。
これは「部屋=ノード」「接続=エッジ」で表現される。

以下は 最適な JSON 仕様。


🟦 1. RoomGraph 全体構造

{
  "floors": 2,
  "rooms": [...],
  "connections": [...],
  "stairs": [...],
  "openings": {
    "doors": [...],
    "windows": [...]
  },
  "constraints": {...}
}

🟩 2. rooms(部屋ノード)仕様

部屋は 意味の残滓を持ちながら、構造として確定した状態。

{
  "id": "r1",
  "name": "living_room",
  "purpose": "living",
  "floor": 1,

  "bounds": {
    "x": 0,
    "y": 0,
    "width": 6,
    "depth": 4,
    "height": 3
  },

  "portals": {
    "doors": ["d1", "d2"],
    "windows": ["w1"]
  }
}

✔ ポイント

  • bounds は Structure Layer で確定(Geometry では座標化される)
  • portals は部屋に属するドア・窓の ID
  • purpose は Meaning Layer の名残(後で消える)

🟧 3. connections(部屋間エッジ)仕様

部屋同士の接続(廊下・ドア・開口部)を表す。

{
  "from": "r1",
  "to": "r2",
  "type": "door",
  "door_id": "d1"
}

✔ type の種類

  • "door"
  • "open_space"(リビングとダイニングのような仕切りなし)
  • "stairs"(階段で接続)

🟫 4. stairs(階段ノード)仕様

階段は部屋とは別ノードとして扱う。

{
  "id": "s1",
  "floor_from": 1,
  "floor_to": 2,
  "position": [3, 4],
  "size": [2, 1],
  "connects": ["r1", "r3"]
}

🟨 5. openings(ドア・窓)仕様

🔹 doors(ドア)

{
  "id": "d1",
  "room_a": "r1",
  "room_b": "r2",
  "wall": "north",
  "offset": 2.0,
  "width": 1.0,
  "height": 2.0
}

🔹 windows(窓)

{
  "id": "w1",
  "room": "r1",
  "direction": "south",
  "offset": 3.0,
  "width": 2.0,
  "height": 1.2
}

🟪 6. constraints(構造制約)仕様

Meaning Layer の意図を Structure Layer に持ち込む部分。

{
  "max_width": 12,
  "max_depth": 10,
  "entrance_direction": "south",
  "stairs_required": true
}

🧭 Structure Layer の役割まとめ

Structure Layer は 意味を構造に変換する“中間 OS”。

  • 部屋の用途 → 部屋ノード
  • 部屋の関係 → グラフ
  • 日当たり → 窓の方向
  • 動線 → connections
  • 階数 → stairs
  • 制約 → constraints
  • 外観 → 内部構造から導出(まだ生成しない)

Roblox に渡す前の 最も重要なレイヤー。


🔥 あなたのプロジェクトに最適化された最終仕様

Meaning → Structure → Geometry → Render

このうち Structure Layer は:

  • 部屋ノード
  • 接続エッジ
  • 階段ノード
  • ドア・窓ノード
  • 制約
  • 外壁の導出前の内部構造

これらをすべて JSON で表現する。


🌱 次に進むなら…

どれを深掘りする?

  • 外壁(外観)を Structure Layer から導出するアルゴリズム
  • 部屋グラフの自動生成ロジック(Python)
  • Flask API の設計(/generateStructure)
  • Roblox 側の HttpService 受信コード
  • Geometry Layer の座標生成アルゴリズム

どこからでも進められるよ。