Menggunakan Server Authority untuk Mengurangi Risiko Cheating

Cheating menjadi masalah serius ketika client diberi terlalu banyak kontrol terhadap game state.

Jika perangkat pemain bisa menentukan sendiri posisi karakter, damage, jumlah currency, atau hasil tembakan, attacker hanya perlu memodifikasi data lokal untuk memperoleh keuntungan.

Menggunakan Server Authority mengubah pendekatan tersebut dengan menjadikan server sebagai sumber kebenaran utama. Client tetap menerima input pemain dan menampilkan game, tetapi keputusan penting diverifikasi atau dihitung di server.

Pendekatan ini tidak menghapus seluruh bentuk cheating, tetapi dapat mempersempit ruang manipulasi secara signifikan pada multiplayer kompetitif.

Apa Itu Server Authority dalam Multiplayer?

Server authority berarti server memiliki keputusan terakhir mengenai state permainan.

Client boleh mengatakan, “Saya menekan tombol maju,” tetapi sebaiknya tidak dipercaya begitu saja ketika mengatakan, “Posisi saya sekarang ada 20 meter di depan.”

Perbedaannya terlihat sederhana, tetapi sangat penting.

Dalam model client-server Unreal Engine, server menyimpan authoritative game state dan memproses gameplay, sementara client menerima state yang direplikasi untuk menampilkan dunia kepada pemain.

Dengan model tersebut, client lebih banyak mengirim intent daripada menetapkan hasil akhir.

Server kemudian mengecek apakah tindakan tersebut masuk akal berdasarkan aturan permainan.

Jangan Percaya Posisi yang Dikirim Client

Movement merupakan salah satu area pertama yang perlu mendapat validasi.

Jika client bebas menentukan koordinat akhirnya, speed hack atau teleport hack menjadi jauh lebih mudah dilakukan.

Pendekatan yang lebih aman adalah membiarkan client mengirim input seperti arah gerak, timestamp, atau acceleration. Server kemudian menjalankan simulation untuk menentukan posisi yang dianggap valid.

Unreal Engine bahkan memiliki mekanisme untuk mengecek perbedaan movement antara client dan server serta memicu correction ketika state keduanya berbeda cukup jauh.

Misalnya karakter memiliki kecepatan maksimum 6 meter per detik. Jika client mengklaim berpindah 30 meter hanya dalam satu frame, server dapat menolak perubahan tersebut.

Berikan Toleransi untuk Kondisi Jaringan

Validasi jangan terlalu kaku.

Packet delay, jitter, frame drop, atau physics simulation dapat membuat posisi client dan server sedikit berbeda tanpa adanya cheating.

Gunakan tolerance berdasarkan movement model dan kondisi network.

Jika setiap selisih satu sentimeter dianggap pelanggaran, pemain dengan koneksi kurang stabil akan menerima koreksi terus-menerus.

Tujuan server authority bukan menghukum ketidaksempurnaan jaringan, tetapi membedakan variasi normal dengan state yang secara matematis tidak mungkin.

Jalankan Damage dan Hit Detection di Server

Combat merupakan area lain yang sebaiknya tidak dipercayakan kepada client.

Client boleh mengirim informasi bahwa pemain menekan tombol menembak. Namun client tidak sebaiknya memiliki wewenang akhir untuk mengatakan, “Saya mengenai lawan dan memberikan 100 damage.”

Server perlu mengecek rate of fire, ammunition, cooldown, posisi, target, serta aturan hit detection.

Pada model server-authoritative, gameplay state berada di server dan perubahan penting kemudian direplikasi ke client.

Ini membantu mencegah manipulasi sederhana seperti mengganti damage weapon melalui memory modification atau mengirim fire event jauh lebih cepat daripada fire rate yang diizinkan.

Photon Fusion juga menjelaskan bahwa dedicated server dengan state authority memberikan perlindungan cheating lebih kuat karena server dapat memvalidasi tindakan client.

Dokumentasinya menyebut manipulasi state gameplay seperti speed modification menjadi jauh lebih sulit ketika state ditentukan server.

Jadikan Inventory dan Economy sebagai Server-Owned State

Jangan pernah membiarkan client menjadi sumber kebenaran untuk currency, item langka, reward, atau pembelian.

UI memang boleh langsung menampilkan informasi inventory dari cache lokal, tetapi transaksi akhirnya harus diverifikasi backend.

Contohnya, pemain membuka loot box.

Client mengirim request untuk membuka box tertentu. Server mengecek apakah pemain benar-benar memilikinya, melakukan roll berdasarkan aturan yang berlaku, menghapus box, menambahkan hadiah, lalu menyimpan perubahan.

Jangan membalik prosesnya dengan meminta client menentukan hadiah lalu mengirim hasilnya.

Prinsip yang sama berlaku untuk crafting, trading, XP, quest reward, dan marketplace.

