Pengenalan Game Design

Sekuens Animasi

Pada bab-bab sebelumnya, kita telah membiasakan diri menggunakan Processing, serta mengaplikasikan fungsi-fungsi bawaannya untuk melakukan berbagai hal, seperti menampilkan gambar, membuat bentuk, hingga mentransformasikan keduanya. Pada titik ini, tentu saja Processing telah nampak sebagai sebuah tool yang bersahabat untuk membuat konten visual yang dinamis. Namun, pada kenyataannya, kekuatan Processing dapat ditingkatkan dengan menggunakan berbagai library tambahan. Library-library ini menyediakan fungsi-fungsi baru, di luar yang sudah jadi bawaan Processing. Peningkatan fungsionalitas ini membuat Processing mampu melakukan banyak hal-hal baru dengan relatif mudah.

Daftar library Processing bisa dilihat di halaman https://processing.org/reference/libraries/ terdapat daftar lengkap library apa saja yang bisa kita tambahkan ke Processing. Daftar tersebut juga bahkan sudah dikelompokkan berdasarkan fungsi dari library tersebut.

Khusus untuk bab ini, kita akan melakukan pembuatan sekuens animasi, atau melakukan beberapa hal dalam urutan-urutan tertentu. Dari deskripsi itu, mungkin ada pembaca yang berkata, ini akan sangat mudah dilakukan dengan menggunakan fungsi bawaan Processing. Namun, untuk memudahkan pekerjaan kita, sekaligus memperkenalkan library, maka pada bab ini, kita akan menggunakan sebuah library bernama Ani. Referensi lebih lanjut mengenai library tersebut, bisa diakses di http://www.looksgood.de/libraries/Ani/.

Instalasi Library Ani

Ani, seperti juga library lain, bisa diinstalasikan ke Processing dalam 2 cara, silahkan pilih cara yang paling nyaman.

  • Melalui IDE

    1. Pertama-tama, buka IDE Processing
    2. Pilih Sketch - Import Library ... - Add Library ..
    3. Akan muncul window yang menampilkan daftar library untuk Processing.
    4. Ani bisa dicari dengan mengetikkan "Ani" di form pencarian, atau dengan memilih kategori "animation" dan mencari Ani dari daftar
    5. Setelah library Ani muncul, klik tombol Install yang ada di sebelah kanan
    6. Setelah instalasi selesai, Ani bisa langsung digunakan
  • Download dan pindahkan ke folder Processing

    1. Download Ani di websitenya. http://www.looksgood.de/libraries/Ani/
    2. Ekstrak hasil download
    3. Tempatkan hasil ekstrak di dalam folder Processing/libraries. Jika menggunakan Mac, folder ini ada di folder Applications. Jika menggunakan Windows, maka ia ada di My Documents
    4. Jangan lupa untuk mengganti nama folder hasil ekstrak tadi menjadi Ani
    5. Selesai, Ani bisa langsung digunakan

Untuk menguji apakah instalasi sudah berjalan dengan benar, maka coba pilih Sketch - Import Library. Apabila ada nama Ani dalam pilihan library yang bisa diimpor, maka instalasi sudah benar. Jika tidak, coba ulangi langkah-langkah instalasi tadi.

Sekilas Tentang Ani

Ani adalah sebuah library yang berisi fungsi-fungsi yang berkaitan dengan pembuatan animasi. Secara umum, ada 3 fungsi yang akan memudahkan kita dalam membuat animasi:

  1. Fungsi motion atau pengaturan gerakan
  2. Fungsi sequencing atau pengaturan urutan kejadian
  3. Fungsi timeline atau pengaturan berjalannya animasi (playback)

Dalam fungsi motion, Ani mengimplementasikan fitur tweening yang terdapat di Adobe Flash. Dengan menggunakan ini, maka pembuat animasi cukup menentukan objek mana yang akan bergerak, ke mana bergeraknya dan dengan pergerakan seperti apa. Tipe pergerakan ini juga dikenal dengan nama easing karena sejatinya, transisi gerakan yang terjadi, dilakukan secara pelan-pelan dan bukan konstan atau mendadak.

Fungsi sequencing membuat kita bisa menentukan dengan mudah apa saja yang akan terjadi dalam animasi dan kemudian memainkan kejadian-kejadian ini dalam sebuah urutan. Dan dengan menggunakan timeline, maka kita bisa mengatur kapan animasi mulai bermain, kapan berhenti dan apa yang terjadi setelah berhenti. Anggap saja timeline ini sebagai kumpulan tombol yang biasa ada di player multimedia, seperti tombol play, stop, pause dan sebagainya.

