Jika Anda keluar sebentar dari game untuk melihat notifikasi, OS menangguhkan aplikasi (suspend) beberapa detik kemudian, dan selama itu server memutus koneksi Anda.
Mengapa Keluar sebentar dari game untuk membaca pesan atau menerima telepon → Akibatnya Engine game menghentikan jalannya game, dan OS pun segera menghentikan aplikasi dan jaringannya → Di layar Saat kembali, sudah disconnect dan harus reconnect
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Klien: saat kembali, jangan menunggu koneksi yang sudah putus, langsung reconnect otomatis dengan token sesi (melanjutkan sesi tanpa login ulang), terima state terbaru sekaligus untuk menyamakan. Server: jika heartbeat terputus, bersihkan koneksinya tetapi pertahankan sesi karakter selama masa tenggang singkat (jangan langsung dikeluarkan), lanjutkan sesi dengan token sesi jika pemain reconnect dalam waktu itu.
Kisaran angka
Engine game biasanya berhenti begitu aplikasi keluar dari layar. iOS menangguhkan aplikasi dalam beberapa detik, atau umumnya dalam puluhan detik jika mendapat waktu tambahan; Android 14 ke atas membekukan (freeze) aplikasi yang keluar dari layar sekitar 10 detik kemudian.
Cocokkan waktu aplikasi ditangguhkan dan kembali di log klien (OnApplicationPause di Unity) dengan alasan dan waktu disconnect di server lewat ID sesi. Di Android, periksa juga alasan penutupan proses yang tercatat di ApplicationExitInfo (REASON_LOW_MEMORY dan sebagainya)
Cocok jika
Klien masuk ke status ditangguhkan tepat sebelum server mencatat disconnect karena timeout heartbeat, lalu reconnect tepat setelah kembali
Tidak cocok jika
Terputus saat aplikasi tetap tampil di depan: lebih mungkin “Mapping NAT kedaluwarsa”, “IP bersama dari ISP (CGNAT)”, atau “Perpindahan Wi-Fi ↔ LTE/5G”
Sarana pemeriksaan
Log dan metrik server atau klien game
Pelajari lebih lanjut
Jika memori kurang, ponsel kadang menutup sepenuhnya game yang sedang di latar belakang. Inilah alasan game mulai lagi dari awal setelah Anda membuka kamera atau aplikasi pembayaran dan autentikasi. Makin rendah spesifikasi perangkat, makin sering terjadi.
Sumber
Extending your app’s background execution timeApple Saat masuk ke latar belakang, applicationDidEnterBackground diberi waktu 5 detik lalu aplikasi segera ditangguhkan; jika butuh lebih, minta waktu dengan beginBackgroundTask (sisa waktunya di backgroundTimeRemaining)
Cached apps freezerAndroid (Google) Android 14 ke atas membekukan proses aplikasi yang sudah berstatus cached setelah 10 detik; saat dibekukan, semua thread berhenti
Application.runInBackgroundUnity Default false sehingga game berhenti di latar belakang; Android selalu berhenti di latar belakang apa pun pengaturannya, dan iOS mengabaikan pengaturan ini
MonoBehaviour.OnApplicationPause(bool)Unity Saat aplikasi ditangguhkan atau berjalan lagi, OnApplicationPause(true/false) dikirim ke semua MonoBehaviour
ApplicationExitInfoAndroid (Google) REASON_LOW_MEMORY: low memory killer sistem menutup proses aplikasi (perangkat yang tidak mendukungnya melaporkannya sebagai REASON_SIGNALED dengan SIGKILL)