Construct 2 : Tips Mengatasi Lag pada Game Android

June 21, 2016 in #Construct 2 #Coding | | | Share on Google+

Karena game android Construct 2 dibuat dengan Cordova, tentu peformanya kalah dibanding game lain yang dibuat secara native.

Apalagi jika kamu tidak mempertimbangkan masalah peforma. Yang penting bikin, eh ternyata nge-lag.

Terus ngambek, posting di group kenapa gamenya ngelag, padahal udah menghabiskan banyak waktu untuk membuat gamenya.

Yuk dibiasakan dari awal.



Kurangi Jumlah Objek

Ini masalah utama, semakin banyak objek yang kamu buat, ya semakin banyak hal yang harus diurusin sistem. Biasakan seminimal mungkin. Kalau perlu buang / sederhanakan apa yang terjadi di dalam game kamu.

Tampilan yang bagus gak berguna kalau player mau main aja gak bisa.

Solusi :

  • gunakan behavior Destroy outside layout supaya tidak lupa

Kurangi pemakaian efek dan partikel

Ini juga masalah.
Ini game android, bukan game PC.
Kalau PC seboros apapun kamu masih gak masalah, wong kapasitas RAM sekarang banyak.

Lha kalau Android?
gak bisa lah.
Apalagi kalau mau game nya bisa dimainin di banyak device. Harus dipikirin.

Solusi :

  • jangan kebanyakan efek, toh gak semua disupport juga.

  • set particle rate dan size nya seminimal mungkin.

Perhatikan ukuran sprite

Lihat gambar di bawah :

Sprite tersebut ukurannya berapa?
47x59 pixel.

Wah,
ternyata ukuran sebenarnya 1000x1000 pixel !

Yang di render sistem tetap ukuran yang sebenarnya (1000x1000, bukan 47x59). Ini berat beratin memori, dan pasti ngaruh di ukuran apk.

Solusi :

  • perhatikan ukuran gambar file mentahannya, bukan di editor
  • kalau gak salah, ukuran asset yang dianjurkan adalah kelipatan 8.


Cek jumlah collision ploygon

Collision polygon ini fungsinya untuk deteksi tabrakan (kondisi on collision). Semakin rumit collision polygon dalam satu sprite, maka sistem akan semakin berat untuk ngecek tabrakannya.

makanya collision points cuma bisa maksimal 8 buah titik per frame.

Solusi :

  • biasakan untuk mengatur jumlah collison point setiap frame milik sprite

Jangan asal buat event

Sekali lagi, kita ingin membuat game untuk android yang memiliki resource yang terbatas. Hati-hati membuat event, misalnya loop, atau penggunaan everytick yang salah.

Hal yang umum adalah membuat event Every tick > Set Text

Hal ini boros banget.

cukup gunakan set text kalau perlu saja, misalnya kalau skor bertambah.

Set properties project

Ini supaya bisa dimainkan di banyak device, terutama di HP lama yang memorinya kecil.

Ganti :

  • Use high-DPI display = No
  • Fullscreen scalling = Low quality
  • Clear background = No
  • Pixel rounding = On


Perhatikan transparency asset

Asset sprite C2 yang berformat .png memiliki transparency. Maksudnya seperti gambar di bawah :

Kalau buat asset sendiri, perhatikan hal ini. Beri secukupnya saja, jangan terlalu banyak.

Why?

Walaupun gak kelihatan, transparency tetap di render oleh sistem.

Gambar di bawah adalah contoh asset dengan transparency yang baik.

Solusi :

  • Jika sudah terlanjur, gunakan fitur crop

  • gunakan Shift + crop untuk cropping otomatis semua animasi

Kurangi sprite yang bertumpuk-tumpuk di layer yang berbeda

Proses render gambar dilakukan dari belakang ke depan, bagian asset yang bertumpuk akan di render berkali-kali, sehingga kapasita fill rate GPU cepat penuh.


Seminimal mungkin menggunakan create object dan spawn

CMIIW,
Perintah Spawn dan Create Object itu makan memori yang lumayan, kalau di grafikkan istilahnya, jadi nge-spike.

Solusi :

  • Alternaltif bisa menggunakan Set Position

Kapan misalnya?
Waktu membuat game Flappy Bird, kan pasti Create object terus terusan setiap detik selama karakter belum mati.

Ketika pipa sudah dilewati, set position ke posisi awal (kanan) biar bisa dipakai lagi.

Kalau ada objek yang dibutuhkan, dan baru akan dibuat saat runtime, bisa buat dulu di awal di luar layout, baru ketika mau dipakai, panggil dengan set position.

Tenang,
objek di luar layout tidak akan di render.

Kalau gak salah, game genre FPS di PC pun juga gak melakukan spawn saat menembak peluru.

Framerate dependent vs framerate independent

Gampannya, objek yang framerate dependent itu geraknya dipengaruhi oleh FPS, sedangkan framerate independent tidak.

framerate dependent

  • Kalau game berjalan dalam 30 FPS, maka kecepatan objek piggy adalah 30 pixel per detik.

  • Kalau FPS nya 60 FPS, kecepatan piggy adalah 60 pixel per detik.

Baru tau kan?

framerate independent

Sebaliknya, kalau framerate independent memiliki kecepatan yang sama walaupun FPS nya beda.

Selalu gunakan framerate independent kapanpun jika bisa

Bedanya apa lagi?

Kecepatan gerak objek framerate independent dipengaruhi oleh timescale.

Jadi kalau di pause, framerate independent akan berhenti bergerak, sedangkan framerate dependent tidak.

Oh ya, behavior udah otomatis framerate independent.

Untuk lebih lanjut tentang hal ini bisa dibaca forum.



Kurangi kecepatan animasi

Kecepatan animasi juga berpengaruh, apalagi kalau untuk mobile browser, ada batasannya.

Matikan collision untuk semua sprite UI

Hal ini bisa diset di bagian properties bar di masing-masing sprite. Tujuannya untuk mengurangi jumlah pengecekan collision setiap objek.


Hal Lain yang Perlu Diperhatikan

Di samping sisi teknis, ada juga hal-hal lain yang perlu kamu ketahui, yaitu :

  • game hanya bisa berjalan dalam satu core. Sumber : Why to events only run on one core?

  • gunakan debugger untuk melihat hal-hal penting terkait peforma, terutama di bagian peformance

  • gunakan ekspresi fps untuk melihat FPS, dan cpuutilisation untuk melihat berapa banyak resource yang dipakai gamemu. Kamu bisa menggunakan teks untuk melihat ini (jadi gak perlu ke debugger) dengan perintah : Set text to fps & " FPS, " & round(cpuutilisation * 100) & "% CPU (" & renderer & ")"

  • test di mobile dari awal. Kalau kamu pakai yang berbayar, kamu bisa pakai fitur LAN preview



Pengen Nambah Pengetahuan Baru ?

Saya menulis buku "Bikin Game Tanpa Coding dengan Construct 2" yang bisa kamu beli di toko buku.

Isinya mencangkup penggunaan dasar dan tutorial membuat game dengan engine ini.

beli online


sumber gambar header : searchengineland.com

June 21, 2016 in #Construct 2 #Coding | | | Share on Google+