Masalah AC Unity versi PC Kemungkinan Ada di Draw Call dan API
Game besutan Ubisoft yang belum lama ini keluar yakni Assasin’s Creed Unity (AC Unity), menuai banyak masalah. Mulai dari frame rate yang inkonsisten di console, hingga ke masalah texture popping/missing serta performa buruk pada versi PC. Beberapa waktu lalu bahkan Ubisoft pernah mengeluarkan sebuah statemen yang menyebutkan bahwa game AC Unity versi PC mengalami masalah di beberapa kombinasi hardware (CPU/GPU) milik AMD. Statemen pemberitahuan tersebut langsung menyebabkan banyak kontroversi di dunia maya, mulai dari pemberitaan bahwa Ubisoft ‘menuduh’ AMD sebagai biang keladi masalah performa di AC Unity PC, hingga beberapa debat kusir antar ‘fanboy’ hardware seputar penggunaan VGA NVIDIA vs AMD untuk AC Unity. Uniknya, banyak juga pengguna PC yang melaporkan bahwa mereka juga mengalami texture glitch dan ‘stutter’, meskipun mereka menggunakan GPU NVIDIA.
Sebuah media luar bernama WCCFTech, mencari tahu masalah ini ke beberapa pihak dan mendapat respon berikut:
“The game (in its current state) is issuing approximately 50,000 draw calls on the DirectX 11 API. Problem is, DX11 is only equipped to handle ~10,000 peak draw calls. What happens after that is a severe bottleneck with most draw calls culled or incorrectly rendered, resulting in texture/NPCs popping all over the place. On the other hand, consoles have to-the-metal access and almost non-existent API Overhead but significantly underpowered hardware which is not able to cope with the stress of the multitude of polygons. Simply put, its a very very bad port for the PC Platform and an unoptimized (some would even go as far as saying, unfinished) title on the consoles.”
Singkatnya, sumber tersebut mengatakan bahwa game AC Unity versi PC menggunakan ‘draw call’ yang sangat banyak dari yang bisa ditangani oleh API DirectX11 yang digunakan(mungkin karena banyaknya objek / NPC yang dirender pada sebuah scene), ini lalu menyebabkan banyaknya objek/texture yang tidak di-render dengan benar.
Banyaknya Objek pada Game dan API yang Tidak Efisien: Penyebab Bottleneck?
Secara umum, ‘draw call’ adalah sebuah perintah yang diberikan API(seperti directX) kepada GPU untuk ‘menggambar’ sesuatu, dan proses ‘pemberian perintah’ ini dilakukan oleh CPU. Jumlah dari draw call ini nantinya akan juga meningkat seiring dengan banyaknya objek yang harus di-render di layar. Jika jumlah dari draw call ini terlalu banyak, umumnya banyak gamer akan mengalami penurunan performa, yang lalu dihubungkan dengan ‘CPU Bottleneck’ (Contoh nyata: Mainkan StarCraft 2 dengan jumlah unit pada gambar diatas 100-150 unit, akan ada beberapa konfigurasi sistem yang akan ‘menyerah’ menghadapi jumlah unit yang banyak tersebut, lalu memberikan framerate sangat rendah).
Walaupun demikian, masalah performa akibat jumlah draw call yang banyak tidak hanya terjadi karena ‘bottleneck’ pada CPU, namun juga dari keterbatasan API yang digunakan untuk menangani komunikasi antara banyak komponen dalam sebuah rendering pipeline, misalnya saja CPU, Driver GPU, dan GPU itu sendiri. (Keterbatasan dari API DirectX untuk menangani draw call ini yang adalah salah satu alasan AMD bekerjasama dengan berbagai developer untuk menciptakan API Mantle – baca informasi selengkapnya pada Artikel AMD Mantle kami di sini).
Jadi, ada kemungkinan bahwa usaha para developer AC Unity untuk menciptakan sebuah kota yang ‘nyata’ dengan banyak objek/NPC di dalamnya menjadi bumerang bagi mereka sendiri, karena API yang mereka gunakan(DirectX 11) belum cukup optimal untuk menanganinya. Semoga saja dalam beberapa waktu ke depan, masalah performa pada AC Unity versi PC ini bisa diatasi dengan rilisnya game patch, maupun update driver terbaru. Semoga.