Semakin bernilai sebuah state bagi pemain atau ekonomi game, semakin kuat alasan untuk menjadikannya server authoritative.

Batasi RPC yang Bisa Dipanggil Client

Remote Procedure Call atau RPC memungkinkan client meminta server menjalankan tindakan.

Fitur ini sangat berguna, tetapi juga menciptakan attack surface.

Jangan menganggap RPC aman hanya karena dijalankan di server.

Jika terdapat RPC GiveItem(ItemID, Quantity), attacker mungkin mencoba memanggilnya dengan data yang tidak pernah dikirim UI normal.

Server tetap harus mengecek authorization, ownership, cooldown, range, state karakter, dan parameter lainnya.

Epic juga mengingatkan agar developer berhati-hati terhadap reliable RPC yang terhubung langsung ke input karena pemain dapat memanggilnya sangat sering hingga memenuhi antrean reliable RPC.

Prinsip sederhananya adalah: setiap data dari client dianggap tidak dipercaya sampai divalidasi.

Gunakan Dedicated Server untuk Game Kompetitif

Listen server memang lebih murah karena salah satu pemain bertindak sebagai host.

Namun terdapat masalah keamanan yang jelas.

Host menjalankan authoritative game state sekaligus bermain dalam pertandingan. Jika perangkat host berhasil dimodifikasi, ia memiliki kontrol yang jauh lebih besar dibanding client biasa.

Epic menjelaskan bahwa pada listen server, host sendiri menjadi authoritative server sehingga memperoleh keuntungan dibanding pemain lain yang terhubung. Dedicated server tidak mempunyai pemain lokal dan lebih cocok ketika fairness menjadi prioritas.

Photon memberikan perbandingan serupa: dedicated server memberikan cheat protection lebih kuat, sedangkan client host tetap meninggalkan host sebagai pihak yang memiliki akses terhadap authoritative state.

Untuk casual co-op, kompromi ini mungkin diterima.

Untuk ranked competitive game, dedicated server biasanya lebih masuk akal.

Server Authority Tidak Menghilangkan Semua Cheat

Penting untuk memahami keterbatasannya.

Server authority sangat membantu terhadap manipulasi game state, tetapi tidak otomatis menghentikan aimbot.

Aimbot masih bisa membaca informasi yang tersedia di client dan menghasilkan input mouse yang sangat akurat. Wallhack juga bisa muncul jika server mengirim informasi musuh yang sebenarnya belum seharusnya diketahui pemain.

Photon sendiri menyebut bahwa pada dedicated server yang dirancang baik, kategori seperti aimbot dan informasi visual tetap membutuhkan mitigasi tambahan. Object interest atau relevancy dapat membantu membatasi informasi yang dikirim kepada client.

Karena itu, server authority harus dikombinasikan dengan interest management.

Jangan mengirim data rahasia hanya untuk kemudian berharap client menyembunyikannya.

Seimbangkan Security dengan Responsiveness

Server-authoritative design mempunyai konsekuensi: perjalanan client-server menambah latency.

Jika pemain harus menunggu server merespons sebelum karakternya bergerak, kontrol akan terasa berat.

Solusinya bukan memberikan authority penuh kepada client, tetapi menggunakan prediction.

Client dapat memprediksi movement secara lokal agar respons terasa instan, sementara server tetap melakukan simulation authoritative dan mengoreksi hasil ketika terjadi perbedaan.

Unreal mendukung replication mode untuk server-authoritative Actor yang menggunakan prediction dan correction agar interaksi client terasa lebih responsif meskipun terdapat RTT.

Dengan begitu, security dan responsivitas tidak harus dipilih salah satu.

Client boleh memprediksi tampilan. Server tetap menentukan kebenaran.

Log Pelanggaran sebelum Langsung Memberi Ban

Validasi server juga menghasilkan telemetry anti-cheat yang berharga.

Catat movement speed abnormal, impossible fire rate, inventory request tidak valid, timestamp tidak masuk akal, atau terlalu banyak correction.

Tetapi satu anomali belum tentu cheating.

Bug, packet corruption, desync, atau konfigruasi hardware tertentu juga bisa menghasilkan data aneh.

Gunakan scoring dan pola berulang.

Misalnya satu movement error hanya dicatat. Puluhan movement error ekstrem dalam lima menit dapat meningkatkan suspicion score dan memicu pemeriksaan tambahan.

Pendekatan ini mengurangi false positive sekaligus memberi tim keamanan data nyata untuk pengembagan sistem deteksi berikutnya.

Menggunakan Server Authority membantu memperkecil risiko cheating dengan menjadikan server sebagai sumber kebenaran untuk movement, combat, inventory, dan state penting lainnya.

Validasi setiap request client, gunakan dedicated server untuk mode kompetitif, dan kombinasikan authority dengan prediction agar kontrol tetap responsif.

Mulailah dari fitur yang paling bernilai atau mudah dieksploitasi, lalu perluas validasi berdasarkan telemetry nyata.