モバイルゲームをプレイするときのトラフィックを最適化する方法
1)トラフィックを最適化する理由
より少ない遅延→より安定したセッションとより高いホールド。
データの節約→ユーザーコストの削減と「関税削減」のリスク."
速い開始→fluffs/adsのゲームのより多くの実行。
弱いネットワーク(3G/cafe-Wi-Fi/ローミング)の信頼性。
2)本当に見る価値のある指標
First Contentful Paint (FCP )/Last Contentful Paint (LCP):プレイヤーが「見た」ときと「遊ぶことができる」とき。
INP/TBTインターフェイスレスポンス。
トラフィック/セッション(MB)とピークビットレート。
RTT/ジッタ/損失(特にライブゲーム/ストリーム用)。
「キャッシュヒット」(Cache Hits)-アプリケーション/CDNキャッシュからのリクエストの割合。
3)ネットワークスタック: 基本的な衛生
多重化およびより堅牢なパケット損失処理のためのHTTP/2/HTTP/3 (QUIC)を有効にします。
TLSセッションの再開と0-RTT (H3用)-少ないハンドチャット。
DNS プリフェッチ/CDNおよびゲームプロバイダへのプリコネクト。
有能なキャッシュポリシー:'Cache-Control'、 'ETag'、バージョン管理アセット。
4) CDNと地理
ユーザーに近いPoPでCDNに静的とメディアを置きます。
CDN (WebP/AVIF)でイメージのサイズ変更/'accept'ベースネゴシエーションを有効にします。
ライブビデオの場合-エッジ上のマルチビットレートプロファイル(HLS/DASH)。
5)圧縮およびフォーマット(実際に数十パーセントを節約する)
画像:WebP/AVIF+'srcset/sizes'、スプライトとSVGアイコン。
フォント:WOFF2、目的のグリフのサブセット、'font-display: swap'。
ビデオ:H.264/HEVC/AV1(どこでも利用可能)、自動再生の代わりにポスター。
Text/JSON: Brotli (br)> Gzip、 CDN/サーバーで有効にします。
JS/CSS: minification、 tree-shaking、 code-split。
6)ゲームキャンバス: スロット、ミニゲーム、キャンバス/WebGL
適応DPRのレンダリング:'devicePixelRatio'の制限を1にします。モバイルで5-2-シャープネスが持続し、トラフィック/CPUが低下します。
テクスチャアトラスとテクスチャ圧縮(ASTC/ETC/BC、サポートされている場合)→ダウンロード数が少なくなります。
「一気に」ではなく、レベル/画面を横切るアセットの怠惰なスワップ。
「重い」シャドウ/フィルタを削除し、弱いデバイスでアニメーションの頻度を30-45 fpsに制限します。
iframeスロットの場合:軽量資産についてプロバイダとネゴシエートし、重要なリソースのみをプリロードします。
7)生きているゲームおよび流れ: 苦痛なしでメガバイトを救って下さい
360p/480p/720pのしきい値を持つアダプティブビットレート(ABR);幅/RTTによるプロフィールの選択。
必要な場合にのみ低遅延HLS/DASH;すべての人にLLCを有効にしないでください。
音声ビットレート64-96 kbpsは、多くの場合十分です。
オフロビー自動再生:ショーポスター/アニメーションGIF/webmプレビュー。
8)リアルタイムのコミュニケーション
WebSocket:バイナリプロトコル、パックメッセージ、25〜30秒ごとのハートビート。
WebRTC-data-狭いケースのみ。「不要な」NATバイパスを避けてください。
ペイロード(プロトコルバッファ/MessagePack)を圧縮し、「fat」 JSONを駆動しないでください。
9) PWA/サービスワーカー: モバイル上のトラフィックボード
App Shell:ヘッダー/ナビゲーションとスケルトン-インスタントファースト画面をキャッシュします。
ランタイムキャッシュ:'Stale-While-Revalidate' for pictures、 'Network First' for API with TTL。
背景同期:遅延テレメトリー/ロギング、インタラクションをブロックすることなく。
オフラインのフォールバック:空白の代わりに理解可能な画面(リトレイと不要なリクエストを節約)。
10)スマートダウンロードと優先順位
重要なCSSインライン、残りは要求あり次第。
'defer/async'スクリプトの場合は、後のスクリーンのimport()
遅延負荷ゲームリスト(1パックあたり20〜30枚)、'IntersectionObserver'。
意図によるプリフェッチ:ユーザーがカードに残っているとき→ゲームアセットをプルアップします。
11)請求とチェックアウト: トラフィックも重要です
システム決済ダイアログ(Apple/Google Pay)を使用すると、より経済的で持続可能です。
決済ステップのリダイレクトと余分な分析ピクセルを最小限に抑えます。
暗号モジュールでは、すべてのネットワーク/アイコンをロードしないでください。選択したネットワーク/コインのみです。
12)「大食い」のないテレメトリーとA/B"
必要なイベントのみを収集し、バッチし、N秒/サイズごとに1回送信します。
prodのデバッグログをオフにし、イベントのフィールドを切り捨てます。
A/Bフラグ-簡単なリモートコンフィグを介して、メガバイトのスキームをプルしないでください。
13)プレーヤーのための練習(速い交通の勝利)
iOS/Androidでは、データセーバー/トラフィック保存を有効にします。
可能であれば、Wi-Fi 5/6でプレイしてください。モバイルネットワークでは、「1-2スティック」を避けます-より高い損失。
設定で自動再生ビデオ/プレビューを無効にします。
Telegramとブラウザでは、数週間毎にキャッシュをクリアしますが、頻繁にプレイする前ではありません(キャッシュは役立ちます)。
アプリケーション/PWAアップデートを追跡してください。新しいバージョンの方が経済的です。
14)開発者/製品チェックリスト(1ページ)
1.HTTP/2/3、 TLS 1。3、 CDN/ゲームドメインに事前接続します。
2.画像のサイズ変更、AVIF/WebP、テキストあたりのBrotliを含むCDN。
3.App Shell+SW:オフライン・フォールバック、ランタイム・シンク、バックグラウンド・シンク。
4.アセットの遅延ロード、コード分割、重要なCSSインライン。
5.動的DPR (≤ 2)、圧縮された質、弱いの30-45fps。
6.ABRビデオ幅/RTT、ロビーで自動再生をオフ。
7.包装が付いているWebSocket;データのための圧縮された議定書。
8.batchamiによるテレメトリー;prod-debagを無効にしました。
9.不要なリダイレクトなしのキャッシャー;システム支払いダイアログ
10.モニタリング:LCP/INP/traffic/session、キャッシュヒット、RTT/loss。
15)頻繁な間違いとそれらを修正する方法
→リストのビデオ/ストリーム自動再生をポスター/プレビューに置き換えます。
すべてのデバイスで3つの×資産を取得します→'srcset '/DPRプロファイルを使用します。
巨大なJSバンドル→ルート分離、未使用のデップの除去。
Zero Cache Control→TTL/ETagとバージョン管理を構成します。
チャット/テレメトリースパム→バッチ、ハートビート間隔を増加させます。
1つのWebSocketチャンネルのすべて(ゲーム+チャット+分析)→クリティカルで分割します。
16)「天気を作る」ミニパターン'
悪いネットワークでライブテーブルの「ビデオ品質を下げる」ボタン。
retinaをロードする前にゲームのプレースホルダーカバー。
Last Session Save (State Cache)-再試行の回数が少なくなります。
最後の実行テーブル/スロットにディープリンク-2つの画面とアセットのパックをマイナスします。
17) FAQ
トラフィックの最適化は品質を低下させますか?
適応的に行う場合(DPR/ABR/' srcset')-いいえ:デバイスとネットワークに最適な品質/速度のバランスを提供します。
すべてのユーザーは低遅延モードを有効にする必要がありますか?
いいえ、そうではありません。トラフィックが高く、損失に敏感です。トーナメント/ライブケースに出発します。
ネイティブクライアントの代わりにPWA-以下のトラフィック?
多くの場合、はい:SDKとバックグラウンドスレッドが少なく、SWキャッシュがあります。しかし、実装に依存します。
AVIF/WebPはいくら節約できますか?
JPEG/PNGと比較して平均25-45%で、品質を損なうことはありません。
私たちは常にDPRを下げるべきですか?
弱いデバイス/低ネットワークで動的に削減します。Wi-Fi 6のフラッグシップでは、2を維持できます。0.
トラフィックの最適化は「、すべてを切断する」ことではなく、デバイス、ネットワーク、シナリオに品質とボリュームを適応させることです。高速ネットワークスタック(HTTP/3、 CDN、キャッシュ)、スマートアセット(WebP/AVIF、テクスチャ、ABR)、きちんとしたキャンバスとPWAキャッシュを組み合わせ、テレメトリーノイズをカットします。プレイヤーはネットワークのために落ちることが少なくなり、リターンが多くなり、製品は保持コストとインフラストラクチャコストの両方で勝利します。