Buku Putih Lag Game › Cari berdasarkan gejala
Aksi hilang / rollback: 36 penyebab dan penanggung jawabnya
Disebut juga: skill tidak keluar, item kembali seperti semula, trade gagal
Buka kamus gejala interaktif dengan gambar →
Aksi yang jelas sudah dilakukan dianggap tidak pernah terjadi, atau hasilnya berbalik lama setelahnya.
Skill sudah ditekan, tetapi tidak keluar. Item yang dibeli hilang, atau setelah login ulang semuanya kembali ke keadaan beberapa menit sebelumnya.
Permintaan hilang (packet loss, antrean meluap), server memutuskan hasil yang berbeda dari layar Anda (perbedaan waktu penilaian, ditolak setelah feedback sisi klien), atau penyimpanan gagal di tengah jalan (lock atau gangguan DB, server crash).
Penyebab gejala ini
L1 Proses game di klien
- Kesalahan sinkronisasi jam: Jika waktu server yang diperkirakan klien salah, titik waktu interpolasi dan pengecekan cooldown tidak cocok dengan server. (Pengembangan klien (Tim Pengembang Game))
L5 Perangkat jaringan data center
- Batas koneksi dan port NAT gateway cloud: Koneksi dari server di subnet privat ke luar (autentikasi platform, pembayaran, API eksternal) dikirim keluar oleh NAT gateway setelah alamat dan portnya diganti. Jika koneksi bersamaan ke tujuan yang sama melebihi batas port gateway, koneksi baru gagal. (Infrastruktur jaringan (Tim Infrastruktur))
- Microburst di switch: Jika beberapa server sekaligus mengirim paket ke ribuan pemain pada saat yang sama, buffer kecil di port switch tempat trafik itu bertemu meluap dalam waktu kurang dari 1 ms. (Pengembangan server (Tim Pengembang Game))
L6 Kartu jaringan server
- Ring buffer terlalu kecil: Jika ring buffer, tempat NIC menampung paket sementara, terlalu kecil, buffer meluap saat paket datang serentak dan paket dibuang. (Infrastruktur server (Tim Infrastruktur))
- Batas PPS cloud terlampaui: Server cloud memiliki batas jumlah paket per detik dan bandwidth per tipe instance, dan jika terlampaui, paket dibuang diam-diam. (Infrastruktur server (Tim Infrastruktur))
L7 OS server (kernel)
- OOM killer: Saat memori habis, Linux memilih proses yang memakai memori paling banyak lalu mematikannya secara paksa. Biasanya proses itu adalah server game. (Pengembangan server (Tim Pengembang Game))
- Lompatan jam sistem (NTP step): Jika jam server disesuaikan beberapa detik maju atau mundur sekaligus, timer yang bergantung pada jam sistem terpicu bersamaan atau berhenti. (Pengembangan server (Tim Pengembang Game))
- Port ephemeral habis pada koneksi antarserver: Jika server game sering membuka dan menutup koneksi singkat ke DB atau server lain, koneksi yang sudah ditutup tetap menahan port untuk sementara sehingga koneksi baru tidak bisa dibuka. (Pengembangan server (Tim Pengembang Game))
L8 Socket dan protokol
- Pengaturan retransmisi reliable UDP: Jika aturan retransmisi yang dibuat sendiri di atas UDP terlalu konservatif, pemulihan terlambat; jika terlalu agresif, jalur makin padat. (Pengembangan server (Tim Pengembang Game))
L9 Proses game di server
- Penumpukan antrean pesan: Jika permintaan masuk lebih cepat daripada kecepatan pemrosesan dan menumpuk di antrean, permintaan di belakang baru diproses beberapa detik kemudian atau dibuang. (Pengembangan server (Tim Pengembang Game))
- Crash di server: Jika proses server mati karena error yang tidak tertangani, semua pemain di server itu disconnect bersamaan. (Pengembangan server (Tim Pengembang Game))
- Pola trafik berubah akibat patch: Jika konten, efek, dan data sinkronisasi baru memperbesar ukuran dan frekuensi paket, server yang tadinya lancar mulai terbentur batas MTU, bandwidth, dan jumlah paket setelah patch. (Pengembangan server (Tim Pengembang Game))
L11 Disk
- Disk penuh: Jika log dan dump menumpuk hingga disk penuh, penulisan gagal, dan tanpa penanganan, server crash. (Infrastruktur server (Tim Infrastruktur))
L12 Database
- Perebutan lock pada hot row: Jika semua orang ingin mengubah baris yang sama (gudang guild, item populer di balai lelang, counter untuk seluruh server), lock hanya didapat satu per satu. (Pengembangan server (Tim Pengembang Game))
- Deadlock DB: Jika dua transaksi (sekumpulan operasi DB yang diproses sebagai satu kesatuan) saling menunggu baris yang dikunci pihak lain, DB membatalkan salah satunya secara paksa. (Pengembangan server (Tim Pengembang Game))
- Replication lag: Penulisan dilakukan ke DB primer dan pembacaan dari replika. Jika replika tertinggal, data yang baru ditulis belum terlihat. (Infrastruktur DB (Tim Infrastruktur))
- Batch job berskala besar: Agregasi ranking, pengiriman mail massal, dan pembersihan data lama yang dijalankan saat layanan berjalan menahan lock dan menyita kapasitas disk. (Pengembangan server (Tim Pengembang Game))
- Failover DB: Selama DB primer mati dan layanan dialihkan ke DB cadangan, penulisan tidak bisa dilakukan, dan data terakhir yang belum sempat direplikasi bisa hilang. (Infrastruktur DB (Tim Infrastruktur))
- Progres hilang karena interval penyimpanan yang panjang: Jika data hanya disimpan beberapa menit sekali untuk mengurangi beban, progres akan hilang saat server mati di antara dua penyimpanan. (Pengembangan server (Tim Pengembang Game))
- Transaksi yang terbuka lama: Transaksi yang terbuka lama terus memegang lock, dan DB tidak bisa membersihkan data versi lama (purge), sehingga seluruh DB makin lama makin lambat. (Pengembangan server (Tim Pengembang Game))
- Lock akibat perubahan skema (DDL) saat layanan berjalan: Jika kolom atau indeks ditambahkan ke tabel saat layanan berjalan, satu lock yang dibutuhkan sesaat bisa membuat semua request yang memakai tabel itu menunggu. (Infrastruktur DB (Tim Infrastruktur))
L13 Arsitektur dan operasional server
- Gangguan server pendukung: Jika server yang berjalan terpisah dari server game, seperti server chat, party, atau balai lelang, mengalami gangguan, hanya fitur itu yang tidak berfungsi. (Pengembangan server (Tim Pengembang Game))
- Selisih jam antarserver: Jika jam di setiap server sedikit berbeda, keputusan cooldown, buff, dan waktu mulai event tidak sama antarserver. (Infrastruktur server (Tim Infrastruktur))
- Ketergantungan pada layanan eksternal: Jika layanan eksternal seperti login platform, pembayaran, atau verifikasi identitas lambat atau berhenti, proses tertahan di tahap itu. (Pihak Eksternal (Pihak Eksternal))
- Kesalahan matchmaking dan penempatan region: Jika pemain ditempatkan di server region yang jauh padahal ada region yang dekat, ping pemain itu selalu tinggi walaupun koneksinya baik-baik saja. (Pengembangan server (Tim Pengembang Game))
- Sertifikat TLS kedaluwarsa atau salah konfigurasi: Jika sertifikat server login, API, atau patch kedaluwarsa atau sertifikat perantaranya tidak disertakan, koneksi TLS dari klien yang baru tersambung gagal sejak saat itu. (Infrastruktur jaringan (Tim Infrastruktur))
Desain sinkronisasi
- Tidak ada input buffering untuk skill: Jika skill berikutnya baru bisa ditekan setelah ada konfirmasi bahwa skill sebelumnya selesai di server, waktu pulang-pergi menyela setiap kombo. (Pengembangan klien (Tim Pengembang Game))
- Timing window pendek yang termakan ping: Jika waktu untuk bereaksi pendek, seperti pada dodge, parry, atau guard, ping memakan waktu itu sehingga muncul serangan yang mustahil dihindari. (Pengembangan server (Tim Pengembang Game))
- Hit registration tanpa lag compensation: Jika server menilai serangan kena hanya dengan “posisi sekarang di server”, hasilnya tidak cocok dengan layar yang Anda lihat. (Pengembangan server (Tim Pengembang Game))
- Lag compensation berlebihan: Jika server memutar mundur waktu terlalu jauh demi penyerang, pihak yang diserang tetap kena walaupun sudah bersembunyi. (Pengembangan server (Tim Pengembang Game))
- Otoritas klien: Jika setiap klien memutuskan hasilnya sendiri, layar Anda terasa responsif, tetapi hasilnya tidak cocok dengan layar pemain lain dan rentan terhadap cheat. (Pengembangan server (Tim Pengembang Game))
- Validasi server yang terlalu ketat: Jika server memeriksa kecepatan gerak, cooldown, dan jangkauan terlalu ketat, input normal yang datang bertumpuk akibat jitter pun ikut ditolak. (Pengembangan server (Tim Pengembang Game))
- Server menolak setelah feedback sisi klien: Jika server kemudian tidak mengakui hit atau skill yang sudah lebih dulu ditampilkan di layar Anda, hasil yang jelas-jelas Anda lihat menjadi tidak pernah terjadi. (Pengembangan klien (Tim Pengembang Game))
- Laju pengiriman snapshot rendah: Jika server mengirim update posisi (snapshot) hanya beberapa kali per detik, buffer interpolasi harus dibuat lebih panjang sebanding, sehingga karakter lain terlihat di masa lalu yang lebih jauh. (Pengembangan server (Tim Pengembang Game))
Masalah yang hanya dialami sebagian pemain
Lihat kamus gejala interaktif dengan gambar