ゲームクライアント API
これはクライアントのビルドツール向けの上級者向け契約です。カタログを使うだけなら、リソース DTO が返す file、jacketUrl、musicUrl などのパスがあれば十分で、そのパスはメディアとファイルから取得できます。
ゲームクライアント API は、有効なサーバーリリースのファイルを公開します。まずマニフェストを読み、次にマニフェストまたは Addressables 索引に載っているファイル名を要求します。
マニフェスト
Section titled “マニフェスト”GET /game-client/{server}/manifest.jsonHEAD /game-client/{server}/manifest.json安定したエンベロープには次が含まれます。
{ "schema": "haneoka-game-client-v1", "server": "jp-cbt", "sourceId": "garupa-jp-2026-09", "master": { "systemVersion": "example-system-version" }, "addressables": { "platform": "Android", "catalogFile": "catalog.json", "catalogHashFile": "catalog.hash", "embeddedCatalogFile": "catalog.embedded.json", "index": { "algorithm": "fnv1a32-mod-256", "shards": 256, "prefix": "addressables/index/" } }}サーバーは X-Haneoka-Release-Id と X-Haneoka-Source-Id を返します。マニフェストは現在のポインターに従い、有効期間は短めです。
マスターファイル
Section titled “マスターファイル”GET /game-client/{server}/master/MasterDataSystemVersion.txtGET /game-client/{server}/master/{filename}HEAD /game-client/{server}/master/{filename}バージョンファイルはテキストです。そのほかの対応するマスターファイルは Master*.bin というファイル名の規則に従い、バイナリで返されます。ファイル名はリリースマニフェストか、文書化されたクライアント契約から取得してください。
Addressables
Section titled “Addressables”GET /game-client/{server}/asset/{platform}/{filename}HEAD /game-client/{server}/asset/{platform}/{filename}プラットフォームはマニフェストの addressables.platform と一致する必要があります。サーバーは 256 分割のリリース索引シャードを解決し、内容アドレス方式のオブジェクトを返します。カタログファイルは現在のリリースのオブジェクトです。Unity バンドルとカタログのペイロードは、索引上の役割が許す場合は不変のコンテンツとしてキャッシュされます。
Addressables のレスポンスはバイナリで、リリースヘッダーを含みます。プラットフォーム、ファイル名、索引エントリーのいずれかが見つからない場合は 404、索引とオブジェクトの整合性に失敗した場合は 502 を返します。
ゲームクライアントのファイルレスポンスは ETag を返し、単一のバイト範囲を受け付けます。満たせる範囲には 206、無効な範囲には Content-Range: bytes */<size> 付きの 416 を返します。
manifest.jsonを取得します。platformとカタログのファイル名を確認します。/asset/{platform}/{filename}でカタログファイルとハッシュファイルを取得します。- クライアントカタログまたは公開索引から追加のファイル名を解決します。
- レスポンスヘッダーに従ってキャッシュし、ローカル索引と一緒にリリース ID を保持します。