Categories: Intel Developer Zone

Tips Konfigurasi Unity: Memori, Audio dan Tekstur

Artikel ini akan menjelaskan beberapa tips dan trik dalam mengoptimalkan memori dan bekerja dengan teksur. Tips dan triknya dikompilasikan oleh Steve Hughes yang mana ia berkerja sebagai Applications Engineer for Visual Computing di Intel.

Untuk informasi lebih lanjut tentang optimalisasi Unity, bisa dilihat di artikel di link ini.

Bekerja dengan Tekstur

  • Jangan buat Mipmap untuk tekstur kecuali benar-benar diperlukan
  • Gunakan tekstur yang sudah dikompres
  • Jangan set teksur menjadi readable (CPU R/W) kecuali ketika diperlukan. Ini menghindari kopi CPU, marker, dan lain-lain.
  • Kurangi ukuran tekstur bergantung pada resolusi layar
  • Untuk Android dan layar kecil:
    • Untuk model – lewati MIP atas (Quality Settings>Rendering>Texture Quality).
    • Pisahkan kanal RGB (dapat dikompres) dengan Alpha (tidak dapat dikompres).

Tips Desain

  • Map normal tidak perlu skalanya 1:1 dengan diffuse map.
  • Hilangkan keyframe redundan dari animasi (hanya refresh untuk mengganti grafik).

Untuk Model Mesh

  • Hilangkan kanal yang tidak diperlukan dari mesh (ada di konfigurasi Player, aktifkan Optimized Mesh Data).
  • Untuk mesh dengan detail tinggi pada sistem dengan RAM kecil, set Quality menggunakan maxLOD.

Untuk informasi lebih lanjut tentang optimalisasi grafik di Unity, lihat: How To Plan Optimizations with Unity 

Audio

  • Gunakan buffer 200k untuk audio playback.
    • Masukkan klip pendek yang tidak dikompres ke buffer tersebut
    • Atau gunakan AudioClip.GetData untuk mengembangkan, dan kemudian bebaskan yang sudah dikompres

Optimalisasi Memori

  • Ada dua metode untuk melihat apa yang memakan RAM:
    • Profiler.GetRuntimeMemorySize() bisa menemukan objek yang mengkonsumsi banyak RAM (akan lebih baik untuk ditampilkan di debug log)
    • Lihat di Mono CIL (Common Intermediate Language) untuk 3 jenis alloc – Newarr, Newobj, Box.
  • Perluas secara manual heap-nya dengan mengalokasikan ruang memori sebelumnya pada proses startup (didasarkan pada sejarah penggunaan aset).
  • Untuk keperluan pada saat yang berjalan, panggil Resources.UnloadAsset (jika asetnya masih perlu untuk direferensikan) atau gunakan Resources.UnloadUnusedAssets (untuk yang tidak direferensikan)
  • Dikarenakan Auto Garbage Collection-nya Unity biasanya dipanggil hanya ketika heap sudah penuh atau tidak ada ruang yang cukup untuk freeblock, pertimbangkan untuk memanggil (System.GC.Collect) sebelum dan sesudah loading sebuah level (atau gunakan timer) atau jalankan cleanup pada waktu transisi.
  • Hindari fungsi dengan jumlah alloc tersembunyi yang banyak.
  • Hindari fragmentasi memori menggunakan structure (yang disimpad pada stack) daripada class (disimpan di heap).
  • Ingat, enumerator mengalokasikan RAM. Dan (Foreach) diproses ke dalam sebuah blok kode yang mengalokasikan sebuah enumerator juga.
  • Untuk alasan yang sama, hindari metode Anonymous dan Lambdas.
  • Stream aset untuk mengkonsumsi RAM lebih kecil. Kumpulkan aset terkait ke dalam Asset Bundle dan buat dan stream mereka ke luar pada saat run time (pastikan untuk menghancurkan mereka sebelum adegan selanjutnya atau stream paket aset).
  • Jangan tambahkan teks secara bersama. Jangan manipulasi teks per frame (sebagai gantinya tambahkan sebuah jebakan jadi kamu hanya perlu memperbaharui jika itu berganti nilai).
  • Gunakan class StringBuilder untuk membuat teks, jangan menggunakan array ke dalam sebuah fungsi yang menghasilkan teks karena itu akan terus membuang dan mengalokasi ulang setiap saat dalam loop.
  • Buat class kumpulan aset (peluru / misil)nuntuk menyimpan objek daripada menggunakan class baru seperti:
    MyClass m – poolOfMyClass //do stuff poolOfMyClass.Store(m);

KREDIT: beberapa bagian dari materi di atas didapat dari:

Untuk informasi lebih lanjut, lihat:

* Artikel ini adalah hasil kerja sama dengan Intel Developer Zone. Artikel asli bisa dilihat di link ini.

Share
Published by
TeknoJurnal

Recent Posts

Cisco Peringkatkan Kerentanan Kritis Dalam Cisco Data Center Network Manager

Cisco mengungkapkan tiga kerentanan dalam layanannya. Ini dia penanganannya!

January 7, 2020

Optimal idM Meluncurkan OptimalCloud Partner Platform

Ini ulasan mengenai keuntungan OptimalCloud Partner Platform, platform baru milik Optimal idM!

January 6, 2020

Google Siapkan Coral Accelerator Module dan Coral Dev Board Mini untuk Tahun 2020

Google kenalkan dua koleksi baru dari Coral. Dua koleksi baru ini bakal menambah kemampuan pengembangan…

January 3, 2020

Google Kembangkan Model Kecerdasan Buatan Untuk Deteksi Kanker Payudara

Raksasa Google baru saja mengembangkan sistem pemindaian kanker payudara berbasis kecerdasan buatan. Bagaimana hasilnya, berikut…

January 3, 2020

Google Dorong Fitur Bubbles Notifications Ke Versi Stabil

Meski dikenalkan bersamaan dengan Android 10 Beta, sampai kini Bubbles Notifications masih dalam tahap pengembangan.…

December 31, 2019

Samsung Siapkan Lima Proyek dan Empat Startup C-Lab Untuk CES 2020

Samsung akan kembali memamerkan hasil program C-Lab ke ajang CES 2020. Ini dia proyek dan…

December 30, 2019