한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L1 Proses game di klien

Prediksi sisi klien meleset Prediction mismatch / reconciliation

ID penyebab cg-predict · Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Klien Anda menampilkan gerakan lebih dulu, tetapi jika server menghitungnya berbeda, karakter Anda tertarik kembali.

Mengapa Klien bergerak lebih dulu sebelum konfirmasi server (prediksi) → Akibatnya Server menghitung collision, kecepatan gerak, atau buff secara berbeda, atau tidak menerima perintahnya → Di layar Saat konfirmasi datang, karakter Anda tertarik ke belakang

Gejala
Rubber banding
Faktor
Packet loss, Latensi
Siapa yang mengalami
Hanya saya
Kapan
Saat bergerak atau pindah area, Sesekali secara acak
Penanggung jawab
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Klien: pakai kode gerakan yang sama dengan server, kirim input secara duplikat, haluskan koreksi. Server: pakai kode gerakan yang sama dengan klien, saring input duplikat berdasarkan nomor input agar hanya diproses sekali.
Kisaran angka
Jarak karakter tertarik adalah “lama ketidakcocokan × kecepatan gerak”. Hilangnya beberapa perintah saja sudah membuat karakter tertarik 1–3 m.
Di grafik
Melonjak acak sesekali · Jumlah rekonsiliasi server (prediksi gagal)
Yang diperiksa
Catat jumlah dan jarak koreksi posisi yang dikirim server. Di Unreal, hitung koreksi ClientAdjustPosition dari server; di Unity Netcode for Entities, hitung berapa kali simulasi diputar mundur dan dihitung ulang karena prediksi gagal
Cocok jika
Koreksi menumpuk pada waktu laporan rubber banding, dan jarak koreksi berulang kali besar pada buff, medan, atau skill gerak tertentu
Tidak cocok jika
Koreksi hanya menumpuk saat packet loss tinggi: mengarah ke paket input yang hilang (koneksi). Tidak ada koreksi, tetapi hanya karakter lain yang terlihat tertarik: lebih mungkin “Ekstrapolasi berlebihan (dead reckoning)”
Sarana pemeriksaan
Log dan metrik server atau klien game

Sumber

  1. Introduction to prediction (Netcode for Entities 6.5) Unity
    Klien dan server memprediksi dengan kode simulasi yang sama; jika berbeda dari state server (prediksi gagal), simulasi diputar mundur dan dihitung ulang, dan koreksinya terlihat
  2. Use the command stream to handle user inputs (Netcode for Entities 6.5) Unity
    Untuk mengantisipasi packet loss, input beberapa tick sebelumnya dikirim secara duplikat bersama input terbaru
  3. Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
    Klien bergerak lebih dulu dan server mereproduksi gerakan yang sama; jika posisinya berbeda, server mengoreksi dengan ClientAdjustPosition lalu gerakan yang tersimpan diterapkan ulang

Lihat juga

Lapisan yang sama: L1 Proses game di klien

Penyebab di lapisan lain dengan gejala yang sama (Rubber banding)

Lihat kartu interaktif dengan gambar dan simulasi