Ketika Host Terputus, Mengapa Game Tidak Harus Berakhir?
Dalam game multiplayer kooperatif, ada satu masalah teknis yang sering tidak terlihat oleh pemain: apa yang terjadi jika pemain yang menjadi host tiba-tiba kehilangan koneksi internet?
Pada arsitektur listen server, salah satu komputer pemain berperan sebagai host sekaligus menjalankan fungsi server. Pemain lainnya bertindak sebagai client. Model ini relatif efisien karena pengembang tidak selalu membutuhkan server game khusus untuk setiap sesi.
Namun, terdapat kelemahan mendasar. Jika host keluar, mengalami crash, kehilangan koneksi, atau jaringan rumahnya bermasalah, sesi multiplayer dapat ikut terputus.
Situasi tersebut dikenal sebagai host migration atau perpindahan host.
Teknologi networking game modern berusaha mengatasi persoalan tersebut melalui kombinasi beberapa teknik, termasuk Peer-to-Peer (P2P) hybrid, relay server, host election, snapshot state, dan rollback netcode.
Unreal Engine menjelaskan bahwa pada multiplayer berbasis client-server, server memegang authoritative game state, sementara client menerima replika keadaan permainan tersebut. Perbedaan kecepatan koneksi dan kemungkinan kehilangan paket membuat sinkronisasi multiplayer jauh lebih kompleks dibandingkan permainan lokal.
Inilah bagian menarik dari infrastruktur game modern: pemain mungkin hanya melihat karakter terus berlari di layar, sementara di belakangnya terjadi pertukaran data, prediksi input, koreksi state, dan pemilihan jalur koneksi secara terus-menerus.
Apa Itu Arsitektur P2P Hybrid?
P2P atau Peer-to-Peer adalah model komunikasi ketika perangkat pemain dapat berkomunikasi sebagai peer, bukan seluruhnya bergantung pada satu server game khusus.
Dalam bentuk sederhana, misalnya empat pemain sedang bermain:
- Pemain A menjadi host.
- Pemain B, C, dan D menjadi client.
- Host menjalankan simulasi permainan.
- Data permainan dikirim dan diterima melalui jaringan.
- Jika A terputus, sistem harus menentukan bagaimana sesi dilanjutkan.
Masalah muncul karena host bukan sekadar pemain biasa. Ia memiliki fungsi penting dalam menjaga keadaan permainan.
P2P hybrid mencoba mengurangi ketergantungan tersebut dengan menambahkan infrastruktur pendukung seperti relay, layanan sesi, matchmaking, atau penyimpanan snapshot.
Unity, misalnya, menjelaskan bahwa Relay dapat menjadi perantara komunikasi sehingga pemain tidak perlu terhubung langsung satu sama lain. Relay juga membantu menghadapi persoalan NAT, firewall, serta perubahan alamat IP.
Dengan demikian, istilah “P2P†pada game modern tidak selalu berarti setiap perangkat berkomunikasi secara langsung tanpa server sama sekali.
P2P Murni vs P2P Hybrid
Pada P2P murni, pemain dapat berkomunikasi langsung satu sama lain. Model ini dapat menghemat biaya infrastruktur, tetapi menghadapi persoalan NAT, keamanan, konektivitas, dan ketergantungan terhadap host.
Sementara itu, P2P hybrid menggunakan kombinasi:
- Perangkat pemain sebagai bagian dari simulasi.
- Host atau peer yang memiliki otoritas tertentu.
- Relay server sebagai perantara koneksi.
- Layanan lobby atau session management.
- Mekanisme pemindahan otoritas.
- Snapshot atau data state untuk pemulihan sesi.
Arsitektur seperti ini memungkinkan pengembang mempertahankan efisiensi P2P sekaligus memperoleh sebagian manfaat infrastruktur server.
Mengapa Host Migration Sulit Dilakukan?
Host migration bukan sekadar mengganti nama pemain A menjadi pemain B.
Masalah utamanya adalah state permainan.
Bayangkan sebuah game kooperatif sedang berada pada kondisi berikut:
- posisi karakter pemain,
- jumlah amunisi,
- kesehatan karakter,
- posisi musuh,
- status misi,
- objek yang sudah dihancurkan,
- inventori,
- timer,
- AI musuh,
- dan berbagai variabel gameplay lainnya.
Semua informasi tersebut harus memiliki kondisi yang konsisten.
Jika host tiba-tiba hilang, host baru tidak cukup hanya mengetahui siapa pemain berikutnya. Ia juga harus mengetahui keadaan permainan terakhir yang valid.
Dokumentasi Unity secara eksplisit membedakan dua bagian host migration: host election dan data migration. Host election menentukan siapa yang menjadi host baru, sedangkan data migration memindahkan data yang dibutuhkan agar sesi dapat dilanjutkan.
Ini merupakan prinsip penting dalam desain sistem multiplayer.
Snapshot: “Foto†Keadaan Game
Salah satu pendekatan untuk mengatasi hilangnya host adalah membuat snapshot keadaan permainan.
Secara sederhana, snapshot dapat dibayangkan sebagai “foto digital†dari kondisi game pada waktu tertentu.
Misalnya sistem membuat snapshot setiap beberapa detik. Snapshot tersebut dapat berisi informasi penting mengenai dunia permainan.
Jika host terputus:
- Sistem mendeteksi koneksi host hilang.
- Pemain lain menentukan kandidat host baru.
- Host baru memperoleh snapshot terakhir.
- Snapshot diterapkan.
- Simulasi permainan dilanjutkan.
- Data baru kembali disinkronkan antar pemain.
Unity mendokumentasikan mekanisme host data migration yang dapat mempertahankan sesi client-hosted setelah host hilang. Dokumentasinya juga menjelaskan bahwa snapshot jaringan dapat dibuat secara berkala dan digunakan ketika migrasi terjadi.
Dalam implementasi Unity yang terdokumentasi saat ini, interval snapshot default yang disebutkan adalah 3 detik, dengan batas waktu upload snapshot 5 detik untuk mekanisme tersebut. Nilai tersebut merupakan konfigurasi teknologi Unity, bukan standar universal untuk semua game.
Lalu Apa Hubungannya dengan Rollback Netcode?
Jika host migration berhubungan dengan pemindahan otoritas dan keadaan permainan, rollback netcode memiliki tujuan berbeda: mengurangi dampak latensi dan keterlambatan input.
Rollback bekerja berdasarkan prinsip bahwa permainan tidak selalu harus menunggu input pemain lain sebelum menjalankan frame berikutnya.
GGPO menjelaskan bahwa rollback networking menggunakan input prediction dan speculative execution. Game dapat memprediksi input pemain lain ketika data aktual belum tiba. Jika prediksi ternyata salah, simulasi dapat kembali ke frame sebelumnya dan menjalankannya kembali menggunakan input yang sebenarnya.
Dengan kata sederhana:
Prediksi → Jalankan game → Input sebenarnya datang → Bandingkan → Jika salah, rollback → Simulasi ulang.
Teknik ini sangat penting pada permainan yang membutuhkan respons cepat.
Contoh Sederhana Rollback
Misalnya permainan berjalan pada frame 100.
Komputer pemain A sudah mengetahui input A, tetapi input B belum tiba.
Daripada menghentikan simulasi, sistem memprediksi bahwa B akan tetap bergerak maju.
Game menjalankan frame 100 berdasarkan prediksi tersebut.
Kemudian input sebenarnya dari B tiba dan ternyata B justru bergerak ke kiri.
Sistem kemudian:
- Mengambil state sebelum prediksi.
- Memasukkan input B yang sebenarnya.
- Menjalankan ulang simulasi.
- Menghasilkan state terbaru.
- Menampilkan hasil koreksi kepada pemain.
Inilah yang membuat rollback berbeda dari sistem yang sekadar menunggu data jaringan.
GDC juga pernah membahas implementasi rollback pada Mortal Kombat XL dan Injustice 2, termasuk kemampuan melakukan rollback dan simulasi ulang hingga delapan frame dalam waktu 16 milidetik.
P2P Hybrid dan Rollback Bisa Saling Melengkapi
Kedua teknologi tersebut sebenarnya menyelesaikan masalah yang berbeda.
P2P hybrid berfokus pada arsitektur koneksi dan keberlangsungan sesi.
Rollback netcode berfokus pada bagaimana simulasi gameplay menghadapi keterlambatan input.
Jika digabungkan, sebuah sistem multiplayer dapat memiliki beberapa lapisan:
Pemain → koneksi P2P/Relay → host atau authority → sinkronisasi state → rollback/prediksi → rendering
Saat koneksi normal, permainan berjalan seperti biasa.
Saat terjadi keterlambatan paket, rollback membantu mempertahankan responsivitas.
Saat host terputus, sistem host migration dapat memilih host baru dan memulihkan state.
Namun, penting untuk dipahami bahwa rollback netcode sendiri tidak otomatis menyelesaikan host migration. Keduanya membutuhkan mekanisme berbeda.
Peran Relay Server dalam Infrastruktur Modern
Relay menjadi salah satu komponen menarik dalam arsitektur multiplayer hybrid.
Pada model Relay, perangkat pemain tidak harus mengetahui alamat IP pemain lain secara langsung. Unity menjelaskan bahwa semua pemain dapat berkomunikasi melalui endpoint Relay yang sama, sehingga masalah NAT, firewall, dan perubahan IP dapat dikurangi.
Secara sederhana:
Tanpa Relay:
Pemain A ↔ Pemain B
Pemain A ↔ Pemain C
Pemain A ↔ Pemain D
Dengan Relay:
Pemain A → Relay ↠Pemain B
Pemain C → Relay ↠Pemain D
Relay bukan berarti semua gameplay harus dijalankan di server tersebut. Ia dapat bertindak sebagai perantara transportasi data.
Dokumentasi Unity juga menjelaskan bahwa Relay mendukung protokol seperti UDP, DTLS, dan WebSocket, sementara pemilihan region dapat digunakan untuk membantu kualitas koneksi.
Mengapa Tidak Semua Game Menggunakan Dedicated Server?
Dedicated server memiliki keuntungan besar karena otoritas permainan tidak bergantung pada komputer pemain.
Unreal Engine menjelaskan bahwa pada dedicated server, server berjalan terpisah dari komputer pemain. Sebaliknya, listen server menggunakan komputer salah satu pemain sebagai host sekaligus server.
Dedicated server biasanya menawarkan kontrol dan konsistensi yang lebih baik, tetapi membutuhkan infrastruktur server yang harus disediakan dan dioperasikan pengembang.
Untuk game dengan sesi kecil, koperatif, atau skala tertentu, pendekatan hybrid dapat menjadi kompromi menarik antara:
- biaya infrastruktur,
- kualitas koneksi,
- kompleksitas pengembangan,
- keamanan,
- skalabilitas,
- dan pengalaman pengguna.
Karena itu, tidak ada satu arsitektur networking yang ideal untuk semua jenis game.
Tantangan Terbesar: Latensi Tidak Bisa Dihilangkan
Teknologi networking modern dapat menyembunyikan atau mengurangi dampak latensi, tetapi tidak dapat menghapus jarak fisik antara dua perangkat.
Semakin jauh lokasi pemain dan server atau peer, semakin besar kemungkinan perjalanan paket membutuhkan waktu lebih lama.
Selain latency, pengembang juga harus menghadapi:
Packet Loss
Paket data dapat hilang selama perjalanan. Sistem harus menentukan apakah paket dikirim ulang, diabaikan, atau direkonstruksi menggunakan informasi lain.
Jitter
Latensi tidak selalu konstan. Paket pertama mungkin tiba dalam 40 ms, sedangkan paket berikutnya tiba dalam 80 ms.
Variasi tersebut dapat mengganggu sinkronisasi.
NAT dan Firewall
Perangkat pemain sering berada di balik router dan firewall. Relay dapat membantu mengatasi sebagian persoalan konektivitas tersebut.
Desynchronization
Jika dua perangkat menjalankan simulasi berbeda dan memperoleh state yang berbeda, game dapat mengalami desync.
Karena itu, rollback membutuhkan simulasi yang deterministik. GGPO menekankan bahwa engine harus mampu menghasilkan hasil yang sama ketika diberi rangkaian input yang sama.
Mengapa Pemain Sering Tidak Menyadari Semua Proses Ini?
Justru itulah keberhasilan rekayasa networking.
Pemain tidak ingin melihat:
“Synchronizing host state…â€
setiap beberapa menit.
Mereka ingin karakter tetap bergerak, permainan tetap berlangsung, dan sesi tetap terasa stabil.
Di belakang layar, game dapat menjalankan berbagai proses secara bersamaan:
- mengirim input,
- menerima input,
- memprediksi input,
- menyimpan state,
- memverifikasi state,
- memperbaiki perbedaan,
- mendeteksi disconnect,
- menentukan host baru,
- dan memulihkan sesi.
Unreal Engine sendiri menekankan bahwa sinkronisasi data merupakan aspek fundamental dalam pengalaman multiplayer karena informasi harus dikirim dengan cara yang tepat agar performa dan respons permainan tetap baik.
Masa Depan Multiplayer: Lebih Banyak Lapisan, Bukan Satu Teknologi
Perkembangan networking game menunjukkan bahwa solusi modern kemungkinan tidak bergantung pada satu teknologi tunggal.
Game multiplayer masa kini dapat menggabungkan:
P2P + Relay + Session Management + Snapshot + Host Migration + Prediction + Rollback + Replication
Setiap lapisan memiliki tugas berbeda.
Relay membantu konektivitas.
Session management mengatur peserta.
Host migration menjaga keberlangsungan sesi.
Snapshot membantu pemulihan state.
Rollback mengurangi efek keterlambatan input.
Replication menjaga berbagai perangkat memperoleh informasi gameplay yang diperlukan.
Pendekatan berlapis tersebut membuat sistem lebih kompleks bagi pengembang, tetapi justru lebih sederhana bagi pemain karena kompleksitas tersebut disembunyikan di balik pengalaman bermain.
Kesimpulan
Host migration merupakan salah satu persoalan teknis paling menarik dalam game multiplayer berbasis host. Ketika komputer pemain yang menjadi host terputus, masalahnya bukan sekadar mencari pemain pengganti, melainkan memastikan dunia permainan dapat dilanjutkan dalam kondisi yang konsisten.
Arsitektur P2P hybrid menawarkan pendekatan dengan menggabungkan komunikasi antarpeer dan infrastruktur seperti Relay atau layanan sesi. Sementara itu, rollback netcode menangani persoalan berbeda dengan menggunakan prediksi input dan simulasi ulang ketika data aktual akhirnya diterima.
Teknologi seperti snapshot, host election, replication, relay, dan rollback menunjukkan bahwa pengalaman multiplayer yang terasa “mulus†sebenarnya merupakan hasil dari rekayasa jaringan yang sangat kompleks.
Dengan kata lain, ketika pemain melihat permainan terus berjalan meskipun koneksi salah satu pemain bermasalah, kemungkinan besar bukan karena jaringan tiba-tiba menjadi sempurna. Game tersebut justru semakin pintar dalam menyembunyikan ketidaksempurnaan jaringan.
Dan di situlah salah satu perkembangan paling menarik dalam teknologi game modern: mengubah keterbatasan internet—latensi, packet loss, jitter, NAT, hingga putusnya host—menjadi gangguan yang sebisa mungkin tidak terasa oleh pemain.