Agung Toto Wibowo Armitage, Grenville, Claypool, Mark, and Branch, Philip "Networking and Online Games : Understanding and Engineering Multiplayer internet Games", Jhon Wiley & Sons, 2006
Pendahuluan Tanpa prediksi, state masih memungkinkan berbeda pada tiap client (butuh waktu menerima [setengah RTT] world state dari server) Jika ada client yang sangat jauh dari server dibandingkan dengan client yang dekat dengan server (RTT1> RTT2), maka akan tidak adil dari sisi gameplay Contoh : Game membunuh monster, jika berhasil akan ditambahkan koin yang dapat digunakan untuk membangun fasilitas. Perbedaan jarak (dalam terminologi RTT) mengakibatkan ketidak adilan gameplay.
Time Manipulation Meskipun kebanyakan game dinyatakan real time, waktu dapat dimanipulasi untuk mengatasi perbedaan latency. Dua teknik yang dapat melakukannya : Time Delay : untuk mengatasi latency lama Time Wrap : untuk mengakomodasi latency yang singkat
Time Delay untuk mengatasi perbedaan delay pemrosesan / pengiriman perintah user untuk meratakan latency. Daripada memproses perintah client langsung, server dapat menunda perintah ini beberapa waktu Sehingga membolehkan client pada jarak yang jauh untuk merespon game state.
Time Wrap Mekanisme manipulasi waktu yang memungkinkan server untuk me-rollback (time wrap) event pada game ketika sebuah perintah client diinputkan Contoh kasus : Pada T0, seorang pemain menembak lawan Message datang di server pada T2 Dan lawan telah bergerak pada T1 Menggunakan time wrap, server melakukan rollback event yang telah diproses mulai client menggenerate input. (T0 pada kasus di atas)
Time Wrap Algoritma Terima packet dari client Ekstak informasi (user input) Elapsed time = current time – latency to client Rollback semua event dalam reverse order sampai current time – elapsed time Eksekusi perintah user Ulangi semua event untuk mengupdate efek dari client Ulangi game loop.
Time Wrap FPS Half-Life 2 mentest time wrap dengan tambahan lag pada client.
Data Compression [1] Lossless Compression : data dapat dikompress dengan berbagai algoritma yang umum. Kompresi harus lossless, dan dapat dikembalikan saat di uncompress. Beberapa yang sering digunakan : LZW Delta Comression Daripada mengirimkan semua informasi state, memungkinkan hanya mengirim perubahan/update (delta) dari state sebelumnya. Efeknya, membutuhkan pengiriman data yang reliable (contoh TCP) Efektif jika state game world besar, namun perubahan yang ada kecil.
Data Compression [2] Interest Management Daripada mengirimkan data ke semua client, dapat dikirimkan data yang menjadi interest bagi client untuk dikirim. Area dari interest client disebut aura dimana interaksi antara client dan unit game lain terjadi.
Data Compression [3] Peer-ToPeer Client mengirimkan data secara langsung dapat mengurangi bitrate server. Digunakan untuk pengiriman berbagai aspek game seperti voice, avatar, dlsb. Update Aggregation Mengirimkan update pada periode tertentu dapat mengurangi network overhead Contoh : daripada mengirimkan pergerakan A pada t1, dan B pada t2 ke player C dua kali, server dapat mengirimkannya sekali, sehingga mengurangi waktu packing, dan pengiriman. Update agregation jg dilakukan dengan mengurangi jml pesan yang dikirimkan. Contoh pemain menggerakkan avatar wajah ke kiri, kekanan, beberapa kali, maka server dapat mengagregat dengan mengirimkan pergerakan terakhir yang terlihat.
Visual Trick Tidak berhubungan dengan network, tapi dapat mengatasi latency Contoh : animasi pada kapal atau pemain untuk bersiap-siap melakukan pergerakan. Bisa “mengulur” waktu beberapa ratus milisecond, bahkan kebutuhan waktu RTT. Contoh lain : efek suara dan animasi asap yang dilakukan seketika setelah pistol ditembakkan. Meski efek (player/NPC mati) sesungguhnya baru terasa beberapa saat, namun pemain akan merasa game cukup responsif.
Game Cheat Klasifikasi dan penamaan metode cheat Tidak ada penamaan khusus untuk cheat (sampai buku dibuat) Namun cheat dapat dideskripsikan dari atribut berikut : Apa yang diexplioted? (server, client) Type dari kegagalan yang terlibat? Siapa yang melakukan cheat? Setiap cheat memberikan keuntungan dan resiko yang berbeda dari cheat yang dipergunakan. Resiko muncul ketika cheat menghasilkan perubahan pada gameplay yang disadari oleh pemain lain, atau automated cheat detection Resiko bisa berupa sangsi
Server Side Cheat Dua kemungkinan utama Server mengimplementasikan gameplay rule yang incomplete dalam memprediksi semua kemungkinan aksi player Administrator game server mungkin tidak dapat dipercaya (takluk pada pengaruh eksternal) Contoh : escape cheat, jika tim server terlihat akan kalah, maka server administrator dapat keluar dari game Escape cheat dapat terjadi pada game dimana server melupakan state player saat keluar. Ditangani dengan activity log, atau memaksa player harus tertampil hingga akhir permainan. Skin cheat : merubah tim untuk mendapat keuntungan. Contoh counter strike diversi awal.
Client Side Cheat Kebanyakan game berjalan pada client, termasuk rendering dlsb. Cheat bisa dilakukan dengan membuat bot yang menjalankan secara otomatis permainan pada saat kita istirahat. Contoh pergerakan mouse otomatis. Aimbot pada FPS, ketika player melakukan perintah ‘tembak’, aimbot mengambil informasi lokasi penembak. Dapat dimanfaatkan untuk menembak balik. Mengoverride pilihan avatar skin, gun, dlsb dari pemain lain Menampilkan taktik ke layar tentang pemain lain (contoh kesehatan, senjata, jml pasukan) yang seharusnya belum boleh terlihat Mengurangi elemen game yang memungkinkan knowledge dari map/area (contoh fog, snow/rain, wall, box dlsb)
Client Side Cheat Wallhack : cheat yang memungkinkan melihat pada dinding buram. Dilakukan dengan memodifikasi client code secara langsung, atau baju dari pemain.
Network Layer Cheat Pada jaringan, tidak ada kontrol terhadap pemakaian resource (baik berapa yang diterima atau dikirimkan) Mekanisme authentication juga tidak ada pada IP layer. Dengan kondisi ini, memungkinkan Distributed Denial of Service (DDoS)