Posted by : Unknown
Rabu, 30 Mei 2018
Saya akan memberikan penjelasan singkat tentang Finite State
Machine (FSM) pada game beserta contohnya dan Pseudocode. Pertama apakah itu
FSM, 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.
PSEUDOCODE
using UnityEngine;
using System.Collections;
public class GameFSM : MonoBehaviour {
public enum
{LevelAwal, diam, melompat, benda, soal, kunci, menembak, menghindar, musuh,
nyawa, GameOver, NextLevel}
public TurnStates state;
public bool 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:}
break;
case
TurnStates.diam:
if(Mulai()) {*
state = jump;}
break;
case
TurnStates.melompat:
if( Melompat()) {*
state = benda;}
break;
case
TurnStates.benda:
if( mencari
benda()) {* state = soal;}
if (menghindar ()) {*
state = Musuh;}
break;
case
TurnStates.benda:
if( mencari Benda
()) {* state = soa;}
if(Menembak()) {*
state = Musuh;}
break;
case
TurnStates.musuh:
if( Terkena Enemy
()) {* state = nyawa;}
Break;
case
TurnStates.soal:
if( benar ()) {*
state = kunci;}
else (salah ()) {*
state = nyawa;}
break;
case
TurnStates.nyawa:
if(nyawa masih
tersedia ()) {* state = diam;}
else (nyawa masih
habis ()) {* state = GameOver;}
Break;
case TurnStates.Kunci:
if( berhasil
menjawab()) {*state = NextGame;}
break;
case
TurnState.NextGame :
if (DoneLevel ()) {*
state = LevelBaru;}
break;
}
yield return null;
}
}
Tri Atmojo Sulaiman
Pend. Teknik Informatika
Referensi :
http://gamedevelopertips.com/finite-state-machine-game-developers/
https://forum.unity.com/threads/implementing-finite-state-machine-ai-c.287401/