アーキテクチャ
システム構成図
リクエストフロー
コスト比較: ホスティングプラットフォーム
50万ユーザー規模(月間)でのコスト比較:
| プラットフォーム | 帯域制限 | 月額コスト(500K users) | ビルド時間制限 | 備考 |
|---|---|---|---|---|
| Cloudflare Pages | 無制限 | $0 | 500回/月 | 帯域課金なし |
| Vercel (Hobby) | 100GB/月 | $0 → 超過で$40/100GB | 6,000分/月 | 帯域超過で従量課金 |
| Netlify (Free) | 100GB/月 | $0 → 超過で$55/100GB | 300分/月 | 帯域超過で従量課金 |
| AWS S3 + CloudFront | 従量課金 | $50~200+ | なし | リクエスト+帯域の従量課金 |
| Firebase Hosting | 10GB/月 | $0 → 超過で$0.15/GB | なし | Spark無料枠は厳しい |
帯域計算の根拠
ゲームの総バンドルサイズ: 約 2MB(gzip後)
月間 500,000 ユーザー × 2MB = 1,000 GB / 月
- Cloudflare Pages: $0(帯域無制限)
- Vercel: (1000GB - 100GB) × $0.40/GB = $360/月
- Netlify: (1000GB - 100GB) × $0.55/GB = $495/月
- AWS CloudFront: 1000GB × $0.085/GB = $85/月(東京リージョン)バズった場合のリスク
Vibe Jam で話題になり、100万アクセスを超えた場合:
- Cloudflare Pages: $0(変わらず)
- Vercel: $720+/月
- Netlify: $990+/月
- AWS: $170+/月
Cloudflare Pages 以外では、バズ = 破産リスク となる。
クライアントサイドアーキテクチャ
データフロー
セーブデータ
全てのプレイヤーデータはブラウザの localStorage に保存する。
| データ種別 | キー | サイズ目安 | 説明 |
|---|---|---|---|
| キャラクター | rift_character | ~1KB | レベル、ステータス、経験値 |
| 装備 | rift_equipment | ~2KB | 所持装備一覧、装備中アイテム |
| 進行状況 | rift_progress | ~500B | クリア済みミッション、アンロック |
| 設定 | rift_settings | ~200B | 音量、画質、操作設定 |
| 合計 | — | ~4KB | localStorage上限5MBに対し余裕 |
ポータルデータ
Vibeverse ポータル経由のデータは sessionStorage + URLパラメータで受け渡す。
入場URL: https://rift-survivors.pages.dev/?portal=true&from=othergame&name=Player1セキュリティ考慮事項
| リスク | 対策 |
|---|---|
| チート(localStorage改竄) | シングルプレイのためランキングなし。改竄は自己責任 |
| XSS | ユーザー入力なし(ポータルパラメータはサニタイズ) |
| CSRF | サーバーなし。API呼び出しなし |
| DDoS | Cloudflare の DDoS 防御が標準適用 |
サーバーレスのセキュリティ
サーバーがないため、サーバー側の脆弱性が存在しない。 攻撃対象はブラウザのみであり、ゲームの性質上(シングルプレイ、ランキングなし)、 チートのインセンティブも低い。