24
TIP 163 Game Engine Topik 4 (Pert 5) Atribut Objek, Gerak Terkoordinasi, Blending Dosen: Aditya Wikan Mahastama

Atribut, Gerak Terkoordinasi, Blending

  • Upload
    lythu

  • View
    226

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Atribut, Gerak Terkoordinasi, Blending

TIP 163

Game Engine

Topik 4 (Pert 5)

Atribut Objek, Gerak Terkoordinasi, Blending

Dosen: Aditya Wikan Mahastama

Page 2: Atribut, Gerak Terkoordinasi, Blending

Last Week Review

Silakan kumpulkan tugas pemrograman kedua minggu lalu untuk direview bersama ☺

Apa yang anda temukan?

Page 3: Atribut, Gerak Terkoordinasi, Blending

Last Week Addition: Atribut Objek

Atribut objek adalah sifat yang dimiliki oleh sebuah objek game, dalam bentuk nilai yang dapat dikuantisasi.

Kombinasi beberapa atribut objek dapat tampak seolah-olah sebagai perilaku objek (behavior) saat berinteraksi dengan objek lainnya.

Atribut sebuah objek dapat dipengaruhi oleh objek lainnya.

Page 4: Atribut, Gerak Terkoordinasi, Blending

Contoh atribut yang ada sejak game muncul pertama kali adalah life/health (nyawa), kemudian berkembang menjadi atribut-atribut lainnya seperti speed, agility, dsb.

Contoh pseudocode struktur data atribut objek dan perubahannya adalah sebagai berikut:

int hero.life = 100; int monster.life = 100;

if (monster touches hero){

hero.life = hero.life – 1; }

Page 5: Atribut, Gerak Terkoordinasi, Blending

if (hero hits monster){

hit = random (5..10); monster.life = monster.life – hit;

}

Untuk game yang kompleks, bisa terdapat juga atribut side dan group yang digunakan sebagai indikator pengelompokan beberapa objek dengan kesamaan pihak atau kesamaan peran.

Page 6: Atribut, Gerak Terkoordinasi, Blending

Gerak Terkoordinasi

Gerak terkoordinasi adalah bagaimana objek-objek yang merupakan bagian dari sebuah kelompok besar dapat bergerak secara teratur.

Gerak yang teratur ini dapat berupa keseragaman gerak objek dalam suatu saat (disebut juga formasi atau formation).

Bentuk lain adalah respon gerak yang muncul sebagai wujud locomotion dari behaviour berkelompok yang telah dibuat (coordinated response).

Page 7: Atribut, Gerak Terkoordinasi, Blending

Formation

Formasi mengatur agar gerakan setiap objek dikendalikan dalam bentuk barisan tertentu. Formasi ini pada umumnya mengikuti formasi militer yang sudah ada, gunanya untuk menjaga ritme gerak, menjaga keutuhan kelompok, dan ada pula yang berguna untuk melindungi objek yang lebih lemah.

Setiap formasi pasti memiliki pusat formasi yang dapat berupa satu objek tertentu, atau koordinat tengah dari populasi objek terpilih. Koordinat ini dapat dicari

Page 8: Atribut, Gerak Terkoordinasi, Blending

dengan rata-rata, menggunakan klasifikasi, atau clustering.

Contoh pseudocode penentuan titik pusat dengan rata-rata posisi objek:

total_x = 0; total_y = 0;

for(i=0;i<objects;i++){

total_x = total_x + object[i].x; total_y = total_y + object[i].y;

}

groupcenter_x = total_x / objects; groupcenter_y = total_y / objects;

Page 9: Atribut, Gerak Terkoordinasi, Blending

Formation

Setiap objek nantinya harus memiliki jarak yang teratur dari pusat formasi. Keteraturan ini dapat dicapai dengan menjaga jarak objek tersebut dengan jarak objek lain dalam formasi.

Cara ini sebenarnya digunakan juga oleh manusia dalam mengatur barisan.

Contoh pseudocode formasi melingkar dari sejumlah objek:

fdistance = 10;

Page 10: Atribut, Gerak Terkoordinasi, Blending

for(i=0;i<objects;i++){ if (distance_to_groupcenter > fdistance){

seek(groupcenter_x, groupcenter_y); }

for(j=0;j<objects;j++){

if(i!=j){

if (object[i]_distance_to_object[j] <

fdistance){ flee_from(object[j]);

}

}

}

}

Page 11: Atribut, Gerak Terkoordinasi, Blending

- Coordinated Response

-

Respon terkoordinasi merupakan sebuah behaviour tree di mana objek-objek yang merupakan anggota sebuah kelompok akan memberikan reaksi yang sama (termasuk steering behaviour) saat ada perubahan tertentu pada atribut kelompok atau atribut anggota kelompok.

Contoh coordinated response di antaranya:

1. Jika ada anggota kelompok yang diserang, maka mengubah formasi menjadi bertahan (dengan objek paling lemah berada di tengah), mengubah

Page 12: Atribut, Gerak Terkoordinasi, Blending

