1. Finite State Machine (FSM)
Pada
kesempatan kali ini, Saya akan memberikan penjelasan singkat tentang Finite State
Machine (FSM) pada game sederhana beserta Pseudocode. Finite State Machine
(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). Sebagai sebuah metodologi
perancangan sistem kontrol, penerapan FSM telah banyak diterapkan pada
perangkat lunak, khususnya pada game. Kali ini saya membuat FSM sederhana yaitu
berupa game yang nantinya bila mendapatkan koin maka akan muncul sebuah soal
atau pertanyaan.
(Gambar 1. FSM Game)
1.
Pseucode
using
UnityEngine;
using
System.Collections;
public
class GameFsm:MonoBehaviour
{
public
enum TurnStates{Mulai, diam, berlari, musuh, koin, bertahan, soal, point,
NextLevel, Nyawa, GameOver}
public
TurnStates state;
public
boll gameInProgress = true;
void
Start ()
{
state
= GameFSM.Mulai.Init;
startCoroutine("TurnFSM");
}
private
IEnumerator TurnFSM ()
{
while
(gameInProgress)
{
switch
(state){
case
TurnStates.LevelAwal:
if(Permainan
Awal()){*state = diam:}
if(terkena()){*state
= musuh;}
break;
case
TurnStates.diam:
if(Mulai()){*state
= berlari;}
if(dikejar()){*state
= musuh;}
break;
case
TurnStates.berlari:
if(berlari()){*state
= koin;}
break;
case
TurnStates.koin:
if(mencari
koin()){*state = soal;}
if(bertahan()){*state
= NextLevel:}
break;
case
TurnStates.bertahan:
if(sembunyi()){*state
= NextLevel;}
break;
case
TurnStates.soal:
if(benar()){*state
= point;}
else(salah()){*state
= nyawa;}
break;
case
TurnStates.Nyawa:
if(nyawa
masih ada()){*state = diam;}
else(nyawa
habis()){*state = GameOver;}
break;
case
TurnStates.Point:
if(mencapai
target()){*state = NextGame;}
break;
case
TurnStates.NextLevel:
if(DoneLevel()){*state
= LevelBaru;}
break;
}
yeild
return null;
}
}
1. Penjelasan
Game :
Dalam
game yang saya buat pada gambaran berbentuk FSM, yaitu pertama kali ke halaman
utama, kemudian memilih tombol start untuk dapat memulai sebuah permainan. Player
akan berada di posisi diam terlebih dahulu sebelum dijalankan, kemudian player
akan berjalan untuk mendapatkan koin. Jika player diam saja, maka besar
kemungkinan akan dikejar oleh musuh. Sedangkan jika player berjalan atau
berlari yaitu untuk menghindari musuh. Di sela-sela permainan tersebut,
nantinya akan muncul beberapa soal atau pertanyaan yang wajib di jawab. Jika jawaban
benar, maka permainan akan berlanjut ke level selanjutnya, dan jika jawaban
salah, maka nyawa dan kesempatan akan berkurang -1. Jika dalam kesempatan
tersebut, player masih menjawab salah maka nyawa akan terus berkurang, jika
nyawa habis dianggap tamat atau game over. Untuk dapat melanjutkan permainan
kembali, bisa memulainya dari awal.
Referensi
http://kingkyshared.blogspot.com/2015/01/penjelasan-fsm.html
https://forum.unity.com/threads/trouble-with-a-switch-case-finite-state-machine-in-c.107979/
Referensi
http://kingkyshared.blogspot.com/2015/01/penjelasan-fsm.html
https://forum.unity.com/threads/trouble-with-a-switch-case-finite-state-machine-in-c.107979/
Tidak ada komentar:
Posting Komentar