Eksperimental & pekerjaan-dalam-kemajuan C ++ 14 Multithreaded Entity-Time-Component-System Header-Only Library.
Berhasil pengembangan aplikasi dan permainan real-time yang kompleks membutuhkan sistem manajemen entitas yang fleksibel dan efisien. Ketika sebuah proyek menjadi lebih rumit, sangat penting untuk menemukan cara yang elegan untuk menyusun objek untuk mencegah pengulangan kode, meningkatkan modularitas dan membuka kemungkinan optimasi yang kuat.
Pola arsitektur-komponen entitas-komponen dirancang untuk mencapai manfaat yang disebutkan di atas, dengan memisahkan data dari logika.
Entitas dapat terdiri dari komponen kecil, dapat digunakan kembali, dan generik.
Komponen dapat disimpan di area memori yang berdekatan, sehingga meningkatkan lokalitas data dan keramahan cache.
Logika aplikasi dapat dengan mudah diparalelkan dan diabstraksi dari objek itu sendiri dan kebijakan penyimpanannya.
Keadaan aplikasi dapat diserialisasi dan dibagikan melalui jaringan dengan lebih sedikit upaya.
Basis kode yang lebih modular, generik, dan mudah diuji.
"ECST" dikembangkan sebagai proyek kelulusan BCS saya.
Bangun instruksi
Sampel kode
Lisensi
Tesis yang menyertainya
Slide
Entitas: Didefinisikan oleh Adam Martin (lihat tesis) sebagai “blok bangunan konseptual fundamental” dari suatu sistem, yang mewakili objek aplikasi konkret. Mereka tidak memiliki data atau logika khusus aplikasi.
Komponen: Jenis kecil, dapat digunakan kembali, yang menyusun entitas. Sekali lagi, mengutip Adam Martin di (lihat tesis) , tipe komponen "label entitas sebagai memiliki aspek tertentu". Komponen menyimpan data tetapi tidak mengandung logika apa pun.
Sistem: Penyedia logika implementasi untuk entitas yang memiliki serangkaian jenis komponen tertentu.
Paralelisme luar: Istilah yang digunakan dalam ECST yang mendefinisikan konsep menjalankan beberapa sistem yang tidak bergantung satu sama lain secara paralel. Rincian implementasinya akan dianalisis dalam Bab 10 (lihat tesis) . Secara konseptual, grafik asiklik terarah implisit dibuat pada waktu kompilasi berkat pengetahuan tentang ketergantungan sistem. Eksekusi DAG implisit ditangani oleh tipe penjadwal sistem yang ditentukan selama definisi pengaturan.
Paralelisme dalam: Lainnya yang menjalankan sistem terpisah secara paralel, pendukung ECST membagi satu sistem menjadi beberapa sub-tugas, yang dapat dieksekusi pada utas terpisah. Banyak sistem, seperti yang mewakili kompleks murni secara fungsional, tidak mengandung efek samping yang memodifikasi keadaan mereka sendiri atau yang mendefinisikan interaksi antara entitas yang berlangganan: ini adalah contoh utama perhitungan “paralel yang memalukan”.
"Di mana saya dapat menemukan dokumentasi untuk API?"
"Bisakah kita memiliki komponen yang tidak dapat dibangun secara default?"
"Saya mencoba membaca/menulis ke/dari komponen saya, tetapi saya mendapatkan kesalahan kompilasi. Apa yang terjadi? "
"Apakah mungkin untuk mengulangi komponen yang melekat pada entitas, tanpa berada di dalam fungsi proses sistem?"
"Bagaimana mengontrol apakah sistem saya berjalan secara paralel, atau sebagai satu utas? "
"Apa perbedaan antara membuat sistem saya berawak tunggal vs menonaktifkan paralellism batin?"