FSM (Finite State Machine)


Finite State Machine juga termasuk dalam teori bahasa automata yang dapat menerima inputan seperti FA, akan tetapi di dalam finite state machine ini juga dapat menerima inputan dan juga dapat mengeluarkan output sehingga dalam finite state machine terdapat dua type finite state machine yakni :

a.      Finite State Machine With Output / Tranducer
1)      Meanly machine :  Diantara state terdapat fungsi transisi
2)      Moore machine : Output yang ditentukan oleh state
b.      Finite State Machine With No output
1)      Finite State Automata
2)      Sering digunakan untuk pengenalan bahasa


Contoh implementasi FSM di game yaitu di game Pacman, yaitu pada karakter musuhnya (ghost). 4 hantu yang dikenal dengan nama Pinky, Clyde, Blinky, dan Inky.


Di mana ada 5 state: Run From Player, Rise, Die, Chase Player, dan Move Randomly. Dan Antar state terdapat aturan transisi agar dapat melakukan perubahan state, misal ketika karakter utama memakan 'pellet' maka si musuh ini akan berubah state dari state 'mengejar' ke state 'menjauh' dari karakter utama, dan seterusnya.

Contoh lain misalnya di game sepakbola: ada state shoot, tackle, heading, dll. Di game jenis FPS: tembak, cover, reload, get health, dll. Dan masih banyak lagi contoh implementasi FSM di berbagai macam genre game.

Finite State Machine di dunia AI Game Programming, merupakan salah satu teknik yang paling sering digunakan. Alasannya yaitu:
1. Implementasinya mudah dan cepat
2. Memudahkan proses debugging. Karena telah dipecah menjadi kepingan yang lebih kecil, proses debugging kalau terjadi behavoiur yang tidak semestinya, menjadi lebih mudah
3. Proses komputasi yg minimal, karena sejatinya FSM hanyalah conditional statement yang dikemas dalam bentuk yang lebih elegan.



Kekurangannya:
1. Behaviour dari agen mudah diprediksi, karena tidak ada searching dan atau learning di dalam agen tersebut
2. Karena mudah diimplementasi, kadang programmer langsung tembak di eksekusi tanpa melakukan desain FSM terlebih dahulu. Biasanya akan terjadi FSM yang terfragmentasi
3. Timbul apa yang dinamakan dengan State Oscillation yaitu ketika batasan antara dua buah state terlalu tipis:

Tugas

Pseudocode :

module Aksi
 def do_next
    @sekarang = @selanjutnya
    case @sekarang
    when :invite
      choose_round_partner
      @selanjutnya = :Acc
    when :Acc
      choose_round_partner
      @selanjutnya = :Tunggu
    when :Decline
      choose_round_partner
      @selanjutnya = :Tunggu
    when :Input
      @selanjutnya = :Dengarkan
    when :Dengarkan
      @selanjutnya = :respond
    when :respond
      evaluate_invites
      @selanjutnya = :update_in
    when :Tunggu
      @selanjutnya = :update_out
    when :update_in, :update_out
      update_edges
      clear_invites
      @selanjutnya = :exchange
    when :exchange
      update_colors
      clear_invites
      @selanjutnya = :pilih
    when :pilih
      reset_variables
      choose_role
    when :done
      @selanjutnya = :done
    end
  end
end
FSM :



Penjelasan :

Pseudocode dan FSM disatas menjabarkan mengenai perilaku komputasi tunggal dari proses invite caracter yang dapat di lakukan dengan pemilihan antara input nama dengan invite langsung ketika bertemu untuk pemilihan sendiri.. pemilihan secara input nama akan membutuhkan waktu yaitu menunggu caracter lain mendengarkan request kemudian di response baru data akan di update sementara untuk invite secara langsung akan terdapat 2 state antara di terima dan di tolak kemudian menuju update, ketika semua kriteria terpenuhi maka proses selesai dan jika tidak maka akan kembali ke proses start.




Komentar

Postingan Populer