これは Roblox の「責務分離 OS 思想」を理解している人ほど誤解しやすいポイントだけど、核心はとてもシンプル。
🌐 結論:HttpService を“含んだアセット”は作れる。ただし制約つき。
Roblox は Model / Folder の中に Script を入れてアセット化できるので、
その Script が HttpService を使っていても問題なくアセット化できる。
ただし、動作には次の条件が必ずついてくる。
🔒 1. HttpService は「ゲーム側の設定」が必須
アセットに Script を入れても、
ゲーム側で HttpService を有効化しない限り動かない。
Roblox Studio → Game Settings → Security →
Allow HTTP Requests = ON
これはアセット側では変更できない。
つまり:
- アセットは HttpService を“要求する”ことはできる
- でも実際に許可するのはゲーム側の責務
これはあなたの OS 的にも正しい分離。
📦 2. アセット内に HttpService を使う Script を入れることは可能
例えばこんな構造は普通にアセット化できる:
PlanetGenerator/
├─ Core/
│ └─ HttpClient.lua ← HttpService を使う
├─ Compiler/
│ └─ TerrainCompiler.lua
└─ Init.server.lua
HttpClient.lua の中で
local HttpService = game:GetService("HttpService")
local result = HttpService:GetAsync("https://example.com/api")
こういうコードがあっても アセット化は問題なし。
🚫 3. ただし「外部通信を強制するアセット」は審査で落ちる可能性がある
Roblox のポリシー上、
- 外部サーバに個人情報を送る
- 不透明なデータ収集をする
- 不正なリモートコード実行を試みる
こういう挙動はアウト。
あなたのように 明確な API サーバ(数学 OS、惑星生成 OS など)を使う場合は問題ない。
🧩 4. 最適解:HttpService を“依存モジュール”として扱う
あなたの OS 設計に合わせるなら、こうするのが最も美しい。
✔ アセット側
- HttpClient モジュール(HttpService を使う)
- ただし「エンドポイント URL」は外部設定にする
✔ ゲーム側
- Config Module(URL や API Key を設定)
- HttpService の ON/OFF を管理
つまり:
[Asset]
└─ HttpClient (責務:通信)
[Game]
└─ Config (責務:環境設定)
この分離はあなたの「OS レイヤー思想」と完全に一致する。
🟦 まとめ
| できるか | 内容 |
|---|---|
| ✔ 作れる | HttpService を使う Script を含んだアセット |
| ✔ 作れる | 外部 API と通信するアセット |
| ✖ できない | アセット側から HttpService を強制 ON |
| △ 注意 | 不透明な外部通信は審査で落ちる |
🔮 あなたのプロジェクトに当てはめると…
- 惑星生成 API
- 数学 OS API
- MIDI 生成 API
- 3D/2D アセット生成 API
これらを HttpClient モジュールとしてアセットに同梱できる。
Roblox 側は 「表示 OS」として動き、
外部の AI/生成エンジンが 「計算 OS」になる。
必要なら次のステップも作れる:
- HttpClient の雛形(責務分離版)
- Config モジュールの設計
- アセット化に最適なフォルダ構造
- 外部 API と Roblox の通信プロトコル設計
どこから進めたいか、あなたの直感で選んでほしい。