Langsung ke konten utama

Construct 2 Indonesia Manual: Bab Elemen Dasar (Project Primitives) - 5. Event 1. Cara Kerja Event

Jika Anda baru mengenal Event pada  Construct 2, bagian ini akan menjelaskan bagaimana Event bekerja. Ini adalah bacaan penting untuk pemula! Anda akan bisa membuat game yang jauh lebih baik dan lebih andal dengan pemahaman menyeluruh tentang bagaimana Event bekerja.

Untuk mempelajari cara menambahkan dan mengedit Event, lihat 3.11. Event Sheet View.

Event dirancang agar mudah dibaca dan intuitif “Just Work”. Namun, Event memiliki cara kerja yang spesifik dan terdefinisi dengan baik yang dijelaskan di sini.

Event bekerja dengan menyaring (Filtering) Instance yang secara spesifik memenuhi beberapa persyaratan. Action kemudian dijalankan hanya untuk Instance tersebut. Misalnya: perhatikan Event berikut ini:


Dalam contoh ini, ‘health’ adalah Instance Variable dari ‘Monster’. Ketika Instance ‘Bullet’ bertabrakan dengan Instance: ‘Monster’, maka Condition Event terpenuhi. Instance spesifik ‘Bullet’ and ‘Monster’ yang bertabrakan dalam game “diambil” (Pick) oleh Event tersebut. Action hanya berjalan di Instance yang “diambil” (Picked). Jika ada Instance ‘Bullet’ dan ‘Monster’ lainnya dalam Layout, mereka tidak akan terpengaruh oleh Action: Substract 1 from health dan Action: Destroy. Akan sangat sulit untuk membuat game yang bagus, jika setiap ‘Bullet’ melukai setiap ‘Monster’!

Cara lain untuk memahami sebuah Event adalah “Jika semua Condition terpenuhi maka jalankan Action pada Instance yang memenuhi persyaratan (Condition) tersebut".


Multiple Condition

Menambahkan lebih banyak Condition ke Event, akan semakin menyaring (Filtering) Instance untuk menjalankan Action. Sebagai contoh:


Event ini berjalan dengan langkah-langkah seperti berikut:

  1. Pertama, semua ‘Monster’ yang hanya ada di layar (Screen) ‘diambil’ (Picked).

  2. Kemudian, dari semua ‘Monster’ yang ada di layar, dikurangi/dibatasi hanya untuk  ‘Monster’ dengan ‘health’ yang kurang dari 5.

  3. Action membuat semua ‘Monster’ yang ada di layar dan memiliki ‘health'  kurang dari 5 akan secara langsung menghadap ke arah ‘Player’. ‘Monster’ yang berada di luar layar atau memiliki ‘health’ = 5 atau lebih, tidak akan terpengaruh.

Oleh karena itu, dengan menggunakan beberapa Condition, Anda dapat menjalankan Action hanya pada beberapa Instance yang memenuhi beberapa kriteria. Para pengguna bahasa pemrograman atau lainnya mungkin mengenali ini sebagai Logic: “AND”. Semua Action suatu Event harus dipenuhi agar Action berjalan. Jika tidak ada ‘Monster’ yang ada di layar atau di layar tapi tidak memiliki ‘health’ yang kurang dari 5, Action tidak berjalan sama sekali.


Unreferenced Objects (Object yang tidak direferensikan)

Coba lihat di Event berikut:


Jika User menekan tombol Space pada keyboard dan Instance Variable: ‘PowerupEnabled’ dari ‘Player’ diaktifkan, maka Action akan melakukan: Monster: Destroy. Perhatikan bahwa tidak ada Condition yang menyaring atau memilih ‘Monster’ dalam Event ini. Dalam kasus ini, semua Instance: ‘Monster’ hancur (Destroyed). Dengan kata lain, jika suatu Event tidak merujuk suatu Object dalam Condition, maka Action berlaku untuk semua Instance dari Object tersebut.

Cara kerjanya begini: Condition mulai dengan ‘Mengambil’ (Pick) semua Instance, dan kemudian menyaringnya. Jika tidak ada Condition, semua Instance tersebut masih dalam kondisi ‘Terambil’ (Picked), jadi Action itu akan mempengaruhi semua Instance.


Picking resets between Events (Pengambilan di-Reset di antara Event)

Setelah blok Event selesai dilaksanakan, Event berikutnya dimulai dari awal. Condition akan mulai ‘Mengambil’ (Pick) semua Instance kembali.

Di sisi lain, Sub-event (baris yang tampak menjorok (Indented) ke kanan) terus berlanjut dari tempat asal Event induknya. Sebuah Sub-event selanjutnya akan menyaring semua Instance yang ‘Ditinggalkan’ oleh Event yang terjadi sebelumnya. Jika sebuah Event memiliki dua Sub-event, keduanya memilih dari rangkaian Instance yang sama dengan yang ‘Ditinggalkan’ oleh Event induk (Parent Event) – Sub-event kedua tidak terpengaruh oleh Sub-event yang pertama. Dengan kata lain, Event pada tingkat ‘Indentasi’ yang sama selalu memilih dari rangkaian Instance yang sama, dan Event pada tingkat ‘Indentasi’ lebih rendah selalu bekerja berdasarkan Instance yang diturunkan dari Event atasnya (induk), dan seterusnya.


Object: System

