Extended FSM - Daniel Betke
-
Upload
skn-shader -
Category
Documents
-
view
1.114 -
download
0
Transcript of Extended FSM - Daniel Betke
EFSM na przykEFSM na przyk adzie silnikaadzie silnikaGRACEGRACE™™
Daniel BetkeReality Pump
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
Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine
Budowa typowej maszyny stanów
– stany
– tablica przej
– stan pocz tkowy
– Akcje: entry, exit, input, transition
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
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
Automat skoAutomat sko czonyczony -- FiniteFinite StateState MachineMachine
wniosek?
Obejmuje wszelkie dziedziny, zatemMo e zosta wykorzystany wsz dzie!
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)
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)
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
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
EFSM w silniku GRACEEFSM w silniku GRACE
Budowa wewn trzna
– Manager– Szablon Maszyny– Kontekst Maszyny– Grupa– Stan– Przej cie– Wyzwalacz– Dodatkowe akcje
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’
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
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
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
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
EFSM w silniku GRACEEFSM w silniku GRACE
Typy stanów
– Normalny
– Flaga
– Przerywacz
– Linker
EFSM w silniku GRACEEFSM w silniku GRACE
Przej cie
– Najistotniejszy punkt ca ego podsystemu
– Przechowuje wyra enie (parser) i jego wynik
– Wskazuje stan docelowy
EFSM w silniku GRACEEFSM w silniku GRACE
Wyzwalacz
– Obiekt przechowuj cy warto
– Baza dla specjalizacji ró nego rodzaju wyzwalaczy
EFSM w silniku GRACEEFSM w silniku GRACE
Rodzaje wyzwalaczy
– Event
– Manual
– State
– Time Based
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 );
EFSM w silniku GRACEEFSM w silniku GRACE
Rozszerzenia u yte w naszej implementacji:
Wyzwalacze wej ciowe:
– Global Variables
– Triggers
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();
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>
EFSM w silniku GRACEEFSM w silniku GRACEBudowa zewn trzna - Edytor
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?
EFSM w silniku GRACEEFSM w silniku GRACE
Problemy
– ono automatów
– Nie zawsze da si operowa na grupach
– Mo liwo stworzenia nie wiadomie cyklu
EFSM w silniku GRACEEFSM w silniku GRACE
Metody debugowania
– wizualna z poziomu edytora
– czasu rzeczywistego
– zapisywanie cie ki przej w trakcie pracy
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
EFSM w silniku GRACEEFSM w silniku GRACE
Dok adny opis i szczegó y implementacyjne b dziemo na niebawem ciagn ze strony:
http:/hacra.eu
Dzi kujemy
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)