Sistem Komponen Entitas
Apa itu Entitas-Komponen-Sistem?
Entity-Component–System (ECS) adalah pola arsitektur. Pola ini banyak digunakan dalam pengembangan aplikasi game. ECS mengikuti prinsip komposisi daripada prinsip pewarisan, yang menawarkan fleksibilitas lebih baik dan membantu Anda mengidentifikasi entitas di mana semua objek dalam adegan game dianggap sebagai entitas.
Pemrograman ECS adalah metode penulisan kode yang memberikan kinerja tinggi secara default.
Sistem ini terdiri dari tiga istilah.
- Kesatuan
- Komponen
- System
Mari kita pelajari konsep ini secara detail:
Dalam tutorial Sistem Komponen Entitas ini, Anda akan mempelajari:
- Apa itu Entitas-Komponen-Sistem?
- Apa itu Entitas?
- Apa itu Komponen?
- Apa Sistemnya?
- Komposisi
- Keuntungan dari ECS
- Kerugian menggunakan ECS
- Contoh Sistem Komponen Entitas
- Aliran data di ECS:
Apa itu Entitas?
Entitas adalah objek berbeda yang mewakili aktor dalam ruang simulasi. Itu tidak memiliki data atau perilaku aktual. Komponen ini memberikan datanya kepada suatu entitas. Biasanya berupa penyangga atau kamus.
Misalnya, jika kita melakukan simulasi dunia game Minecraft, semua 'benda' yang terlihat dan nyata di dunia game dihitung dalam entitas.
Apa itu Komponen?
Komponen adalah perilaku tunggal yang dianggap berasal dari suatu entitas. Nama suatu elemen idealnya mengkomunikasikan perilaku apa yang akan ditunjukkan oleh entitas tersebut. Namun, komponen itu sendiri tidak memiliki perilaku. Mereka adalah modul yang dapat digunakan kembali dan dilampirkan ke entitas. Komponen menyediakan tampilan, perilaku, dan fungsionalitas.
Semua logika diimplementasikan menggunakan komponen yang membantu Anda mendefinisikan berbagai jenis objek dengan mencampur dan mengonfigurasi komponen.
Apa Sistemnya?
Suatu sistem akan mengulangi banyak komponen untuk bekerja pada tingkat rendah
fungsi seperti rendering grafik, melakukan fisika
perhitungan atau pencarian jalan. Ia menawarkan cakupan global, manajemen, dan layanan untuk kelas komponen.
Namun, sistem bukanlah sebuah pilihan, namun kita dapat menggunakannya untuk memisahkan logika dan data. Ini juga membantu Anda menangani komponen logis, bertindak sebagai wadah data.
contoh
- Gravitasi (Kecepatan) – Ini membantu Anda mempercepat kecepatan karena gravitasi
- Ini menambah kecepatan pada posisi
- Menetapkan masukan entitas yang dikendalikan bot menurut agen AI
- Render (Posisi, Sprite) – Menarik sprite
- Kontrol Pemain (Input Player) membantu Anda mengatur input entitas yang dikontrol pemain sesuai dengan pengontrol.
Komposisi
Komposisi adalah elemen yang dapat Anda lampirkan lebih banyak komponen untuk menambahkan tampilan, perilaku, atau fungsionalitas tambahan. Anda juga dapat memperbarui nilai komponen untuk mengonfigurasi entitas.
Keuntungan dari ECS
Berikut keuntungan menggunakan ECS dalam pemrograman:
- Anda dapat membuat kode yang lebih pendek dan tidak rumit.
- Perilaku darurat yang sangat fleksibel.
- Ini menyediakan arsitektur untuk pengembangan 3D dan VR.
- Mengaktifkan pembuatan skrip berdasarkan perilaku oleh non-teknisi.
- Ini membantu Anda membagi kelas monolitik Anda.
- Penolakan yang mudah dan kompatibilitas.
- Pilihan mudah untuk pengujian dan tiruan unit.
- Memungkinkan Anda membangun aplikasi VR dalam hal kompleksitas.
- Gantikan komponen dengan komponen tiruan saat runtime.
- Ini membantu Anda memperluas fitur-fitur baru.
- ECS adalah metode ramah untuk pemrosesan paralel dan multi-threading,
- Membantu Anda memisahkan data dari fungsi yang bekerja padanya
- Berikan fleksibilitas yang lebih baik saat mendefinisikan objek dengan mencampurkan bagian-bagian yang dapat digunakan kembali.
- Ia menawarkan desain yang bersih menggunakan metode decoupling, enkapsulasi, modularisasi, dan dapat digunakan kembali.
Kerugian menggunakan ECS
Berikut adalah beberapa kelemahan menggunakan ECS
- Tidak didefinisikan secara konkrit seperti pola lain seperti MVC.
- Sulit untuk diterapkan dengan benar, mudah disalahgunakan Komponen yang baik memerlukan lebih banyak pemikiran tentang desain
- ECS memerlukan penulisan banyak sistem kecil yang berpotensi mengaliterasi entitas dalam jumlah besar, sehingga menimbulkan risiko penulisan kode yang sangat tidak efisien
- Kebanyakan orang bahkan belum pernah mendengar pola ini.
Contoh Sistem Komponen Entitas
Mari kita lihat contoh kelinci:
Lihat kotak putus-putus di sekitar komponen-komponen ini. Itulah entitas kelinci – tidak lebih dari sekadar wadah komponen. Anda juga dapat mendefinisikan entitas sebagai agregasi dari setiap subset komponen.
Anda dapat melihat gambar yang diberikan di atas. Ini adalah salah satu entitas kelinci – tidak lebih dari wadah komponen. Anda dapat mendefinisikan entitas sebagai agregasi subset komponen apa pun, seperti Carrot:
Aliran data di ECS:
Perilaku sistem adalah model ECS yang berubah dari satu keadaan ke keadaan lainnya.
Mari kita pahami menggunakan contoh ini:
Perilaku: “Kelinci yang duduk di pohon terjatuh karena gravitasi.”
Bagaimana Menerapkan perilaku di atas?
Anda dapat membuatnya dengan nilai z lebih dari 0 yang semakin berkurang menjadi 0.
Perilaku: “Makhluk hidup menua.”
Coba lihat bagaimana Anda bisa menerapkan perilaku ini?
Anda dapat membuatnya agar Komponen Hidup memiliki nilai usia yang meningkat seiring berjalannya waktu.
Ringkasan:
- Entity-Component–System (ECS) adalah pola arsitektur.
- Entitas adalah objek berbeda yang mewakili aktor dalam ruang simulasi.
- Komponen adalah perilaku tunggal yang dianggap berasal dari suatu entitas.
- Sebuah sistem akan mengulangi banyak komponen untuk melakukan fungsi tingkat rendah seperti rendering grafik, melakukan perhitungan fisika, atau pencarian jalur.
- Komposisi adalah elemen yang dapat Anda lampirkan lebih banyak komponen untuk menambahkan tampilan, perilaku, atau fungsionalitas tambahan.
- Dengan menggunakan pola ECS Anda dapat membuat kode yang lebih pendek dan tidak rumit.
- Ini tidak didefinisikan secara konkrit seperti pola lain seperti MVC.
- Perilaku sistem adalah model ECS yang berubah dari satu keadaan ke keadaan lainnya.