Fsm (automat finit) - tipuri de FSM, utilizați fsm

Fsm (automat finit) - tipuri de FSM, utilizați fsm
automat finit sau FSM este un termen care implică, de obicei, o așa numită mașină de stare finită sau, după cum se spune, uneori, aparatul de stat. Dar cel mai adesea încă, se utilizează reducerea FSM. FSM - o abstracție care este utilizat pentru a crea o logică, inclusiv jocuri de noroc. De exemplu, în general, orice obiect AI este FSM, tot felul de animație pot fi în general descris ca un FSM. Însăși starea de joc este de obicei descris ca un FSM. Chiar numele automat finit indică faptul că există un număr finit de stări și, prin urmare, programatorul poate descrie fiecare dintre ele și a stabilit comportamentul obiectului (fie un monstru, o navă spațială sau starea de joc), în această stare. În general, FSM este un lucru necesar și util, pentru că avem nevoie să înțelegem cum să-l folosească în practică.

De fapt, FSM este doar o „mașină“, care ar putea avea unele state diferite și la un moment dat în timp poate fi doar într-una dintre aceste stări. De exemplu, în cazul în care inamicul poate merge doar la nivel, pot ataca player-ul, și poate fi, de asemenea, ascunse, comportamentul său este ușor de configurat folosind automat finit cu trei stări: du-te, atac, ascunde. Dacă vom descrie acțiunile care urmează să fie efectuate de către inamic în fiecare dintre aceste trei state, iar apoi le vom trece pe niște legi (sau în ordine aleatorie) - un jucător există un sentiment că inamicul este înzestrat cu inteligență.

tabelul de tranziție FSM

În jocurile (și nu numai) este cel mai adesea descris nu numai stările posibile ale FSM, dar și tranziția norme (condiții) FSM de la un stat la altul. Cel mai adesea, atunci când se concep aceste reguli sunt prezentate sub forma unui tabel de tranziție de stare, deoarece tabelul care se numește „tabel de tranziție de stat“, făcând aluzie în mod clar faptul că acesta definește modul în care va fi tranziția (de tranziție), de la o stare la alta din starea sa FSM. Ei bine, de exemplu, un simplu tabel FSM ar putea arata ca:

munca FSM pe acest tabel va fi ca aceasta:

Starea curentă: Walk
Eu văd inamicul? Da. Am rândul său, la „atac“

Starea curentă: Atac
Eu văd inamicul? Nu. Am rândul său, să „meargă“

Starea curentă: Walk
Eu văd inamicul? Nu. Nu schimba starea.

Starea curentă: Atac
Eu văd inamicul? Da. Nu schimba starea.

Cu alte cuvinte, FSM primește date (de exemplu, date despre lumea de joc), și pe baza acestora, se pot schimba (sau nu schimba) starea sa actuală.

FSM, intrare și de ieșire de stări

Pentru comoditate, de obicei, în fiecare stat FSM a cerut, de asemenea, două funcții suplimentare: funcția de intrare în stat, și funcția de ieșire a statului. Motivele pentru utilizarea lor, puteți găsi o mulțime, dar eu voi cita doar una: aceste funcții vă permit să „pregătească“ obiectul la intrarea în stat sau la ieșirea din ea. Orice ar putea suna banal, aici sunt câteva exemple:

  • La intrarea în „go“, putem descărca animația de mers pe jos
  • Când ieșiți din „du-te“, putem descărca această animație, deoarece nu mai este nevoie de noi
  • În cazul în care „ascunde“ intrarea statului, putem aminti: în cazul în care ne-am decis să se ascundă de la care ne-am ascunde, în ce mod ne-am decis să meargă la punctul de-nychku ales)))

În cazul în care FSM nu este o entitate separată, ci este o parte a obiectului este de multe ori mai adaugă o funcție - funcția „execuție“ de stat. De exemplu, această caracteristică poate fi comutată „cadre“ de animație, pentru o plimbare lină sau pune în aplicare unele AI-ului, sau ambele împreună.

Metode de punere în aplicare a FSM

Există două metode cel mai frecvent utilizate de punere în aplicare a FSM:

  1. FSM static. Comportamentul automat finit este determinată în timpul compilării programului și nu pot fi schimbate în timpul rulării. Această metodă asigură cea mai mare performanță și este mai ușor de implementat.
  2. Metoda dinamică de implementare a FSM. Comportamentul mașinii de stat poate fi modificat de rulare prin adăugarea sau eliminarea (on / off) a posibilelor stări ale FSM. Mult mai flexibilă metodă, dar este mult mai dificil de implementat și este utilizat rar.

Vreau să te arunci un alt articol interesant puțin cu privire la punerea în aplicare a FSM statice - încercați să dau seama, îți va place ideea.

Asta e tot ce am vrut să-ți spun despre FSM. În următoarea lecție, vă voi arăta exemple de FSM în C ++.

Mai multe despre acest subiect: