1. Ikhtisar - 9. Performance Tips (Tips Untuk Kinerja)
Mobile (Smartphone, Tablet Dan Sejenisnya)
Komputer desktop modern sangat kuat. Umumnya masalah utama dengan kinerja adalah bagaimana membuat game Anda berjalan dengan baik pada smartphone dan tablet. Ini lebih sulit untuk mendapatkan kinerja yang baik pada perangkat ini karena beberapa alasan:
- Memiliki perangkat keras yang lebih lemah: CPU yang lebih lambat, Chip grafis (VGA/Graphic Card) yang lebih lambat, dan sedikit memori (RAM).
- Menjalankan Javascript lebih lambat dari komputer desktop.
- Beberapa perangkat hanya menggunakan Software-Rendering, membuat mereka sangat lamban saat menggambar grafik.
Anda harus melakukan pengujian pada ponsel sejak dini. Komputer Anda mungkin lebih dari sepuluh kali lebih cepat dari perangkat mobile Anda. Untuk menghindari hal yang tidak diinginkan secara mengejutkan, lakukan uji coba secara teratur pada perangkat yang diinginkan untuk memastikan masih berjalan cukup cepat dan stabil. Fitur: Preview on LAN bisa membuat ini menjadi cepat dan mudah. Anda harus merancang game yang relatif sederhana agar sesuai dengan kekuatan perangkat mobile yang lebih rendah, dan memiliki harapan Frame yang lebih rendah (30 FPS adalah target yang baik untuk mobile).
3 tips berikut dapat membantu Anda mencapai performa terbaik untuk perangkat mobile:
- Hindari penggunaan terlalu banyak Object atau Effect: Particle, karena perangkat mobile memiliki batasan yang lebih rendah terhadap apa yang dapat ditangani oleh komputer desktop.
- Tempatkan Object yang menggunakan Mode: Blend atau Effect yang sama pada Layer yang sama. Misalnya: Jika Anda memiliki banyak Object dengan menggunakan Mode: Additive Blend (biasanya digunakan untuk ledakan, laser dan efek lainnya), pastikan semua Object ditempatkan pada Layer tersendiri. Juga pastikan mereka dibuat di Layer itu jika Object dimunculkan atau dibuat saat Runtime. Beralih di antara Effect dapat mengurangi kinerja, dan tindakan ini harus memastikan semua Object yang menggunakan Effect yang sama digambar pada waktu bersamaan.
- Hindari Object dengan area transparansi yang besar. Pixel yang transparan tetap membutuhkan waktu untuk rendering, meski tidak terlihat secara visual. Pangkas (Crop) semua gambar yang Anda gunakan. Memisahkan Object besar dengan area transparan yang besar menjadi rangkaian Object yang lebih kecil juga dapat meningkatkan kinerja rendering dan menghemat memori. Misalnya: Menambahkan Window Border (pembatas kotak dialog/menu pada game Anda) menggunakan Object:Sprite yang transparan seukuran layar dengan batas yang digambar pada tepinya akan mengakibatkan kinerja terburuk; Membelahnya menjadi 4 Object secara terpisah untuk masing-masing tepi akan jauh lebih efisien.
Performa pada ponsel juga meningkat seiring berjalannya waktu. Jika Anda masih memiliki masalah kinerja pada masa sekarang, perangkat di masa mendatang atau pembaruan pada perangkat lunak (software) akan menjadi lebih baik.
Penyebab umum performa yang buruk
Beberapa hal yang paling umum menyebabkan penurunan kinerja tercantum di bawah ini. Namun, daftar ini tidak menjelaskan keseluruhan dari masalah. Mungkin saja ada alasan lain yang menyebabkan game Anda berjalan lambat, yang tidak tercantum di sini.
- Terlalu banyak Object yang menggunakan Physics
Behavior: Physics sangat menggunakan CPU secara intensive. Penggunaan Object dengan Behavior: Physics yang terlalu banyak dapat meyebabkan perlambatan yang cukup besar. Anda harus mendesain game Anda untuk menggunakan lebih sedikit Object: Physics berukuran besar daripada banyak Object: Physics berukuran kecil. - Membuat Object terlalu banyak
Walaupun komputer modern sangat cepat, tapi tetap masih memiliki kapasitas pemrosesan yang terbatas. Membuat lebih dari 1,000 Object mungkin akan membuat game Anda menjadi lambat. Cobalah untuk mendesain game Anda untuk menggunakan lebih sedikit Object.
System Expression: objectcount dapat memberitahu Anda berapa banyak Object yang Anda gunakan. - Pengecekan tabrakan (Collision detection) terlalu banyak
Pengecekan tabrakan atau tumpang tindih (overlap) antara 2 jenis Object , masing-masing dengan 100 Instance, akan membutuhkan 10,000 pengecekan tabrakan. Jika ini dilakukan setiap Tick pada 60 Frame per detik maka akan memproses 600,000 cek tabrakan per detik, yang sangat menghabiskan konsumsi pada Processor. Cobalah untuk hanya memeriksa tabrakan saat benar-benar diperlukan, atau menggunakan Object: Timer (misalnya: satu detik), atau hanya menggunakan lebih sedikit Object. - Terlalu banyak Effect
Effect sangat mengesankan secara visual, namun bisa memperlambat performa game kalau terlalu banyak digunakan, terutama di ponsel. Menggunakan Effect pada Object dengan banyak Instance menyebabkan sangat lambat – seringkali jauh lebih efisien untuk menempatkan semua Object dengan Effect pada Layer tersendiri, kemudian menerapkan Effect ke Layer tersebut sebagai gantinya. Hal ini memungkinkan Effect diterapkan ke semuanya dalam sekali proses, daripada harus secara tidak efisien menjalankan kembali Effect terhadap Object kecil berulang-ulang. - Penggunaan Effect yang tidak perlu
Jangan pernah menggunakan Effect untuk memproses efek statis pada Object. Misalnya: Jangan gunakan Effect: Grayscale untuk membuat Object selalu tampil berwarna abu-abu. Ini akan menurunkan kinerja, padahal Anda bisa mengimpor gambar berwarna abu-abu (grayscale) ke Object dan tidak menggunakan Effect sama sekali. - Penggunaan Particle yang terlalu banyak
Object: Particle dapat dengan mudah membuat ratusan partikel. Setiap Particle sama seperti Object: Sprite, sehingga dengan cepat dapat menggunakan sumber daya pemrosesan yang tersedia. Hindari penggunaan berlebih dari beberapa ratus Particle di desktop. Dianjurkan untuk menghindari penggunaan Particle sama sekali pada ponsel jika memungkinkan; Jika Anda masih menggunakannya, gunakan sedikit mungkin dengan rate terendah yang bisa Anda dapatkan. Gunakan Expression: ParticleCount untuk membantu menghitung berapa banyak Particle yang telah Anda buat. - Menggunakan Sprite daripada Tiled Background
Membuat terlalu banyak Object dapat menyebabkan penurunan kinerja, dan kesalahan yang umum terjadi adalah menggunakan sederatan (grid) dari Object: Sprite dan bukannya Object: Tiled Background.
Misalnya: Grid untuk Sprite 20x20 memiliki 400 Object, yang menghasilkan dampak signifikan pada sekumpulan Object.
Sebuah Tiled Background tunggal dapat menggantikan grid dari Sprite dan hanya dihitung sebagai Object tunggal. Tiled Background secara khusus dioptimalkan untuk mengulangi teksturnya sehingga dalam kasus ini secara harfiah 400 kali lebih efisien daripada deretan (grid) dari Sprite.
Selalu gunakan Tiled Background daripada mengulangi Sprite sedapat mungkin. - Menggunakan browser yang lambat
Semua browser tidak memiliki performa yang sama. Anda mungkin menemukan browser dengan performa yang lebih baik ketika menguji berbagai macam jenis browser. - Tidak tersedianya Hardware Acceleration
Biasanya meskipun Canvas 2D Renderer yang lebih lambat masih dipercepat perangkat keras oleh kartu grafis komputer, Namun terkadang bahkan Canvas 2D tidak dipercepat oleh perangkat keras dan menggunakan software yang sangat lambat. Tidak ada cara mudah untuk membuktikannya, namun biasanya ditunjukkan dengan adanya indikasi kinerja yang jauh lebih buruk pada sebuah sistem. Silakan uji di beberapa komputer untuk melihat apakah kinerja buruk adalah sesekali ataukah sering, dan pastikan driver kartu grafis selalu update. - Terlalu banyak Loop (Pengulangan)
Ini jarang terjadi, tapi jika menggunakan terlalu banyak loop seperti For, For Each and Repeat dapat menyebabkan game jadi melambat. Perulangan bersarang/bertingkat (nested loop) sangat mungkin menyebabkan hal ini. Untuk menguji apakah ini masalahnya, coba me-nonaktifkan sementara Event perulangan (loop) tersebut.
Kesalahpahaman yang umum terjadi
Hal-hal berikut sering dianggap mempengaruhi kinerja (termasuk Frame saat Runtime (pada saat game dijalankan)), namun mungkin hanya sedikit atau sama sekali tidak berpengaruh:
- Object di luar layar tetap digambar (rendered). Construct 2 tidak memproses render untuk Object yang tidak muncul di layar, dan GPU juga cukup pintar untuk tidak memproses konten yang muncul di luar layar – meskipun gambar tunggal hanya terlihat sebagian di layar.
- Format gambar (misalnya: JPEG, PNG-8, PNG-32) mempengaruhi ukuran download namun tidak berpengaruh pada kinerja pada saat Runtime (semuanya di-dekompresi ke Bitmap 32 bit pada saat game dijalankan).
- Format dari audio juga hanya mempengaruhi ukuran download namun tidak berpengaruh pada kinerja pada saat Runtime.
- Menggunakan banyak Layer biasanya tidak berpengaruh, kecuali sebagian besar Layer telah diubah kepekatan warnanya (opacity), memiliki Effect yang diterapkan, memiliki Property: Mode: Blend yang bukan 'Normal', atau menggunakan Property: Force own texture. Namun biasanya tidak ada dampak kinerja dari penggunaan banyak Layer dengan pengaturan default.
- Menggunakan banyak Layout juga mungkin tidak memiliki pengaruh selain ukuran download. Ukuran Layout juga tidak memiliki pengaruh secara langsung; Layout yang lebih besar tidak menggunakan lebih banyak memori ataupun lebih banyak pemrosesan, kecuali jika Anda menggunakan lebih banyak Object.
- Sudut (angle) atau kepekatan warna (opacity) dari Sprite / Tiled Background dan posisi Floating-point (nilai berkoma, misalnya: memposisikan Sprite pada koordinat X = 10.5) umumnya tidak berpengaruh, karena chip grafis modern sangat bagus dalam menangani hal ini, bahkan pada ponsel. Sprite yang sangat besar masih bisa memperlambat perangkat mobile, namun di desktop, mereka seringkali masih bisa ditampilkan secepat Sprite yang lebih kecil.
WebGL
WebGL membantu game berjalan lebih cepat di komputer desktop. WebGL kira-kira 2 kali lebih cepat dari Canvas 2D Renderer, jadi untuk kinerja terbaik, Anda harus memastikannya untuk mengaktifkannya di Project Properties. Namun, WebGL tidak selalu didukung, sehingga memungkinkannya tidak menjamin bahwa game tersebut dirender dengan WebGL. Gunakan System Expression: renderer untuk memantau renderer mana yang sedang digunakan.
Ada beberapa alasan mengapa WebGL tidak didukung. Seperti yang tercantum di bawah ini:
- Browser mungkin tidak mendukung WebGL. Misalnya: Internet Explorer saat ini tidak mendukung WebGL. Ini akan selalu menggunakan Canvas 2D Renderer yang lebih lambat. Untuk meningkatkan kinerja, coba beralih ke browser yang mendukung WebGL, seperti Firefox atau Chrome.
- Driver kartu grafis Anda mungkin belum update. Untuk menjamin pengalaman browsing yang stabil, browser terkadang menonaktifkan WebGL, jika driver kartu grafis diketahui memiliki celah kesalahan (buggy). Dengan memperbarui driver kartu grafis Anda akan dapat memperbaiki masalah ini. Lihat: Update your graphic card.
- Komputer Anda mungkin terlalu tua atau memiliki perangkat keras yang tidak didukung. Perangkat keras grafis yang sangat tua mungkin tidak dapat mendukung WebGL sama sekali. Jika memungkinkan, upgrade kartu grafis Anda ke yang baru untuk dapat memperbaiki masalah ini. Namun, jangan lupa game Anda mungkin masih bisa dimainkan dengan Canvas 2D Renderer – namun hanya akan lebih lambat.
Saran lanjutan
Untuk informasi lebih lanjut dan saran tentang kinerja, lihat: Blog Post: Optimisation: don't waste your time.
Ukur & uji
Dari awal project Anda, Anda harus menggunakan indikator: Frame dan mengawasi performa. Ini memungkinkan Anda dalam memperhatikan apabila perubahan tertentu yang Anda lakukan telah mempengaruhi performa secara serius.
Uji project Anda pada jenis sistem dan browser yang berbeda sebanyak mungkin.
Jika Anda merasa ada sesuatu yang menyebabkan masalah kinerja pada project Anda, biasanya mudah untuk menguji secara teori: buat cadangan project Anda, hapus hal yang Anda curigai sebagai penyebab, dan lihat apakah Frame telah meningkat. Jika membaik, hal yang Anda hapus adalah penyebabnya; Jika tidak, pasti itu adalah hal lain.
Selalu ukur performanya. Sistem komputer adalah sangat kompleks, dan ada banyak hasil tak terduga atau diluar akal dalam hal kinerja. Satu-satunya cara untuk mengetahui pengaruh apa yang terjadi terhadap kinerja adalah dengan mengukurnya. Jika Anda tidak dapat melihat perbedaan, maka mungkin tidak berpengaruh serius pada performa.
Bagaimana mengukur performa
Ada 2 System Expression yang penting untuk menentukan kinerja:
| : | Menunjukkan jumlah Frame saat ini per detik. Biasanya kecepatan tertinggi adalah 60 Frame per detik, namun bisa berubah tergantung sistemnya. |
|
| : | Menunjukkan Canvas2d atau WebgGL tergantung pada Renderer yang digunakan. WebGL Renderer sekitar dua kali lebih cepat dari Canvas2D, namun hanya berjalan di desktop dan tidak selalu didukung. Untuk informasi lebih lanjut, lihat bagian: Bab 1. Ikhtisar - 7. Teknologi |
Anda dapat menampilkan keduanya menggunakan Object: Text untuk memantau performa saat menguji game Anda, dengan cara:
Set text to fps & “FPS (” & renderer & “)”
Ini akan menampilkan string, misalnya: 60 FPS (webgl) yang menunjukkan Frame dan renderer.
Komentar
Posting Komentar