Untuk klien di jendela latar belakang, game, engine, dan OS mengurangi frame dan pemrosesan. Paket yang diterima tidak sempat diproses tepat waktu, sehingga menumpuk atau meluap.
Mengapa Batas frame latar belakang di opsi game atau driver grafis (misalnya, di driver NVIDIA bisa diatur 20–200 frame per detik), mode hemat daya, pengaturan engine yang menghentikan game di latar belakang. OS juga memprioritaskan CPU dan GPU untuk jendela di depan (foreground) → Akibatnya Jumlah paket yang diproses per frame berkurang sehingga antrean menumpuk, dan paket dibuang jika buffer terima meluap → Di layar Saat jendela dibawa ke depan, semuanya muncul sekaligus, atau sebagian NPC tetap tidak terlihat
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pihak Eksternal (Pihak Eksternal)
Tugas Tim Pengembang Game
Terus terima data jaringan di thread terpisah dari game loop, jamin throughput minimum di latar belakang, aktifkan pengaturan engine untuk berjalan di latar belakang (runInBackground di Unity).
Tugas Pihak Eksternal
Imbau pemain untuk mematikan batas frame latar belakang di driver grafis dan mode hemat daya PC.
Kisaran angka
Di Unity, jika runInBackground dimatikan, game loop berhenti begitu jendela kehilangan fokus. Jika paket hanya diterima di loop itu, tidak ada paket yang diproses sama sekali selama itu.
Di grafik
Kosong lalu datang sekaligus · Interval frame klien, jumlah paket yang diproses per frame
Yang diperiksa
Di PC yang sama, letakkan satu jendela di depan dan yang lain di belakang, lalu tukar posisinya dan bandingkan. Ukur interval frame kedua proses dengan PresentMon, dan jika ada log dari game, periksa status fokus jendela dan jumlah paket yang diproses per frame
Cocok jika
Interval frame melebar jauh hanya saat jendela di latar belakang (jika karena batas driver, intervalnya mendatar di nilai yang sesuai dengan frame rate yang diatur) atau pemrosesan berhenti, dan saat jendela ditukar, masalahnya ikut pindah ke klien lain
Tidak cocok jika
Terjadi sama persis di jendela depan: bukan karena pembatasan latar belakang. Selalu klien yang sama yang bermasalah tanpa peduli posisi jendela: lebih mungkin perbedaan opsi tampilan atau versi
Sarana pemeriksaan
Lingkungan pemain sendiri
Sumber
Application.runInBackgroundUnity Nilai default runInBackground adalah false, dan dengan nilai itu aplikasi dijeda di latar belakang