KELOLA DUNIAMU
Pengujian & Optimasi

Panduan optimasi

14min

Memori

  • ZEPETO dirancang untuk memuat sumber daya yang digunakan di dunia ke dalam memori.
  • Berdasarkan 1.7.0 di dunia, perangkat dengan spesifikasi terendah adalah iPhone 8 (2GB RAM) dan Galaxy S8 (4GB RAM).
  • Oleh karena itu, kita perlu membuatnya agar tidak melebihi 2GB.
    • Peralatan dengan spesifikasi minimum mungkin akan diubah nanti.
  • Dalam kasus dunia multiplayer, memori harus dikelola dengan mempertimbangkan jumlah maksimum orang karena setiap karakter memiliki memori.



Cara memeriksa indikator kinerja

Cara memeriksa indikator kinerja di lingkungan mobile

  • Silakan gunakan Runtime Profiler resmi yang disediakan oleh ZEPETO.

📘 Silakan merujuk ke panduan berikut. [Profiler Waktu Eksekusi]



Cara memeriksa indikator kinerja untuk server Multiplayer Dunia di lingkungan pengembangan lokal Anda

Jika Anda menggunakan VS Code sebagai editor skrip, Anda dapat memeriksa berbagai indikator kinerja seperti penggunaan CPU, penggunaan memori, dan lainnya untuk server lingkungan pengembangan lokal Anda melalui plugin.

📘 Silakan merujuk ke panduan berikut tentang cara mengatur VS Code sebagai editor skrip di Unity.



1) Cari dan instal Visualisasi Grafik Api untuk profil JavaScript di panel [Ekstensi] di sisi kiri layar VSCode.

Document image




  • Indikator kinerja dari lingkungan pengembangan lokal yang diperiksa oleh plugin mungkin berbeda dari lingkungan layanan yang sebenarnya. Harap gunakan untuk memahami tren kinerja yang kira-kira dan potensi masalah kinerja dari logika server multiplayer dunia.
  • Jika direktori kerja VS Code tidak diatur ke proyek dunia, plugin tidak akan berfungsi dengan benar. Pastikan untuk memilih folder proyek yang benar di panel [Explorer].



2) Pergi ke panel [Run and Debug] di VS Code dan ubah jenis Debugging menjadi Zepeto Multiplay Script.

Document image




3) Tekan tombol Putar di layar Unity untuk menjalankan dunia, dan tekan tombol [Mulai Debugging] di VS Code untuk memulai debugging runtime.

Anda dapat memeriksa indikator kinerja server multiplayer secara real-time di panel [Jalankan dan Debug].

Document image




👍 TIP

  • Anda dapat menambahkan indikator kinerja berikut dengan mengklik tombol Toggle visible performance charts di panel [Jalankan dan Debug].
    • Penggunaan CPU
    • Heap Digunakan
    • Heap Total
    • Ukuran Set Residensial
    • Memori Eksternal
    • Memori ArrayBuffer
Document image




Pedoman Optimasi yang Direkomendasikan

Silakan optimalkan sesuai dengan kriteria berikut untuk memastikan dunia yang dirilis beroperasi pada spesifikasi minimum.

  • Perangkat spesifikasi minimum (dengan 2GB RAM) mengalami crash ketika:
    • Profil Waktu > Memori yang Dialokasikan melebihi 550MB rata-rata.
      • Document image
        
    • Ketika Dunia sebenarnya berjalan, tidak hanya sumber daya Dunia tetapi juga berbagai proses berjalan di memori, jadi disarankan untuk menyisakan beberapa ruang di Memori yang Dialokasikan.
  • Untuk Dunia multiplayer, ada alokasi memori per karakter, jadi Anda perlu mengelola memori berdasarkan jumlah maksimum pemain.
    • Rata-rata memori per karakter ZEPETO: 35MB
      • Jika Anda menggunakan manekin tipe karakter ZEPETO, itu memakan memori yang sama seperti ketika satu karakter Zepeto masuk.
      • Untuk tujuan optimasi, kami merekomendasikan menggunakan tipe manekin Sederhana jika memungkinkan.
    • Rata-rata dari 280MB ketika hingga 8 orang masuk
      • Ini adalah angka rata-rata; silakan uji memori yang Dialokasikan Anda dengan benar-benar memiliki jumlah maksimum orang yang masuk sebelum peluncuran, jika memungkinkan.