steering behavior setiap anggota menjadi seek atau pursue lawan, dan object behaviour menjadi mode tempur.

2. Jika ada anggota kelompok yang diserang dan tidak memungkinkan untuk melawan, anggota yang masih dalam jarak aman mencari tempat persembunyian.

Coordinated response saat ini tidak hanya berorientasi gerak, tetapi lebih digolongkan pada pengambilan keputusan, sehingga pada ulasan masakini dimasukkan ke dalam game tactics.

Page 13: Atribut, Gerak Terkoordinasi, Blending

Kombinasi Steering Behaviour

Adalah kombinasi beberapa steering behaviour pada saat yang sama, sehingga locomotionnya akan berupa satu arah gerak resultan yang merupakan perpaduan dari dua atau lebih steering behaviour.

Saat ini hampir semua game menerapkan kombinasi, karena kondisi game world yang kompleks. Contohnya adalah seorang karakter yang akan menuju kota, (seek posisi kota), kemudian diganggu monster, akan mencoba evade sambil mempertahankan seek-nya.

Page 14: Atribut, Gerak Terkoordinasi, Blending

Blending

Langsung mengkombinasikan beberapa steering behaviour yang ada, sehingga mendapatkan resultan langsung.

Contoh pada pseudocode berikut:

Function go_down(){ //fungsi steering

y = y + 1; //locomotion

}

Function go_right(){

x = x + 1;

}

Page 15: Atribut, Gerak Terkoordinasi, Blending

main(){

go_down();

if(enemy_seen){

go_right();

}

}

Jika melihat adanya musuh yang menghalangi, maka karakter di atas akan tetap bergerak ke bawah ditambah dengan bergerak ke kanan.

Page 16: Atribut, Gerak Terkoordinasi, Blending

Weighted Blending

Mengkombinasikan beberapa steering behaviour yang ada dengan memberikan bobot, sehingga arah gerak resultan dapat disesuaikan dengan keperluannya.

Contoh pada pseudocode berikut:

Function go_down(){ //fungsi steering

y = y + 1; //locomotion

}

Function go_right(int enemydist){

x = x + ((1/enemydist) * 5);

}

Page 17: Atribut, Gerak Terkoordinasi, Blending

main(){

go_down();

if(enemy_seen){

enemydist = get_enemy_distance;

go_right(enemydist);

}

}

Jika melihat adanya musuh yang menghalangi, maka karakter di atas akan tetap bergerak ke bawah ditambah dengan bergerak ke kanan sesuai dengan jarak musuh, semakin dekat semakin menghindar.

Page 18: Atribut, Gerak Terkoordinasi, Blending

Priority Blending

Mengkombinasikan beberapa steering behaviour yang ada tetapi memberi prioritas arah steering bagi yang lebih penting jika terlalu menyimpang.

Contoh pada pseudocode berikut:

Function go_down(){ //fungsi steering

y = y + 1; //locomotion

}

Function go_right(){

x = x + 1;

}

Page 19: Atribut, Gerak Terkoordinasi, Blending

main(){

go_down();

if(enemy_seen){

if (x < 10){ //limiting priority

go_right();

}

}

}

Jika melihat adanya musuh yang menghalangi, maka karakter di atas akan tetap bergerak ke bawah ditambah dengan bergerak ke kanan, tetapi jika

Page 20: Atribut, Gerak Terkoordinasi, Blending

terlalu jauh ke kanan, akan semakin jauh dari target, sehingga pergerakan menghindar dibatasi sampai jarak tertentu saja.

Page 21: Atribut, Gerak Terkoordinasi, Blending

Cooperative Arbitration

Melakukan blending dengan memunculkan steering behaviour baru pada kondisi tertentu saja.

Contoh: sudah dilakukan pada semua contoh di atas!

Page 22: Atribut, Gerak Terkoordinasi, Blending

Eksperimen Kombinasi Steering (1):

1. Dari game yang terakhir, buatlah agar hero bergerak menuju ke titik tertentu yang sudah ditentukan dengan click mouse (hero seek a coordinate).

2. Jika sepanjang jalan menuju ke titik tersebut hero menemui wall (satu wall saja yang boleh menghalangi jalan), hero otomatis menghindar.

Boleh pilih menggunakan blending yang mana (salah satu saja).

Page 23: Atribut, Gerak Terkoordinasi, Blending

Eksperimen Kombinasi Steering (2):

1. Buatlah goblin yang wandering dengan cara: goblin seek ke titik tertentu, kemudian setiap beberapa milidetik, titik tersebut berubah secara acak. Jika goblin melihat hero dalam jarak pandang minimum, goblin memburu hero. Jika hero terhalang wall, goblin tidak dapat melihat (kembali wandering).

2. Dari game yang terakhir, buatlah agar hero bergerak menuju ke titik tertentu yang sudah ditentukan dengan click mouse (hero seek a coordinate).

Page 24: Atribut, Gerak Terkoordinasi, Blending

3. Jika sepanjang jalan menuju ke titik tersebut hero menemui goblin, hero otomatis mencari tempat persembunyian (wall).