Extended FSM - Daniel Betke

32
EFSM na przyk EFSM na przyk á á adzie silnika adzie silnika GRACE GRACE Daniel Betke Reality Pump

Transcript of Extended FSM - Daniel Betke

Page 1: Extended FSM - Daniel Betke

EFSM na przykEFSM na przyk adzie silnikaadzie silnikaGRACEGRACE™™

Daniel BetkeReality Pump

Page 2: Extended FSM - Daniel Betke

Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine

Czym jest FSM?

– Nie jest to straszny lataj cy potwórspaghetti! (FSM)

- abstrakcyjny, matematyczny,iteracyjny model zachowaniasystemu dynamicznego

- Zbiór stanów i opartych o tablicdyskretnych przej mi dzy jegokolejnymi stanami

Page 3: Extended FSM - Daniel Betke

Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine

Budowa typowej maszyny stanów

– stany

– tablica przej

– stan pocz tkowy

– Akcje: entry, exit, input, transition

Page 4: Extended FSM - Daniel Betke

Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine

Zastosowania ogólne

- narz dzie teoretyczne do tworzenia itestowania oprogramowania

- modele znajduj cy zastosowanie wmatematyce i logice, lingwistyce,filozofii, czy biologii

Page 5: Extended FSM - Daniel Betke

Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine

Zastosowania w silniku gry

– Interface u ytkownika (UI)– Sztuczna inteligencja (AI)– Animacja– Sterowanie przep ywem impulsów wej ciowych

(Input)– Zarz dzanie zadaniami

Page 6: Extended FSM - Daniel Betke

Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine

wniosek?

Obejmuje wszelkie dziedziny, zatemMo e zosta wykorzystany wsz dzie!

Page 7: Extended FSM - Daniel Betke

Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine

Rodzaje maszyn stanów

– Deterministyczne –niedeterministyczne

– Event-driven finite state machine

– Virtual finite state machine

– Abstract State Machine Language

– EFSM (Extended Finite StateMachine)

Page 8: Extended FSM - Daniel Betke

EFSMEFSM –– ExtendedExtended FiniteFinite StateState MachineMachine

Jest to rozszerzony model tradycyjnegoautomatu sko czonego w którym mamy dlaokre lonych wej okre lone wyj cia.

W modelu EFSM przej cie nast puje wmomencie gdy spe nione zostanie wyra enie (ifstatement) z one z okre lonego zestawuwyzwalaczy (triggers)

Page 9: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Dlaczego ten rodzaj FSM?

– one warto ci wej ciowe

– wi cej elementów dodatkowych

– rozszerzony zestaw akcji

– dodanie dodatkowego poziomu abstrakcji przezgrupowanie stanów i nadawanie im dodatkowych

ciwo ci

Page 10: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Za enia

– ‘Niezakodowana’ na sztywno– Przeno na– atwo wprowadzania modyfikacji– Mo liwo prze adowywania ‘w locie’– Dodatkowy poziom abstrakcji: typy, grupy,

ciwo ci– niedeterministyczna

Page 11: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Budowa wewn trzna

– Manager– Szablon Maszyny– Kontekst Maszyny– Grupa– Stan– Przej cie– Wyzwalacz– Dodatkowe akcje

Page 12: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Manager

– Zarz dzenie ca ym podsystemem: adowanie zestawupotrzebnych szablonów maszyn

– Tworzenie/przechowywanie szablonów maszyn

– Prze adowywanie maszyn ‘w locie’

Page 13: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Szablon Maszyny

– Przechowuje struktur ca ego automatu

– Zarz dza yciem kontekstów

– Tworzenie/kasowanie grup

– Tworzenie/kasowanie stanów

Page 14: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Kontekst Maszyny

– Zawiera minimalistyczn ilo informacjipotrzebn do odtworzenia bie cego stanuca ego automatu: stan aktualny, stan poprzedni,warto ci wyzwalaczy

– Zajmuje si aktualizacj maszyny i wyzwalaczy

– Przechowuje obiekty wyzwalaczy

Page 15: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Grupa

– Abstrakcyjny twór którego jedynym zadaniem jestgrupowanie stanów w zestawy o takich samych

ciwo ciach

– Mo na je interpretowa dowolnie w silniku

Page 16: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Stan

– Okre la konkretnie wybrany stan danego zjawiska jakiemaszyna opisuje

– Posiada dodatkowe w ciwo ci: typ i warto , maskaytych wyzwalaczy

– Przechowuje list przej wychodz cych – grafskierowany

Page 17: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Typy stanów

– Normalny

– Flaga

– Przerywacz

– Linker

Page 18: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Przej cie

