Minggu, 07 Januari 2024

Memantau ukuran heap?

Pada suatu ketika ada sebuah kejadian unik yang saya alami, jadi pada waktu itu saya ingin membuat objek yang di alokasikan ketika terdeteksi oleh kamera dan jika tidak terdeteksi objek itu dihapus.

Nah, jadi pada waktu itu objek nya saya buat jangan banyak-banyak dulu, maksimal 4 lah. Jadi ukuran array nya 4, jadi yang unik disini adalah: kan ada 4 objek, nah yang 2 aman, yang  2 lainya, bermasalah, padahal setiap objek diperlakukan dengan perlakuan yang sama. Seperti ini kejadianya:


Tapi sebenarnya solusinya simpel, cuman yang sedikit unik ya kenapa hal itu bisa terjadi, terlepas apapun penyebabnya, kok bisa kaya gitu. Setelah semuanya selesai diperbaiki maka aplikasinya bisa kita lihat seperti ini:


Jadi aplikasi di atas mendemostrasikan bagaimana skema pengalokasian memori ketika objek terdeteksi kamera,  kita dapat melihat jumlah objek, ukuran heap, dan jumlah vertices. Dan physics body itu adalah member variable dari objek persegi tersebut, persegi kan vertex nya ada 4? Nah, jadi itu vertices total setotal-totalnya, jadi misal objeknya ada 4, berarti 4 x 4.

Saya juga baru-baru ini melihat seorang indie game developer asal swedia yang memiliki kesamaan dengan proyek ini, yaitu menggunakan raylib dalam membuat game sekaligus engine-nya. Dia membagikan konsep yang sangat menarik dalam menyelesaikan persoalan manajemen memori yang kompleks untuk mengatur objek yang jumlahnya sangat banyak seperti ini:


Sedangkan pada proyek open source yang saya buat, yaitu pada contoh repository ini:

https://github.com/shadow-heap/dynamic-memory-allocation

Digunakan untuk mengatasi masalah FPS drop ketika objek yang memiliki physics body jumlahnya terlalu banyak. Jadi untuk saat ini masalah itu bisa di atasi sesimpel dengan mengalokasikan objek  yang memiliki physics body hanya pada saat terlihat oleh kemera. Sedangkan untuk objek seperti koin, sejauh ini masih sangat hemat memory dan bahkan tidak berpengaruh terhadapat CPU komputer modern, seperti ini:

Tapi sayangnya untuk saat ini mekanisme pengalokasian memory itu masih perlu dikembangkan lagi, supaya objek dengan physics body yang tampil pada kamera nantinya dapat lebih banyak lagi.

Kesuluruhan kodenya dapat di lihat di sini:

https://github.com/shadow-heap/dynamic-memory-allocation

Tidak ada komentar:

Posting Komentar

Kenapa harus selalu bumbu kuning?

Sebagai seorang penggiat game engine dan belakang ini banyak yang membahas tentang bahasa safety dan tidak safety. Apakah sebaiknya kita ber...