Proses Mencapai Server VALORANT dengan Performa Terbaik Sejak Peluncuran

Simak bagaimana tim Dev mengubah bencana menjadi server dengan performa terbaik sejak diluncurkan.

Menghadirkan server 128-tick telah menjadi prioritas VALORANT sejak lama sebelum diluncurkan. Tujuan kami adalah selalu memberikan pengalaman kompetitif kelas dunia dengan server 128-tick untuk semua pemain. Untuk mengetahui lebih jauh tentang cara kami mencapai tujuan ini sebelum peluncuran, baca artikel Server 128-Tick VALORANT.

Mempertahankan performa server adalah perjuangan yang selalu ada. Pengenalan fitur-fitur baru dari waktu ke waktu juga berarti kami harus tetap waspada dalam memenuhi anggaran performa kami untuk terus menyediakan server 128-tick. Seiring waktu, penurunan kecil akan menggunung dan penurunan besar yang muncul sesekali memerlukan perhatian seketika.

Pada Agustus 2022, kami mengalami penurunan performa server terbesar sejak peluncuran. Masalah ini memengaruhi game VALORANT dengan lebih dari 10 pemain standar (misalnya pertandingan kustom dan pertandingan esports). Memecahkan masalah ini membutuhkan upaya dari sekelompok kecil engineer, produser, pimpinan, dan tim esports di lapangan di İstanbul tepat sebelum salah satu event kompetitif terbesar kami tahun ini.

Upaya investigasi kami saat memperbaiki penurunan ini mengungkap beberapa peluang untuk perbaikan signifikan pada frame time server, yang menghasilkan peningkatan besar pada performa. Sejak patch 5.07, para pemain merasakan server 128-tick yang paling konsisten sejak VALORANT diluncurkan pada Juni 2020.

Namaku Aaron Cheney, dan aku engineer di Tim Performance VALORANT. Berikut adalah gambaran umum isi artikel ini:

  • Penjelasan bagaimana Tim Performance mendeteksi penurunan
  • Pembahasan penurunan besar pada performa yang ditemukan tepat menjelang Champions 2022
  • Ulasan proses menelaah (triase), wawasan tentang bagaimana tim kami menangani masalah yang muncul, dan mengambil pelajaran dari insiden ini

Pertama, akan kubahas bagaimana kami mendeteksi penurunan performa dan menjelaskan beberapa latar belakang penting yang diperlukan untuk memahami tingkat keparahan penurunan tersebut.

Bagaimana Kami Mendeteksi Penurunan Performa?

Penurunan performa merupakan realitas dalam pengembangan game. Game adalah sistem yang sangat kompleks dengan banyak bagian yang bergerak, yang masing-masing berkontribusi pada performa secara keseluruhan. Kerumitan ini makin bertambah seiring dengan penambahan fitur dan sistem dari waktu ke waktu. Sangatlah penting untuk mendeteksi secara akurat ketika penurunan terjadi dan mengaitkannya dengan akar masalah tertentu.

VALORANT memiliki Tim Performance khusus yang bertanggung jawab untuk hal ini. Tim kami bertugas memantau, memelihara, serta meningkatkan performa klien serta server di berbagai perangkat keras. Kami memanfaatkan beberapa alat dan proses untuk lebih dini mendeteksi penurunan serta memperbaikinya sebelum dikirim ke pemain.

Target Performa Server

Mempertahankan server 128-tick berarti setiap frame server harus lengkap dalam waktu kurang dari 7,8125 milidetik (ms), tetapi jika kami melakukannya, satu game akan menghabiskan seluruh core CPU. Demi memenuhi persyaratan 128-tick yang ketat dan target operasi kami, server VALORANT dioptimalkan agar bisa memuat 3 frame ke dalam ~7,8 ms. Artinya, setiap frame server rata-rata harus lebih pendek dari 2,6 ms. Pada kenyataannya, target performa kami untuk frame time server adalah 2,34 ms. Target performa ini memenuhi dua tujuan penting:

  1. Memberikan headroom yang diperlukan. Memiliki ruang ekstra dalam target performa kami membantu menyerap frame yang lebih panjang tanpa harus menggunakan 128-tick. Hal ini membuat server kami tangguh dalam berbagai situasi dan memberikan ruang untuk OS, penjadwalan, serta perangkat lunak lain yang berjalan di server.
  2. Membantu kami memastikan VALORANT tetap layak secara finansial. Infrastruktur server itu mahal. Meskipun membuat setiap game VALORANT berjalan pada satu perangkat keras itu sangat keren, itu bukanlah model bisnis yang berkelanjutan.