– Najistotniejszy punkt ca ego podsystemu

– Przechowuje wyra enie (parser) i jego wynik

– Wskazuje stan docelowy

Page 19: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Wyzwalacz

– Obiekt przechowuj cy warto

– Baza dla specjalizacji ró nego rodzaju wyzwalaczy

Page 20: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Rodzaje wyzwalaczy

– Event

– Manual

– State

– Time Based

Page 21: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Rozszerzenia u yte w naszej implementacji:Dodatkowe akcje

OnUpdateGlobalVariables( float dt );

OnInterruptEnd( DWORD prevId, DWORD currId, BOOL& getBackToPrevNode);

OnStateChangeCallback( DWORD prevId, DWORD currId, DWORDunitId, BOOL interrupt );

OnTriggerCallback( DWORD srcId, DWORD destId, DWORD unitId,int slot, int type, .. );

OnTransitionUpdate( DWORD srcId, DWORD destId, DWORDsrcGroupId, DWORD destGroupId );

Page 22: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Rozszerzenia u yte w naszej implementacji:

Wyzwalacze wej ciowe:

– Global Variables

– Triggers

Page 23: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACEPrzyk ad dzia ania – dla ka dej postaci, obiektu

HandleFlagsStates()HandleInterruptsStates()

m_machineContext->Update( dt )

m_callbackObj->OnUpdateGlobalVariables( dt );

m_parentMachine->Update( m_timer, dt, this )

unit->Update( dt )

czas

context->LoadMachineState();

context->m_currentState->Update( dt )

context->GetCallbackObject()->OnStateChangeCallback(..)

context->GetCallbackObject()->OnInterruptEnd(..)

context->SaveMachineState();

Page 24: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACEBudowa zewn trzna - format pliku

<SCRIPT type="StatesMachine_Template" textid="SM_MONSTER_IDLE" ><GROUP id="0" textid="SM_GROUP_NOTASSIGNED" name="Not Assigned" /><GROUP id="2" textid="SM_GROUP_MOVE" name="Moving" /><GROUP id="3" textid="GROUP_DEATH" name="Death" /><!--====--><STATE id="0" textid="SM_STATE_Idle" name="Idle" group="SM_GROUP_MOVE"

type="SNT_START" /><!--====--><STATE id="103" textid="STATE_Death" name="Death" group="GROUP_DEATH"

type="SNT_INTERRUPT" /><!--====--><!--====--><LINK srcTextId="STATE_Death" destTextId="SM_STATE_Idle">

<TRANSITION expr="td and ressurect" pri="0" /></LINK>

</SCRIPT>

Page 25: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACEBudowa zewn trzna - Edytor

Page 26: Extended FSM - Daniel Betke

EFSM w silniku GRACE jako przykEFSM w silniku GRACE jako przyk adadniedeterministycznego FSMniedeterministycznego FSM

Czym ten niedeterminizm si przejawia?Nie da si zawsze okre li nast pnegostanu:

• losowo• przerwania• mo liwo wytworzenia si cyklu

Czy w czym to przeszkadza?

Page 27: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Problemy

– ono automatów

– Nie zawsze da si operowa na grupach

– Mo liwo stworzenia nie wiadomie cyklu

Page 28: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Metody debugowania

– wizualna z poziomu edytora

– czasu rzeczywistego

– zapisywanie cie ki przej w trakcie pracy

Page 29: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Zmiany na przysz

– Implementacja akcji ca kowicie poza kodem – skrypt

– Dok adniejsze narz dzia do testowania automatów

– Rozszerzy zakres ich u ycia na ca y silnik

– Zrównoleglenie

Page 30: Extended FSM - Daniel Betke

EFSM w silniku GRACEEFSM w silniku GRACE

Dok adny opis i szczegó y implementacyjne b dziemo na niebawem ciagn ze strony:

http:/hacra.eu

Page 31: Extended FSM - Daniel Betke

Dzi kujemy

Page 32: Extended FSM - Daniel Betke

rróódd aa

• http://en.wikipedia.org/wiki/Finite-state_machine• http://en.wikipedia.org/wiki/EFSM• http://en.wikipedia.org/wiki/Virtual_finite_state_machine• http://en.wikipedia.org/wiki/Event_driven_finite_state_machine• http://en.wikipedia.org/wiki/State_diagram• http://xw2k.nist.gov/dads/HTML/• http://en.wikipedia.org/wiki/Automata-based_programming• http://research.microsoft.com/en-us/projects/asml/• http://www.spinroot.com/spin/Doc/Book91_PDF/F8.pdf• http://en.wikipedia.org/wiki/Cycle_(graph_theory)