FPS (Frame Per Detik)

  • Batas maksimum FPS adalah 30FPS.



Kapasitas

  • Kapasitas paket dibatasi hingga 1GByte.
  • Dengan fitur pergerakan lintas dunia yang disediakan oleh World 1.8.0, Anda dapat secara tidak langsung menyelesaikan bagian kapasitas.



Metode optimisasi



Apa yang dapat diperbaiki tentang sumber daya

  • Silakan hapus folder paket yang tidak digunakan dan file yang tidak digunakan juga.
  • Silakan sesuaikan jumlah objek dalam proyek dan jumlah pohon/kolam di terrain.



Apa yang dapat diperbaiki tentang kode

  • Menggunakan Coroutines: yield tidak menghasilkan sampah, tetapi membuat waitForSeconds baru akan menghasilkan sampah. Oleh karena itu, buat dan gunakan objek tersebut.
  • Dalam Update ( ), bagian yang tidak perlu dipanggil setiap frame diganti sehingga dapat dipanggil setiap n frame.
  • Hindari memanggil fungsi logika berat dalam Awake( ) OnEnable( ) Start( ).
  • Hindari meninggalkan Update ( ) dan LateUpdate ( ) bahkan untuk fungsi kosong.
  • Hindari menambahkan komponen saat runtime. Jika perlu, lebih efisien untuk menginstansiasi prefab.
  • GameObject.Find, GameObject.GetComponent, dan Camera.main mahal, jadi jangan panggil dari Update() tetapi panggil dari Start() jika perlu.
  • Instansiasi dan penghancuran menghasilkan sampah dan pengumpulan sampah memperlambat proses. Sebagai gantinya, coba untuk menggunakan kembali dengan kolam.
  • Renderer.material menggunakan Renderer.sharedMaterial kapan pun memungkinkan untuk mengakses material objek yang terikat karena terlalu mahal untuk membuat salinan baru dan mengembalikannya.



Apa yang bisa diperbaiki tentang UI

  • Tergantung pada tujuannya, bagi kanvas dan atur kanvas yang tidak digunakan menjadi tidak terlihat.
  • Batasi GraphicRaycasters dan hapus Raycast Target. Hapus GraphicRaycaster dari kanvas dan masukkan Graphic Raycaster secara terpisah ke dalam elemen individu, seperti tombol.
  • Jika Anda tidak memerlukan Raycast Target di teks atau gambar, hapus itu.
  • Hindari menggunakan Layout Groups kecuali itu adalah UI Dinamis. Gunakan jangkar untuk mengaturnya.
  • Tampilan Daftar dan Grid yang besar mahal, jadi hindari menggunakannya.
  • Saat menggunakan UI layar penuh, sembunyikan semuanya kecuali kanvas ini. Ini menghilangkan kebutuhan bagi kamera untuk merender adegan 3D. Ini juga menyembunyikan kanvas yang tidak perlu.
  • Turunkan Application.targetFrameRate karena Anda tidak perlu memperbarui setiap 60 fps saat menggunakan UI layar penuh.
  • Jangan biarkan ruang kosong untuk kamera render dari kanvas yang menggunakan World Space, dan isi dengan kamera yang Anda gunakan.
    • Jika Anda meninggalkan ruang kosong, Unity akan secara otomatis mengisi dengan camera.main.



Apa yang bisa diperbaiki tentang audio

  • Ubah klip suara menjadi mono.
  • Mengizinkan penggunaan file WAV. Setiap file musik terkompresi akan didekompresi dan kemudian dikompresi ulang selama waktu pembangunan. Kualitas file musik menurun selama proses ini.
  • Kompresi klip dan turunkan bit rate kompresi.
  • Gunakan sebagian besar file dengan Vorbis, dan ubah suara pendek menjadi ADPCM.
  • Jangan melebihi 22.050 Hz.
  • Pilih jenis muatan yang sesuai.
    • Untuk file musik dengan ukuran 200 kb atau kurang, Didekompresi saat Dimuat.
    • Untuk file musik dengan ukuran 200 kb atau lebih, tetap Terkompresi dalam Memori.
  • Atur file besar dan musik latar untuk diatur ke streaming.
  • File musik yang dibisukan tidak berakhir hanya dengan mengubah volume menjadi nol, jadi pastikan bahwa mereka dihancurkan.