ここは Roblox の「ストレージ層の限界」を理解するうえでとても重要なポイント。
そして結論から言うと:


🎯 DataStore の 4MB 制限とは?

Roblox の DataStore は 1キーあたり最大 4MB までしか保存できない。
これは Roblox の公式仕様で、避けられない。

  • 1キー = SetAsync("KeyName", value)value 全体のサイズ
  • JSON 化された後のサイズで計算される
  • 4MB を超えると エラー(RequestTooLarge)

つまり:

🔥 巨大な Buffer を hex 化して保存すると、すぐ 4MB に到達する

例:

  • 1 Cube = 11 bytes
  • 10万個の Cube = 1.1MB
  • hex 化すると 2倍 → 2.2MB
  • 20万個で 4.4MB → 保存不可

🧱 では、制限のないストレージはあるのか?

✔ Roblox 内には「制限なしストレージ」は存在しない

Roblox の内部ストレージはすべて制限付き:

ストレージ 制限
DataStore 1キー 4MB、1日あたりの書き込み制限あり
OrderedDataStore 同じく 4MB
MemoryStore 持続時間 30〜45秒、永続化不可
Attributes / Instance 保存不可(セーブされない)
ReplicatedStorage 永続化不可

つまり Roblox 内部だけで「無制限ストレージ」を作ることは 不可能


🌐 ではどうする?(現実的な選択肢)

あなたのように 大量の Cube(バイト列)を扱うゲームでは、
次のどれかの OS レイヤー設計が必要になる。


🟦 1. DataStore を複数キーに分割する(最も一般的)

例:

Player_123_Cubes_0
Player_123_Cubes_1
Player_123_Cubes_2
...

1キー 4MB なので、
4MB × Nキー で無制限に近い保存が可能。

ただし:

  • キー管理が必要
  • 読み込み時に複数キーを結合する必要がある

あなたの「チャンク分割」思想と相性が良い。


🟦 2. 外部ストレージを使う(本当に無制限)

Roblox だけでは無理なので、外部サービスを使う。

  • Firebase
  • Supabase
  • AWS S3
  • Azure Blob Storage
  • Google Cloud Storage

など。

Roblox からは HttpService で通信する。

メリット:

  • 容量無制限
  • 高速
  • 安定
  • バイナリ保存可能

デメリット:

  • 外部サーバーが必要
  • セキュリティ設計が必要
  • 多少のコストがかかる

あなたのように OS 層を自分で設計できる人にはむしろ向いている。


🟦 3. データを圧縮する(LZ4 風)

Cube が大量なら:

  • 重複部分を削る
  • 差分だけ保存する
  • RLE(Run-Length Encoding)
  • LZ4 風の軽量圧縮

などで 1/3〜1/10 に圧縮できる。

あなたの「構造体(Delphi record)→ Buffer」設計と相性が良い。


🟦 4. 差分保存(diff)

毎回全部保存するのではなく:

  • 変更された Cube だけ保存
  • 変更ログを積み上げる
  • 起動時に再構築する

Git のような発想。


🧩 あなたの質問に対する答え(まとめ)

✔ DataStore の 4MB 制限は「1キーあたりの最大保存サイズ」

✔ Roblox 内には「制限なしストレージ」は存在しない

✔ 大量データを扱うなら、次のどれかが必要

  • DataStore を複数キーに分割
  • 外部ストレージ(Firebase / S3 など)
  • 圧縮
  • 差分保存

🌟 あなた向けの OS レイヤー視点のまとめ

Roblox の DataStore は アプリ層の簡易 KV ストレージであり、
バイナリ OS の巨大データを保存する用途ではない

だからあなたのように 構造体 × 大量データ × バイナリを扱う場合は:

  • Persistence Layer を自作する
  • Chunking / Compression / External Storage を組み合わせる

という 本物の OS 設計が必要になる。


必要なら:

  • DataStore 分割キーの最適な命名規則
  • 外部ストレージとの安全な通信プロトコル
  • 圧縮アルゴリズムの実装(Roblox Buffer で書く)
  • 差分保存のデザイン

どれでも一緒に設計できるよ。