AskVal_Feb22_Champions_Article_Graph_3_ID_Mar30.jpg

    Mengukur Masa Kini dan Memprediksi Masa Depan

    Tim Performance menggunakan dua sumber data utama untuk mendeteksi penurunan:

    1. Data Prarilis – Ini adalah data yang dihasilkan dari beberapa sumber, termasuk: playtest internal, uji coba otomatis, dan PBE.
    2. Data Langsung – Ini adalah data yang dihasilkan dari pemain di lingkungan live kami di seluruh dunia.

    Data Prarilis memungkinkan kami memprediksi masa depan dengan menganalisis konten dan fitur yang belum dirilis. Kumpulan data ini jauh lebih kecil daripada data langsung, yang berarti sering kali sulit untuk menarik kesimpulan karena noise dan varians; tren tidak muncul dengan jelas dengan sedikit sampel. Kasus kecil juga bisa tidak teruji karena kami tidak bisa menguji semuanya secara menyeluruh, segiat apa pun kami mencoba.

    Di sisi lain, Data Langsung memungkinkan kami untuk memahami pengalaman pemain saat ini dengan mengukur secara tepat apa yang dilihat pemain dalam game. Kumpulan data ini jauh lebih besar daripada data internal (menghasilkan miliaran catatan), yang bisa menyulitkan pemrosesan. Kami mengumpulkan data ini untuk memahaminya.

    Secara umum, Data Prarilis mendorong kami untuk proaktif dengan konten yang belum dirilis, sementara Data Langsung memungkinkan kami untuk reaktif terhadap kondisi yang sedang terjadi. Saat digunakan bersama-sama, kedua kumpulan data ini menangkap sebagian besar masalah.

    Game Umum VALORANT

    Sebagian besar pemain VALORANT berinteraksi dengan game melalui antrean Unrated dan Competitive. Kedua antrean itu mewakili mode game yang sama dengan tepat 10 pemain, hanya saja tantangannya berbeda. Meskipun ada banyak cara lain untuk memainkan VALORANT (Replication, Spike Rush, Deathmatch, dll.), kami menghabiskan banyak sumber daya untuk memastikan Mode Game Spike menjadi pengalaman terbaik.

    Walau sebagian besar game VALORANT memiliki tepat 10 pemain, beberapa situasi khusus (dan penting) muncul dengan kebutuhan lebih dari 10 pemain.

    Game Non-Standar VALORANT

    Sebanyak 22 klien terhubung ke Mode Game Spike selama siaran esports. Ini adalah pertandingan kustom yang mendukung pengalaman menonton. Dalam game-game ini, biasanya akan ada perincian sebagai berikut:

    • 10 slot didedikasikan untuk pemain (5 untuk setiap tim)
    • 2 slot didedikasikan untuk pelatih (1 untuk setiap tim)
    • 10 slot didedikasikan untuk pengamat yang dikendalikan oleh tim siaran kami. Slot tambahan ini memungkinkan pengalaman menonton bagi penggemar yang mendukung dari rumah atau di arena!

    Game dengan 22 klien ini jauh di luar game umum VALORANT. Setiap klien yang terhubung dalam game harus dipertimbangkan oleh server guna memastikan setiap klien menerima informasi yang diperlukan dari server untuk menampilkan game di layar. Hal ini biasanya akan menimbulkan masalah di lingkungan live. Namun, untuk game esports, kami menggunakan perangkat keras lokal khusus untuk menjaga integritas gameplay bagi para atlet.

    Target Performa untuk Game Non-Standar VALORANT

    Masih ingat dengan target performa server tadi? Target kami sebesar 2,34 ms per frame server ditujukan untuk game umum VALORANT dengan jumlah pemain tepat 10 orang. Untuk situasi dengan lebih dari 10 pemain terhubung, ekspektasi kami adalah performa akan meningkat seiring dengan jumlah pemain tambahan.

    Contohnya, dengan 22 klien, frame time rata-rata kurang lebih akan meningkat dengan faktor 2,2, dari 2,34 ms menjadi 5,2 ms. Itu masih jauh di bawah frame time 7,8 ms yang diperlukan untuk mempertahankan server 128-tick.

    Berdasarkan pengalaman kami dengan game non-standar VALORANT dan berdasarkan pemahaman mendalam kami tentang performa server VALORANT, ini merupakan cara yang akurat untuk mengekstrapolasi data performa dari game standar untuk memahami game non-standar.

    Namun, apa yang terjadi jika ada yang berubah? Apa yang terjadi jika performa server tidak lagi meningkat seiring dengan jumlah klien yang terhubung?

    Penurunan

    Mari kita mundur ke Agustus 2022. Tanda pertama masalah muncul selama playtest 22 klien. Para pemain dalam playtest memperhatikan fluktuasi tick server dan merasakan adanya inkonsistensi secara umum selama gameplay. Rekaman video dari game tersebut menegaskan bahwa ada yang tidak beres. Kami cukup beruntung bisa mendeteksi masalah ini karena pada saat itu playtest 22 klien tidak terstandardisasi. Di tengah-tengah perombakan tim dan persiapan untuk Champions 2022, salah satu developer VALORANT teringat untuk meminta playtest 22 klien dari vendor penguji kami.

    Meskipun belum waktunya untuk membunyikan alarm, kami langsung berupaya memvalidasi isu tersebut, segera menelaah masalah, dan bekerja untuk membuat perbaikan.

    Memvalidasi Isu

    Satu titik data tidak menunjukkan tren. Kami mulai dengan memproses telemetri dari lingkungan live untuk memahami sepenuhnya tingkat keparahan serta luas masalah, memisahkan game berdasarkan jumlah klien yang terlibat mulai dari 10 hingga 22 klien. Yang kami temukan sangat mengejutkan.

    Meskipun kami tidak mengetahui penyebab pasti dari masalah ini, grafik menunjukkan hubungan yang mengkhawatirkan antara jumlah klien yang terhubung dan performa server. Masalah ini meningkat secara beriringan dengan jumlah pemain.

    Data ini memvalidasi bahwa kami memiliki masalah besar, khususnya dengan Champions 2022 yang akan segera diadakan pada patch 5.04. Kami membunyikan alarm dan segera mulai menelaah masalah.

    AskVal_Feb22_Champions_Article_Graph_2_ID.jpg

    (Bagan ini menunjukkan frame time server berdasarkan patch. Tiap garis mewakili jumlah klien, mulai dari game standar 10 klien hingga maksimum 22 klien. Seperti yang diperkirakan, performa makin memburuk dengan tiap klien yang terhubung, tetapi lonjakan dengan patch 5.03 berarti performa kami menurun secara non-linear).

    Menelaah Penurunan

    Menelaah masalah (atau proses triase) pada umumnya berarti memitigasi dampak masalah tanpa sepenuhnya memahami akar masalah. Teknik ini digunakan dalam dunia kedokteran untuk menilai situasi dan "menghentikan perdarahan", dan digunakan di seluruh Riot untuk segera merespons masalah yang muncul.

    Dua upaya dilakukan secara bersamaan untuk menelaah masalah tersebut.

    Menyusun Rencana Cadangan

    Pertama, pimpinan VALORANT bekerja sama dengan mitra kami di İstanbul untuk menyusun rencana cadangan. Hal ini dilakukan untuk menentukan apa yang akan terjadi jika kami tidak bisa memperbaiki masalah ini sebelum dimulainya Champions 2022.

    Karena kami mengerti masalah meningkat seiring dengan jumlah klien yang terhubung, kami fokus untuk menentukan jumlah minimum pengamat yang diperlukan untuk memberikan pengalaman menonton esports tanpa gangguan. Menjalankan 22 klien tidak mungkin dilakukan … jadi, berapa banyak klien yang secara teoritis bisa dijalankan dalam kondisi seperti ini? Dari kerja sama dengan teman-teman kami di esports, kami menentukan bahwa 15 klien yang terhubung akan memberikan server 128-tick yang stabil sekaligus memberi esports total 5 slot pengamat untuk menciptakan pengalaman siaran. Hal ini bisa dilakukan oleh headroom yang diterapkan di frame time server standar kami.

    Menetapkan Akar Penyebab

    Kedua, developer VALORANT melanjutkan investigasi untuk lebih memahami masalah dan menemukan akar penyebab penurunan. Ketika hal sebesar ini muncul, kecil kemungkinannya untuk dikaitkan dengan beberapa sistem.

    Kami pikir kami mungkin beruntung karena bisa segera menemukan akar penyebab masalah ini, dan menerapkan perbaikan sebelum dimulainya Champions 2022. Sayangnya, itu tak terjadi.

    Memperbaiki Penurunan

    Penurunan pertama kali diidentifikasi pada 25 Agustus 2022, dan diperbaiki satu minggu kemudian. Selama 7 hari, banyak engineer VALORANT yang terlibat dalam masalah ini untuk mengeksplorasi berbagai kemungkinan solusi.

    Pada hari pertama investigasi, kami menentukan bagian mana dari basis kode yang menyebabkan penurunan tersebut: Replikasi (bukan mode Replication ya!) Replikasi adalah cara Unreal memastikan konsistensi antara server dan klien dengan menyinkronkan properti pada Actor dan Component. Kamu bisa membaca lebih lanjut tentang sistem Replikasi Unreal di sini.

    Prioritas awal kami adalah menganalisis perubahan antara 5.02 dan 5.03 untuk menemukan bukti tentang apa yang mungkin telah berubah pada Replikasi. Hal ini terbukti sulit karena kami baru saja upgrade ke Unreal Engine 4.26, yang berarti beberapa bagian inti dari engine sudah dimodifikasi. (Untuk membaca selengkapnya tentang bagaimana VALORANT memperbarui Unreal Engine, cek thread Twitter ini oleh Tech Lead VALORANT, Marcus Reid.)

    Menginvestigasi Replikasi itu tak mudah. Itu bukanlah sistem yang membutuhkan pengamatan mendalam dari developer VALORANT karena kami sudah menerapkan praktik terbaik selama bertahun-tahun. Itu juga bukan sistem yang dibuat oleh para engineer Riot; kami sudah melakukan modifikasi pada engine dasar untuk memenuhi kebutuhan kami, tetapi keahlian yang mendalam tentang masalah ini jarang terjadi.

    Selanjutnya, kami secara sistematis menguraikan berbagai bagian game untuk mengukur perbedaan antara 5.02 dan 5.03 dengan tujuan mempersempit akar penyebab masalahnya. Kami memanfaatkan alat profil dari Unreal dan alat internal di Riot untuk membandingkan karakteristik performa antara kedua patch tersebut. Hal ini pada akhirnya membawa kami pada kesimpulan bahwa Karakter, Senjata, dan Ability bereplikasi secara signifikan lebih sering di 5.03 daripada di 5.02.

    Ada dua pendekatan yang dipertimbangkan selama periode ini:

    1. Menemukan penurunan dan memperbaikinya. Ini adalah skenario ideal yang ingin kami capai.
    2. Menemukan peluang lain untuk meningkatkan performa. Jika kami bisa menemukan peningkatan lain (cukup untuk mendapatkan kembali frame time yang hilang), kami masih bisa mengembalikan performa meskipun tidak bisa menemukan dan memperbaiki masalah aslinya.

    Beberapa kelompok engineer mengikuti alur investigasi untuk menguji potensi perbaikan dan peningkatan. Sepanjang proses, banyak engineer memperoleh pemahaman dan keahlian dalam Replikasi. Beberapa peluang untuk meningkatkan performa ditemukan selama periode ini, yang dianggap terlalu berisiko untuk diterapkan, tetapi kemudian dicatat untuk dikerjakan di masa depan.

    Pada 1 September 2022, kami menemukan masalahnya: satu baris kode dari upgrade engine UE 4.26 menyebabkan Replikasi terjadi lebih sering dalam kondisi tertentu yang sering terjadi di VALORANT. Hal ini mengakibatkan penurunan performa yang makin memburuk karena makin banyak klien yang terhubung ke server. Meskipun masalahnya terlihat pada game standar 10 klien, game ini tidak bisa dimainkan dengan 22 klien.

    Penurunannya berhasil diidentifikasi; perbaikannya tidak berisiko; dan kami sangat percaya diri. Ini adalah hal paling menggembirakan. Kami tidak langsung bersukaria, tetapi ada perubahan yang sangat memuaskan dalam kode kami.

    Setelah Penurunan

    Begitu sumber penurunan teridentifikasi dan diperbaiki, kami melakukan uji coba ekstensif untuk memastikan bahwa performa kembali sesuai dengan harapan dan untuk memastikan tidak ada bug yang timbul dari perubahan tersebut.

    Meluncurkan Perbaikan

    Meskipun perbaikannya teridentifikasi pada 1 September 2022, perubahan tersebut baru diterapkan di lingkungan esports pada 8 September 2022 setelah Group Stage. Hal ini dilakukan untuk mengurangi risiko dengan menyediakan waktu tambahan untuk uji coba dan validasi, serta untuk meminimalkan gangguan bagi peserta di İstanbul.

    Lingkungan live kami sudah menerapkan perbaikan pada patch 5.05, yang menghasilkan peningkatan signifikan.

    Setelah Champions 2022

    Keseruan tidak berhenti pada patch 5.05. Selama seminggu menginvestigasi sistem Replikasi, banyak peluang performa teridentifikasi dan dijadwalkan untuk pengembangan lebih lanjut. Pada saat itu, peluang-peluang tersebut terlalu berisiko untuk diterapkan karena tidak mengatasi akar penyebabnya. Setelah memperbaiki penurunan awal, kami memanfaatkan keahlian yang baru saja diperoleh terkait Replikasi untuk mengatasi beberapa hal yang kami rasa akan lebih meningkatkan performa server.

    Upaya ini menghasilkan peningkatan performa yang signifikan secara menyeluruh serta 15% pengurangan di seluruh frame time server dibandingkan dengan angka sebelum penurunan. Perubahan ini juga mengurangi varians di seluruh wilayah, sehingga meningkatkan stabilitas frame time server.

    Sejak patch 5.07, 99,3+% frame server telah memenuhi syarat 128-tick yang ketat, yang berarti para pemain menikmati server yang paling stabil dan konsisten sejak VALORANT diluncurkan.

    AskVal_Feb22_Champions_Article_Graph_1_ID.jpg

    (Bagan ini menunjukkan frame time server berdasarkan patch. Tiap garis mewakili jumlah klien, mulai dari game standar 10 klien hingga maksimum 22 klien. Setelah penurunan besar pada patch 5.03 dan 5.04, kami memperbaiki penurunan tersebut dan kembali ke nilai normal pada patch 5.05. Peningkatan signifikan lebih lanjut dirilis dengan patch 5.07, yang menunjukkan peningkatan performa server sebesar 15% dari angka sebelum penurunan.)

    Pelajaran yang Diambil

    Masalah performa ini membutuhkan pasukan kecil untuk menyelesaikannya: selusin engineer, mitra esports, vendor penguji, produser, pimpinan tim, dan kemurahan hati tim partner yang memberikan saran dan bimbingan kepada kami. Kami belajar banyak dari kejadian ini dan menemukan celah dalam proses yang ingin kami atasi.

    • Memantau Game Non-Standar – Sebagian besar perhatian fokus ke pengalaman khas VALORANT dalam Mode Game Bomb klasik 10 pemain. Data kami tidak menunjukkan perincian berdasarkan jumlah pemain yang terhubung, sehingga skala penurunan tidak diketahui sampai grafik baru dibuat. Sejak saat itu, kami membangun proses baru untuk mengecek dan memahami karakteristik performa untuk game non-standar VALORANT dengan lebih dari 10 klien.
    • Meningkatkan Cakupan Pengujian untuk Game Non-Standar – Meskipun Mode Game Bomb standar 10 pemain akan tetap menjadi prioritas utama, kami ingin membangun proses dan prosedur pengujian baru untuk memahami performa server di lingkungan dengan 22 klien. Ukuran sampel untuk game 22 klien sangat kecil dibandingkan dengan yang lainnya, jadi mengumpulkan informasi ini berarti menjalankan playtest 22 klien secara berkala. Kini, standarnya adalah menjalankan playtest 22 klien pada setiap rilis, bukan hanya sebelum turnamen besar. Kami mungkin juga akan membutuhkan prosedur pengujian lain yang lebih canggih.
    • Mendorong Pengembangan Subject Matter Expert (SME) – Meskipun butuh waktu yang cukup panjang, menciptakan SME dalam tim bisa membantu mengisi kesenjangan pengetahuan dan secara umum meningkatkan kemampuan setiap orang. Beberapa engineer memperoleh keahlian terkait Replikasi dalam proses memperbaiki penurunan, yang ternyata menjadi investasi sumber daya yang luar biasa.
    • Meminimalkan Risiko Turnamen – Memainkan Champions 2022 dengan patch baru–terutama mengingat kami baru saja selesai mengintegrasikan versi baru Unreal Engine–membuat segalanya berisiko. Meskipun kami ingin memastikan perubahan gameplay (seperti keseimbangan, karakter, dll.) masuk ke dalam turnamen besar, turnamen di masa mendatang kemungkinan besar tidak akan dimainkan secara terburu-buru. Setidaknya, kami akan memeriksa ulang risiko dalam skenario yang tidak bisa dihindari.

    Kami akan terus melakukan peningkatan seperti ini agar pengalaman menjadi pemain VALORANT menjadi lebih baik. Selamat menikmati server 128-tick, dan happy fragging!