Finite-States Machine (FSM) dan Pseudocode

A. Definisi FSM

Ada beberapa definisi mengenai Finite State Machine (FSM) atau sering juga disebut dengan Finite State Automata (FSA).
  1. FSM didefinisikan sebagai perangkat komputasi yang memiliki input berupa string dan output yang merupakan satu dari dua nilai yang dapat di-accept dan reject (Rich : 2009).
  2. Finite Automata adalah model matematika sistem dengan masukan dan keluaran diskrit. Sistem dapat berada di salah satu dari sejumlah berhingga konfigurasi internal disebut state (Hariyanto : 2004).
  3. FSM adalah sebuah metodologi perancangan sistem kontrol yang menggambarkan tingkah laku atau prinsip kerja sistem dengan menggunakan tiga hal berikut: State (Keadaan), Event (kejadian) dan action (aksi). Pada satu saat dalam periode waktu yang cukup signifikan, sistem akan berada pada salah satu state yang aktif. Sistem dapat beralih atau bertransisi menuju state lain jika mendapatkan masukan atau event tertentu, baik yang berasal dari perangkat luar atau komponen dalam sistemnya itu sendiri. Transisi keadaan ini umumnya juga disertai oleh aksi yang dilakukan oleh sistem ketika menanggapi masukan yang terjadi. Aksi yang dilakukan tersebut dapat berupa aksi yang sederhana atau melibatkan rangkaian proses yang relatif kompleks (Setiawan : 2006).

B. Kelebihan FSM

FSM memiliki beberapa kelebihan (Brownlee, 2010), diantaranya :
  1. Sederhana, sehingga mudah diimplementasikan
  2. Bisa diprediksi responnya
  3. Komputasi ringan
  4. Relatif fleksibel
  5. Merupakan metode AI lama yang bisa digunakan pada berbagai sistem
  6. Mudah ditransfer dari abstrak menjadi kode program

C. Kelemahan FSM

Selain memiliki banyak kelebihan, FSM juga mempunyai beberapa kelemahan (Brownlee, 2010), diantaranya :
  1. Karena sifatnya bisa diprediksi, maka implementasi pada game kurang disukai
  2. Implementasi pada sistem yang lebih besar lebih sulit karena pengaturan dan pemeliharaannya jadi kompleks
  3. Sebaiknya hanya digunakan pada sistem dimana sifat sistem bisa didekomposisi menjadi state
  4. Kondisi untuk transisi state adalah tetap

D. Contoh FSM pada Game

Contoh Gambar FSM
Berikut adalah Pseudocode Game:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FSMGameku : MonoBehaviour {
public enum {MenuUtama,start,player,berlari,item level,
musuh,nyawa player,level,skor, waktu,GameOver,reward,GameSelesa

public TurnStates state;
public bool gameInProgress = true;
void Start () {
state = FSMgameku.Mulai.Init;
StartCoroutine ("TurnFSM");
}
private IEnumerator TurnFSM (){
while(gameInProgress){
switch(state){
case 0:
if(permainan dimulai())
{Diam :;}
}
break;
{
case 1:
if( Masuk Level ())
{Pernyataan:}
}
break;
{
case 2:
if( mencari jalan())
{berlari:}
}
break;
{
case 3:
if( mencari benda())
{item:}
if( menghindar musuh())
{Bertahan;}
}
break;
{
case 4:
if( mencari Benda ())
{Item:}
if(serang musuh())
{Musuh;}
}
break;
{
case 5:
if( Terkena musuh ())
{Nyawa Player:}
}
break;
{
case 6:
if( Masuk Level ())
{Pernyataan:}
}
break;
{
case 7:
if(nyawa masih tersedia ())
{Diam:}
if(nyawa masih habis ())
{GameOver:}
}
break;
{
case 8:
if(Memulai permainan ())
{Masuk level:}
}
break;
{
case 9:
if( berhasil menjawab())
{Mendapatkan Reward:}
}
break;
case 10:
if( Reward())
{Game Selesai:}
}
break;
}
}

Penjelasan dari Pseudocode Game di atas: 
Dalam game yang saya buat sesuai gambaran diatas berbentuk FSM, pertama kali ke menu utama untuk memilih level dengan mengklik tombol level. Pada opsi ini bebas untuk memilih level mengklik tombol Level yang tersedia maka akan diarahkan ke tampilan game survival. Player akan berlari menghindari musuh untuk mendapatkan item yang akan mengarahkan ke level selanjutnya. Disini player mempunyai 3 nyawa yang akan membuat bertahan hidup, jika nyawa habis maka akan terjadi game over dan kembali ke menu utama. Setiap level akan terkunci jika tidak dimainkan secara berurutan. Setiap level mempunyai jumlah waktu dan skor yang berbeda. Jika dalam menjawab soal sampai kehabisan waktu maka akan langsung game over dan kemudian bisa mengulang menjawab pertanyaan kembali pada level tersebut. Setiap penyelesain level akan mendapatkan reward berupa bintang sebanyak 3 jika menyelesaikan tiap level dengan sempurna dan sebaliknya. Saat semua level sudah selesai dimainkan maka game dianggap tamat.

E. Sumber Referensi

http://kingkyshared.blogspot.com/2015/01/penjelasan-fsm.html
http://dikabram.blogspot.com/2018/05/finite-state-machine-fsm-dan-pseudocode.html


Komentar