Dalam Construct 2 Object: System merupakan fungsionalitas yang tertanam (Built-in). Ini tidak ada Instance-nya. Ini berarti kebanyakan Condition untuk System tidak ‘Mengambil’ Instance: apakah ‘True’ atau ‘False’. Jika Condition: False, Event berhenti berjalan, jika ‘FALSE’, Event berlanjut tanpa perubahan terhadap Instance yang ‘Diambil’ (Picked). Ada pengecualian, meskipun: jika suatu Condition untuk System menggunakan suatu Object, misalnya: Pick random Instance, maka itu akan mempengaruhi Object yang ‘Diambil’ (Picked) tersebut.

Action untuk System tidak berjalan pada Object yang ‘Diambil’: Action hanya berjalan jika semua Condition dari Event terpenuhi.


Event berjalan dari atas ke bawah

Urutan Event sangat penting. Setiap Event diperiksa sekali per ‘Tick’ (sekitar 60 kali per detik pada sebagian besar komputer), dan dijalankan dari atas ke bawah di Event Sheet. Layar digambar sekali setiap Event telah berjalan, lalu prosesnya dimulai lagi. Ini berarti jika satu Event melakukan sesuatu dan Event selanjutnya membatalkannya, Anda tidak akan pernah melihat bahwa ada sesuatu yang terjadi.

Hal yang sama berlaku terhadap yang di dalam Event – Condition diperiksa dari atas ke bawah, dan Action dijalankan dari atas ke bawah

Namun, Trigger (Pemicu) adalah pengecualian. Lihat panah hijau di sebelah kiri Keyboard: On Space pressed dari contoh sebelumnya:



Ini mengindikasikan bahwa Event dipicu (Triggered). Berbeda dengan Event yang dijalankan sekali per ‘Tick’, Event ini hanya berjalan (Fired) atas sesuatu yang benar-benar terjadi. Dalam kasus ini, Event berjalan saat user menyentuh tombol Space pada keyboard. Tidak pernah diperiksa di waktu yang lain. Karena pemicu (Trigger) berjalan pada Event yang terjadi, Event tersebut tidak diperiksa berdasarkan urutan dari atas ke bawah seperti Event lainnya. Ini berarti urutan Trigger relatif terhadap Event lain yang tidak menjadi prioritas (kecuali relatif terhadap Trigger lain dari tipe yang sama, karena Trigger juga berjalan dari atas ke bawah).

Hanya ada satu Trigger dalam satu Event, karena dua Trigger tidak bisa berjalan (Fired) bersamaan. Namun, beberapa Trigger dapat ditempatkan di blok 'OR' (lihat bagian berikutnya).


‘OR’ Block (Baris ‘OR’)

Seperti disebutkan sebelumnya, semua syarat harus dipenuhi agar sebuah Event berjalan. Ini disebut ‘Logical AND’, karena “kondisi 1 DAN kondisi 2 DAN kondisi 3 ...” dll harus benar (TRUE). Namun, Anda bisa mengubah sebuah Event untuk dijalankan bila ada ‘beberapa’ Condition yang benar. Ini disebut ‘Logical OR’, karena Event akan berjalan jika “kondisi 1 ATAU kondisi 2 ATAU kondisi 3 ...” adalah benar (TRUE).

Normalnya blok bekerja sebagai blok ‘AND’. Untuk membuat blok ‘OR’, klik kanan blok  tersebut  dan  pilih  Make ‘Or’ block.  Kemudian  akan  ditampilkan  dengan:  - or - di antara setiap Condition, seperti yang ditunjukkan di bawah ini.


Perhatikan bahwa normalnya Anda hanya dapat memasukkan satu Trigger dalam sebuah Event, namun Anda dapat memasukkan beberapa Trigger di blok ‘OR’, dan Event akan berjalan jika ada Trigger yang dijalankan.


Looping Condition (Condition: Pengulangan)

Terdapat beberapa Event yang melakukan Loop, yang berarti mereka berulang kali berulang kali melakukan Action. Perhatikan panah melingkar hijau di contoh di bawah untuk menunjukkan ini.


Ini berarti saat Layout dimulai, Action: Create object berulang sebanyak 10 kali. Hasil akhirnya adalah 10 ‘Monster’ dibuat pada posisi (x, y) acak (random) di Layout pada saat dimulai (Startup).

Ada juga Condition yang bisa mengikuti Condition: Repeat. Ini diuji pada masing-masing pengulangan juga, dan harus ‘TRUE’ untuk Action yang harus dijalankan. Bahkan ada lebih dari satu ‘LOOP’ di sebuah Event, tapi ini jarang terjadi.


Family dan Container

Perhatikan bahwa Family memilih Instance mereka secara terpisah dari Object Type dalam Family. Untuk informasi lebih lanjut, lihat bagian Picking Family in Event dalam entri manual pada 4.4.7. Family.

Container adalah fitur canggih yang juga bisa membuat kelompok Instance dapat selalu ‘Diambil’ (Picked) secara bersama-sama. Untuk informasi lebih lanjut lihat entri manual pada 4.4.8. Containers.


Ikhtisar

Dengan menggunakan sistem Event ini, dimungkinkan untuk membuat logika yang canggih untuk game dengan cepat dan mudah. Ini adalah alternatif yang sangat kuat daripada bahasa Scripting atau pemrograman, tapi lebih mudah bagi orang non-teknis dalam menggunakannya.

Meskipun bagian ini menggambarkan bagian penting dari Event System, namun bagian ini tetap belum mencakup semuanya. Sisa bagian Event mencakup lebih banyak fitur yang dapat Anda gunakan dalam Event tersebut. 5. Behavior reference, 6. Plugin reference, dan 7. System reference juga mencakup semua Condition, Action dan Expression dalam Construct 2.



Komentar