pengantar teknologi game



Pengantar Teknologi Game (tugas 2)

Game prosessing 

Ducks


Algoritma Minimax

Untuk melakukan perhitungan simulasi permainan inilah, digunakan algoritma standar di dalam bidang kecerdasan buatan (artificial intelligence, AI) yang sudah dikembangkan sejak lama, yaitu Game Theory, terutama algoritma yang disebut Minimax. Sesuai namanya, algoritma minimax adalah aturan untuk permainan zero-sum 2 pemain, yang berusaha meminimalkan kemungkinan kalah sambil memaksimalkan kemungkinan menang untuk pemain yang akan melangkah.

Di kedalaman 1 (dan kedalaman ganjil lainya), posisi papan akan menentukan nilai untuk pemain yang akan melangkah saat ini (current player), sehingga di kedalaman ganjil ini algoritma minimax memilih langkah bernilai maksimal sebagai langkah terbaik. Sebaliknya di kedalaman 2 (dan kedalaman genap lainnya), posisi papan akan menentukan nilai untuk pemain lawan yang akan melangkah berikutnya (opponent player), sehingga di kedalaman genap ini algoritma minimax memilih langkah bernilai minimal sebagai langkah terbaik.

Sebagai ilustrasi sampai kedalaman dua bisa digambarkan dengan tabel berikut:

B memilih B1
B memilih B2
B memilih B3
A memilih A1
+3
−2
+2
A memilih A2
−1
0
+4
A memilih A3
−4
−3
+1

Ketika A memilih langkah A1 dilanjutkan dengan B memilih langkah B1, posisi papan yang terbentuk bernilai +3. Demikian pula untuk A1 → B2 nilainya -2, A1 → B3 nilainya +2 dst. Sekarang mari kita coba aplikasikan algoritma minimax untuk menghitung langkah terbaik bagi pemain A.

Terhadap langkah A1 (kedalaman 1) misalnya valid moves pemain B adalah B1, B2 dan B3 (kedalaman 2), dan langkah terbaik menurut algoritma minimax didapat dengan mencari langkah bernilai minimal (karena di kedalaman 2), yaitu B2 (bernilai -2). Demikian pula terhadap langkah A2 yang terbaik bagi B adalah B1 (bernilai -1), dan terhadap A3 adalah B1 juga (bernilai -4). Selanjutnya, nilai untuk langkah pemain A (kedalaman 1) adalah nilai yang 'dikembalikan' dari pemain B di kedalaman 2, yaitu A1 adalah -2, A2 adalah -1, dan A3 adalah -4. Kemudian untuk kedalaman 1 ini algoritma minimax mencari nilai maksimal sebagai langkah terbaik, yaitu A2 (bernilai -1).


Untuk kedalaman lebih dari dua, cara 'berpikir' algoritma minimax dapat digambarkan sebagai pohon permainan (game tree) seperti pada gambar di atas. Di lokasi paling dalam (disebut lokasi node daun atau leaf node), dalam hal ini kedalaman 4, dilakukanlah perhitungan nilai posisi papan yang selanjutnya 'dikembalikan' ke node pada kedalaman di atasnya terus hingga sampai lokasi paling atas (di sebut akar atau root). Panah merah menunjukkan nilai yang dikembalikan dari langkah terbaik pilihan algoritma minimax ke kedalaman di atasnya. Demikianlah, kita dapat melihat algoritma minimax bergantian memilih langkah dengan nilai minimal dan maksimal sebagai langkah terbaik sesuai dengan kedalamannya. Dengan algoritma ini komputer dapat 'berpikir' sampai kedalaman tertentu untuk menentukan langkah terbaik untuk memenangkan permainan.

Tetapi pada prakteknya, algoritma minimax kini tidak pernah digunakan lagi, karena algoritma ini harus memperhitungkan semua valid moves, sehingga memerlukan waktu yang sangat lama. Sebagai gantinya telah dikembangkan beberapa improvisasi dari minimax seperti algoritma AlphaBeta, NegaScout dll. yang dapat melakukan pemangkasan game tree supaya tidak perlu memperhitungkan semua valid moves, sehingga dapat 'berpikir' dalam waktu jauh lebih cepat.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

SCAN CONVERSION






Pengantar Teknologi Game (tugas 1)

Tugas Pengantar Teknologi Game
Softskill
Nama: arie.winoto
NPM:  5A411203
Kelas: 3IA01 (Transfer)

