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

Buku Putih Lag Game › Masalah yang hanya dialami sebagian pemain

Kekeliruan akibat ID objek dipakai ulang Entity ID reused without a generation counter

ID penyebab pt-id-reuse · Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Pengembangan klien (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika server memakai ulang ID objek yang sama saat NPC yang mati muncul kembali, klien yang melewatkan pesan despawn di antaranya salah mengira NPC baru sebagai NPC lama.

Mengapa NPC mati, lalu muncul lagi dengan ID objek yang sama → Akibatnya Klien yang melewatkan pesan despawn mengabaikan pesan spawn karena menganggapnya “objek yang sudah dikenal”, atau membiarkan objek itu tetap dalam keadaan mati → Di layar NPC tidak ada atau terlihat tergeletak hanya di salah satu layar, kadang juga terlihat dengan wujud NPC lain

Gejala
Tidak terlihat / objek hantu
Faktor
Packet loss
Siapa yang mengalami
Hanya satu klien di PC yang sama, Hanya saya
Kapan
Sesekali secara acak, Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Pengembangan klien (Tim Pengembang Game)
Tugas Tim Pengembang Game
Server: tambahkan nomor generasi ke ID objek untuk membedakan ID yang dipakai ulang. Klien: jika menerima pesan spawn untuk ID yang sudah dikenal, hapus objek lama lalu buat yang baru.
Di grafik
Melonjak acak sesekali · Jumlah pesan spawn untuk ID yang sudah dikenal
Yang diperiksa
Catat di server waktu pembuatan dan penghapusan per ID objek (beserta nomor generasi jika ada), lalu hitung berapa kali klien menerima pesan spawn dengan ID yang sudah dikenal dan berapa penghapusan dan pembuatan ulang yang diproses sebagai “tidak berubah” saat update jarak pandang
Cocok jika
ID NPC yang tidak terlihat atau terlihat tergeletak sama dengan NPC yang baru saja mati, dan di antaranya klien itu tidak menerima pesan despawn, atau server tidak mengirim pesan despawn maupun pesan spawn
Tidak cocok jika
ID punya nomor generasi dan nomor itu juga dipakai saat membandingkan: bukan penyebab ini. Tidak terlihat walaupun ID-nya tidak dipakai ulang: lebih mungkin pesan spawn hilang
Sarana pemeriksaan
Log dan metrik server atau klien game
Pelajari lebih lanjut
Masalah ini juga bisa terjadi di sisi server. Jika daftar objek dalam jarak pandang dibandingkan hanya berdasarkan ID, NPC yang mati lalu spawn lagi dengan ID yang sama di antara dua update jarak pandang dianggap “tidak berubah”, sehingga pesan despawn maupun pesan spawn sama-sama tidak dikirim. Jika waktu update jarak pandang berbeda untuk setiap pemain, hanya klien yang update-nya jatuh di saat itu yang mengalaminya.

Sumber

  1. Entity struct (Entities 1.3) Unity
    Entity terdiri dari Index dan nomor generasi (Version), sehingga bisa dibedakan apakah Index yang dipakai ulang masih valid
  2. NetworkConfig class (Netcode for GameObjects 2.5) Unity
    RecycleNetworkIds dan NetworkIdRecycleDelay: ID jaringan dipakai ulang setelah dibiarkan kosong selama waktu tertentu

Lihat juga

Lapisan yang sama: Masalah yang hanya dialami sebagian pemain

Penyebab di lapisan lain dengan gejala yang sama (Tidak terlihat / objek hantu)

Lihat kartu interaktif dengan gambar dan simulasi