Meski pada dasarnya ketiga fungsi ini bisa dilakukan dengan menggunakan fungsi-fungsi bawaan Processing, namun library ini akan memudahkan kita melakukan hal-hal dasar, namun esensial dalam animasi ini. Dengan demikian, energi kita bisa difokuskan untuk membuat kontennya.

Menggunakan Fungsi Motion Ani

Pada dasarnya, kebanyakan fungsi Ani bisa dipanggil dengan menggunakan sintaks:

Ani.to(objek, durasi, nama_variabel, tujuan, easing)

Di mana parameter-parameter tersebut menunjukkan:

  • objek: ini adalah objek yang akan digerakkan, bisa berupa objek yang kita buat sendiri, ataupun "this"
  • durasi: lamanya animasi berjalan, dinyatakan dalam detik
  • nama_variabel: ini adalah variabel mana yang akan digerakkan
  • easing: ini adalah tiper pergerakannya

Fungsi di atas sudah lebih dari cukup untuk memudahkan kita membuat sebuah pergerakan objek hingga menjadi animasi. Sebagai contoh, kita bisa membuat animasi untuk menggerakkan sebuah lingkaran ke posisi acak setiap 2 detik sekaligus mengganti warnanya. Mari kita simak:

Contoh 9-1 Menggunakan Fungsi Motion Ani

// mengimpor library Ani
import de.looksgood.ani.*;

// variabel x dan y adalah posisi lingkaran
// variabel colorG adalah warna di spektrum hijau
// variabel colorB adalah warna di spektrum biru
// variabel dia adalah ukuran lingkaran
float x = 256;
float y = 256;
int colorG, colorB;
int dia = 50;

void setup() {
  size(512,512);
  smooth();
  noStroke();

  // pemanggilan fungsi Ani.init(), ini wajib dilakukan
  Ani.init(this);
}

void draw() {
  background(255);
  fill(0, colorG, colorB);
  ellipse(x,y,dia,dia);

  // setiap 2 detik. defaultnya 1 detik = 60 frame
  if (frameCount%120 == 0) {
    // animasikan variabel x, y, colorG dan colorB
    // masing-masing animasi berjalan selama 2 detik
    Ani.to(this, 2, "x", random (width));
    Ani.to(this, 2, "y", random (height));
    Ani.to(this, 2, "colorG", random(255));
    Ani.to(this, 2, "colorB", random(255));
    Ani.to(this, 1, "dia", random(50,120));
  }

}

Kita bisa lihat dari contoh di atas bahwa bagian paling penting terjadi pada saat pemanggilan fungsi Ani.to(), karena di sinilah animasi berlangsung. Animasi kita lakukan terhadap beberapa properti dari lingkaran, yakni posisi, warna dan ukurannya. Fungsi Ani.to() kemudian melakukan perubahan terhadap variabel-variabel ini dalam durasi tertentu selama program berjalan. Cukup mudah bukan?

Latihan 9-1

Kembangkan contoh 9-1 untuk menganimasikan lebih dari 1 bentuk secara bersamaan

Menggunakan Easing dalam Ani

Easing, adalah metode untuk melakukan transisi dalam animasi. Jadi ketika sebuah nilai berubah katakan dari 10 ke 100, maka seiring berjalannya waktu, nilai ini bisa jadi tidak berubah secara linear, tapi mengikuti sebuah grafik tertentu. Aplikasi grafik ini dalam sebuah gerakan animasi kemudian dikenal dengan nama easing, karena secara harfiah, perubahan nilainya pelan-pelan, tidak mendadak.

Ani menyediakan beberapa jenis easing yang bisa langsung kita gunakan untuk memuluskan pergerakan dalam animasi kita. Untuk menggunakannya, kita cukup menambahkan parameter kelima dalam pemanggilan fungsi Ani.to(). Contoh berikut akan menunjukkan penggunaan easing dalam membuat animasi sebuah lingkaran yang bergerak. Perhatikan perbedaan hasilnya ketika terjadi penggunaan metode easing yang berbeda

Contoh 9-2 Menggunakan Easing di Ani

import de.looksgood.ani.*;

float x = 300;
float y = 550;

void setup() {
  size(600, 600);
  smooth();
  noStroke();

  Ani.init(this);
}

void draw() {
  background(255);
  fill(0, 150, 100);
  ellipse(x, y, dia, dia);

  // setiap tombol yang berbeda akan menggerakkan bola dengan
  // efek easing yang berbeda pula
  if (keyPressed) {
    if (key == '1') {
      Ani.to(this, 2, "y", 50, Ani.BOUNCE_OUT);
    } else if (key == '2') {
      Ani.to(this, 1.5, "y", 550, Ani.ELASTIC_IN);
    }
  }
}