SCAN CONVERSION
     


SCAN CONVERSION
       Scan Conversion merupakan metoda untuk memetakan titik ke dalam suatu pixel. Scan Conversion dapat dilakukan terhadap Line (garis), polygon, ataupun garis lengkung (kurva). Bicara soal garis, garis merupakan bentuk dasar dari sebuah gambar. Sedangkan garis terbuat dari bentuk primitif yaitu sebuah titik. Terdapat beberapa algoritma pembuatan garis yang sudah umum digunakan. Algoritma tersebut terdiri atas :
       1.      Algoritma DDA
       (Digital Differential Analyzer) Merupakan algoritma untuk menggambar garis yang sederhana. Algoritma garis ini  menggunakan perhitungan dx maupun dy, menggunakan rumus dy m . dx. Garis dibuat menggunakan dua endpoint, yaitu titik awal dan titik akhir. Setiap koordinat titik yang membentuk garis diperoleh dari perhitungan, kemudian dikonversikan menjadi nilai integer.
       Langkah-langkah membentuk garis menurut algoritma DDA adalah :
1.     Tentukan dua titik yang akan dihubungkan dalam pembentukan garis
2.     Tentukan titik awal yaitu dan titik akhir .
3.     Hitung dx x1x0 dan dy y– y0
4.     Tentukan step = max( |dx| , |dy| )
5.     Hitung penambahan koordinat pixel XInc dx / step dan YInc dy step
6.     Koordinat selanjutnya (x+XIncy+yInc)
7.     Posisi pada layar ditentukan dengan pembulatan nilai koordinat tersebut
8.     Ulangi nomor 6 dan 7 untuk menentukan posisi pixel berikutnya. sampai x=x1dan y=y1.
       2. ALGORITMA GARIS BRESSENHAM
       Algoritma Bresenham pada tahun 1965, melakukan perbaikan dari algoritma perhitungan koordinat piksel. Prosedur untuk menggambar kembali garis dengan membulatkan nilai x atau y ke bilangan integer memerlukan waktu. serta variabel x,y maupun m memerlukan bilangan real karena kemiringan merupakan nilai pecahan. Bressenham mengembangkan algoritma klasik yang lebih menarik, karena hanya menggunakan perhitungan matematik dengan bantuan bilangan integer. Dengan demikian tidak perlu membulatkan nilai posisi pixel setiap waktu. Langkah-langkahnya adalah sebagai berikut :
1.     Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
2.     Tentukan salah satu titik disebelah kiri sebagai titik awal (x0,y0) dan titik lainnya sebagai titik akhir (x1,y1)
3.     Hitung dx, dy, 2dx dan 2dy-2dx
4.     Hitung parameter P= 2dy – dx
5.     Untuk setiap xk sepanjang garis dimulai dengan k=0
-  Bila P< 0 maka titik selanjutnya adalah (xk+1, yk) dan Pk+1=Pk+2dy
-  Bila tidak maka titik selanjutnya adalah (xk+1, yk+1) dan Pk+1=Pk+2dy-2dx
6.     Ulangi nomor 5 untuk menentukan posisi pixel selanjutnya sampai x=x1 dan y=y1
       Dalam pembuatan garis, ada beberapa hal yang harus diperhatikan, hal tersebut ialah :
       -          Ketebalan garis (thickness) dan
       -          Bentuk tepi garis (ends).
       Bentuk tepi garis ini dibagi menjadi 3, yaitu butt, round, square. Bentuk tepi garis butt akan memberikan garis sampai akhir (berhenti garis tepat di akhir), tanpa ekstensi baris. Bentuk tepi garis round adalah default yang sering digunakan. Bentuk tepi garis square akan memberikan ujung persegi, dengan perpanjangan garis.
Contoh dari bentuk tepi garis tersebut dapat di lihat di gambar bawah ini.
Line Caps
       Selain tepi garis, garis juga dapat digabungkan. Penggabungan garis (joining) terbagi menjadi :
-          Mitter >> titik pertemuan 2 garis lurus yang membentuk sudut lancip.
-          Round >> titik sudut pertemuan yang membulat.
-          Bevel >> titik sudut pertemuannya tampak terpotong rata.
-          None >> titik sudut pertemuan yang terpotong agak membentuk siku.
Joining Line

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS