Bottleneck pemrosesan paket di main thread Network processing on the main thread
ID penyebab cg-net-mainthread · Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Jika paket yang diterima hanya diproses dalam jumlah tertentu per frame, paket yang datang bertumpuk terus terdorong ke frame berikutnya.
Mengapa Di tempat ramai, ribuan update tiba setiap detik → Akibatnya Main thread terbentur batas jumlah pemrosesan per frame dan tidak sempat membaca semuanya → Di layar Gerakan pemain lain makin lama makin terlambat, lalu diterapkan sekaligus
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Klien: terima dan parse paket di thread terpisah, gabungkan update posisi lama untuk objek yang sama dan terapkan yang terbaru saja. Server: di tempat ramai, kirim update karakter yang jauh dengan frekuensi lebih rendah untuk mengurangi volume kirim.
Kisaran angka
Begitu paket yang belum diproses menumpuk, hanya butuh beberapa detik sampai tertinggal sebanyak 1 detik.
Di grafik
Naik mengikuti beban · Jumlah paket terima yang belum diproses, latensi dari diterima hingga diterapkan
Yang diperiksa
Catat di log jumlah paket yang tersisa karena tidak sempat diproses klien di setiap frame, serta latensi dari waktu paket tiba hingga diterapkan ke game, lalu periksa bersama jumlah pemain di sekitar
Cocok jika
Di tempat ramai, jumlah paket yang tersisa dan latensi penerapan terus bertambah, sedangkan pada saat yang sama ping dan interval kirim server normal
Tidak cocok jika
Tidak ada latensi penerapan, tetapi paketnya sendiri tiba terlambat: mengarah ke jalur jaringan. Frame time naik tajam: lebih mungkin “Beban rendering kerumunan besar”
Sarana pemeriksaan
Log dan metrik server atau klien game
Sumber
Actor Priority in Unreal EngineEpic Games Jika bandwidth kurang, tidak semua actor direplikasi setiap kali; prioritas ditentukan dari jarak ke pengamat dan waktu sejak replikasi terakhir
Replication Graph in Unreal EngineEpic Games Game dengan banyak pemain dan objek replikasi (MMORPG dan sebagainya) harus mengelompokkannya per lokasi dan hanya mengirim objek yang diperlukan agar terhindar dari bottleneck CPU server