Terbaru & Terpercaya
Gaming

Arsitektur Game Engine Modern: Paradigma Data-Oriented Design dan ECS

Mengapa industri game meninggalkan pola pemrograman berorientasi objek demi memaksimalkan utilisasi CPU cache dan thread paralel.

Redaksi GTechUpdate
Redaksi GTechUpdate
• • 2 menit baca
Bagikan:
GTechUpdate Tech Banner
Foto: GTechUpdate Tech Banner

Game modern dengan puluhan ribu entitas dinamis membutuhkan efisiensi yang tidak lagi dapat dicapai pola pemrograman berorientasi objek klasik. Entity Component System hadir sebagai jawaban atas batasan yang sebenarnya bukan batasan bahasa, melainkan batasan perangkat keras.

Persoalannya adalah cache, bukan CPU

Jarak antara kecepatan prosesor dan kecepatan memori utama telah melebar selama puluhan tahun. Mengambil data dari RAM membutuhkan ratusan siklus; dari cache L1 hanya beberapa siklus. Prosesor modern menghabiskan sebagian besar waktunya menunggu data, bukan menghitung.

Pola berorientasi objek menempatkan setiap entitas sebagai objek terpisah di heap, masing-masing berisi semua datanya. Ketika sistem fisika hanya membutuhkan posisi dan kecepatan, prosesor tetap menarik seluruh isi objek ke cache — termasuk tekstur, nama, dan status yang tidak relevan. Sebagian besar isi cache terbuang.

Menyusun data menurut penggunaannya

ECS memisahkan data dari perilaku. Komponen sejenis disimpan berdampingan dalam larik kontinu: seluruh posisi di satu larik, seluruh kecepatan di larik lain. Sistem yang memproses pergerakan membaca dua larik itu secara berurutan.

Setiap baris cache yang ditarik kini terisi penuh oleh data yang memang akan dipakai. Prediktor prefetch pada prosesor mengenali pola akses berurutan dan memuat data berikutnya sebelum diminta. Selisih performanya sering berlipat, bukan sekadar beberapa persen.

Paralelisme yang mengikuti dengan sendirinya

Manfaat yang jarang disebut di awal: pemisahan ini membuat paralelisme jauh lebih aman. Karena setiap sistem menyatakan komponen mana yang dibaca dan mana yang ditulis, penjadwal dapat menyimpulkan sistem mana yang tidak saling bersinggungan dan menjalankannya bersamaan tanpa kunci.

Tata letak yang seragam juga membuka jalan bagi instruksi SIMD, yang memproses beberapa entitas dalam satu instruksi. Keduanya muncul sebagai konsekuensi dari penyusunan data, bukan sebagai fitur yang ditambahkan kemudian.

Biaya yang jujur

ECS bukan tanpa kerugian. Kode menjadi lebih sulit dibaca bagi pendatang baru: logika satu entitas tersebar di banyak sistem, dan penelusuran galat menjadi lebih berbelit. Operasi yang menyentuh satu entitas secara acak justru lebih lambat daripada pada pola berorientasi objek.

Karena itu ECS paling bernilai ketika entitas berjumlah sangat banyak dan diproses secara seragam. Untuk permainan dengan puluhan entitas, kerumitannya tidak terbayar. Perancangan memori yang ramah perangkat keras memberi performa luar biasa — pada persoalan yang memang berbentuk demikian.

Redaksi GTechUpdate

Redaksi GTechUpdate

Kontributor Redaksi

Tim jurnalisme teknologi GTechUpdate yang meliput inovasi perangkat keras, kecerdasan buatan, dan tren komputasi global.

Artikel Terkait

Lihat Semua →