ํ๋ ์ด์ด ๊ธฐ๋ฅ์ด ๋ฌ๋ฆฌ๊ธฐ, ๊ตฌ๋ฅด๊ธฐ, ์ ํ, ๊ณต๊ฒฉ์ด ์๋ค๊ณ ์๊ฐํด๋ณผ ๋,
ํ๋ ์ด์ด๊ฐ ์ ํ๋ฅผ ํ๋ ๋์์ ๋ฌ๋ฆฌ๊ธฐ์ ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํ์ง๋ง ๊ตฌ๋ฅด๊ธฐ๋ ๋ชปํ๊ฒ ๋ง๋ค๊ณ ์ถ์ด.
๋ฌ๋ฆฌ๋ ๋์์๋ ๊ตฌ๋ฅด๊ธฐ ์ ํ ๊ณต๊ฒฉ์ด ๋ค ๊ฐ๋ฅํ๊ณ ,
๊ณต๊ฒฉ ๋์ค์๋ ๋ฌ๋ฆฌ๊ธฐ ๊ตฌ๋ฅด๊ธฐ ์ ํ๊ฐ ๋ชจ๋ ๋ด์๋ผ.
์ด๊ฑธ ๊ตฌํํ๋ ค๋ ๊ฒฝ์ฐ Best Practice๊ฐ ๋ญ๊น? ๋ฌผ๋ก ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ค์ํ๊ฒ ์๊ฒ ์ง๋ง, ์บก์ํ๋ฅผ ์ ๋๋ก ํด์ ๊ตฌํํด๋ณด๊ณ ์ถ๊ฑฐ๋ .
๋ด๊ฐ ์๊ฐํด๋ณธ ๊ฒฝ์ฐ๋ ๋ย ๊ฐ์ง๊ฐ ์๋๋ฐ
1. ์บ๋ฆญํฐ ํด๋์ค์์ ๋นํธํ๋๊ทธ๋ง๋ฅ ๊ฐ ๋์์ ๊ฐ/๋ถ๊ฐ ์ฌ๋ถ๋ฅผ ๋ค๊ณ ์๋๋ค. ๊ธฐ๋ฅ ํด๋์ค์์ ๋์ ์ค์๋ ์ด ๋นํธํ๋๊ทธ๋ฅผ ์์ ํด์ค.
๊ทผ๋ฐ ์ด ๊ฒฝ์ฐ ์บ๋ฆญํฐ ํด๋์ค์ ๋ค๋ฅธ ๊ธฐ๋ฅ ๋ชจ๋๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋๋ฌด ๋์์ง๋๊ฒ ์ฐ๋ ค๊ฐ ๋ผ. ๊ฒฐ๊ตญ ์บ๋ฆญํฐํด๋์ค์ ๋ค๋ฅธ ๊ธฐ๋ฅ ํด๋์ค๊ฐ ์๋ฐฉํฅ ์ฐ๊ฒฐ์ด ๋์ด๋ฒ๋ฆฌ์์...?
2. ๊ฐ ๊ธฐ๋ฅ ํด๋์ค์์ ๋ค๋ฅธ ๊ธฐ๋ฅ ํด๋์ค์ ๋ํด ์๋ ๊ฐ๋ถ๊ฐ ์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
์ด ๊ฒฝ์ฐ ์ ๋ณด์๋์ ์คํจํ๊ฒ ์๋๊ฐ? ํ๋ ์๊ฐ์ด ๋ค์ด. ์์ธ ์ฒดํฌ ์ฝ๋๋ฅผ ์์ ํ ์ค ์จ์ค๋ค? ์ด๋ฐ ์์ ์ ๊ทผ์ด ๋ง์ด ๊ด์ฐฎ์๊ฑด๊ฐ?ย
๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด ๊ฐ๊ฐ ๊ธฐ๋ฅ์ ๋ํ ์์ธ์ฒ๋ฆฌ๋ฅผ ๋ค ๋ฌ์์ค์ผํ๊ณ ์ฝ๋๊ฐ ์ ์ ๊ธธ์ด์งํ ๋ฐ, ์ด๊ฑด ์๋ฌด๋ฆฌ๋ด๋ ์๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋๋ค.
์๋ฌด๋ฆฌ ์๊ฐํด๋ด๋ ๋ญ๊ฐ ํ๋ฅญํ ๋ต์์ ์๋๊ฒ๊ฐ์์... ํน์ ์ด์ ๊ด๋ จ๋ ์ข์ ์๊ฒฌ ์์๊น? ๋ฒ ์คํธ ํ๋ํฐ์ค๋ ์ด๋ป๊ฒ ํ๋ฉด ๋๋๊ฑธ๊น??
์์งํ ์ ๋ต์ ์๋ค๊ณ ์๊ฐํ๊ณ ์ฝ๋์คํ์ผ ์ฐจ์ด์. ๊ฑ ์บ๋ฆญํฐ ํด๋์ค์๋ค๊ฐ ์ฉ์ผ๋ก ๋ค ์ค์ ๋ฃ์์๋ ์๊ณ
๊ทธ๋ ๊ธดํ๋ฐ ์ ์ฐํ ๊ธฐ๋ฅ์ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ์ผ๋ฉด ์ข๊ฒ ๊ฑฐ๋ . ๊ทผ๋ฐ ์ก์ผ๋ก ๋๋ ค๋ฃ์ผ๋ฉด ๊ทธ๊ฒ ์์ฒ๋ด์๋๋๊น...
๊ฒ์์์ ์ํธ์ฐ๊ฒฐ์ ์ด์ฉ์๊ฐ ์๋๋ฏ. ๋๋ผ๋ฉด 1๋ก ํ๋ ๊ธฐ๋ฅํด๋์ค์ ์์ํด๋์ค ์์ฑํ๊ณ ๊ทธ๊ฑฐ ์์๋ฐ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค ๊ตฌํํ ๋ด์ ์บ๋ฆญํฐํด๋์ค์์ ๊ฐ์ฒดํ์ํค๋์์ผ๋ก ํ ๋ฏ?
ํ ... ๋ถ๊ฐํผํ ๋ฌธ์ ์ธ๊ฑด๊ฐ. ์ข์ ์๊ฒฌ ๊ณ ๋ง์ ๊ทธ๋ฌ๋ฉด ๋ณ ์ ์๋๋ณด๋ค
๊ฐ์ธ์ ์ผ๋ก FSM ๋ฐฉ์์ด ์ต์ ์ด๋ผ๊ณ ์๊ฐํจ
๋ฌธ์ ๋ ์ด ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ ์ถ๊ฐ/์ ๊ฑฐ ํ ๋๋ง๋ค ๊ด๋ฆฌ๊ฐ ์ ๋์์ใ ใ ์ ์ฐํ ์ถ๊ฐ์ ๊ฑฐ๊ฐ ๊ฐ๋ฅํ์ผ๋ฉด ์ข๊ฒ ์ด
์ด๋ฏธ ์๋ FSM์ ์คํ ์ดํธ ์ถ๊ฐํ๋๊ฑฐ ๋ณ๋ก ์์ด๋ ต์์
state๋ฅผ ์ถ๊ฐํ๋ ๊ฒ ์์ฒด๋ ์ ์ด๋ ต์ง. ๊ทผ๋ฐ ๋ฌธ์ ๋ ํ state์์ ๋ค๋ฅธ state๋ก ๋์ด๊ฐ๊ธฐ ์ํ ์กฐ๊ฑด์ ์์ฑํด์ค๋ ์ฝ๋๊ฐ ์ค๊ตฌ๋๋ฐฉ์ด ๋์ง ์์๊น? ๊ฐ๋ น ๋ฌ๋ฆฌ๊ธฐ jump state ๋์ค์๋ ๋ฌ๋ฆฌ๊ธฐ์ ๊ณต๊ฒฉ์ผ๋ก๋ง ๋์ด๊ฐ๊ฒ ๋ง๋ค์๋๋ฐ, ๋์ฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด dash state๋ฅผ ์ถ๊ฐํด์ผํ๊ณ , ์ด ๊ฒฝ์ฐ jump state์ ์ฝ๋๋ฅผ ๋ ์ถ๊ฐํด์ผ์์? ๋ฌด์๋ณด๋ค ์ด ๋ชจ๋ ๊ฒ ๋์ ์ผ๋ก ์งค ์ ์๋? ๋ฐํ์์์ ์ถ๊ฐ์ ๊ฑฐ๊ฐ ๋๋...??
๊ฒฝํ์ ์ฝ๋ ๊ธธ์ด์ผ ์ด์จ๋ ์ ๋ถ ํ ๊ณณ์ ๋ชจ์ด๋๊น ๊ด๋ฆฌํ๊ธฐ ํธํ์. ์ฌ๋ฌ ์คํ ์ดํธ์ ๋์์ ์กฐ๊ฑด์ ๊ฑธ ์๋ ์๊ณ , ๋ณต์์ state transition์ด ๊ฐ๋ฅํ ์ํฉ์์ ์ฐ์ ์์ ์ ํ๊ธฐ๋ ํ์คํ๊ณ ๋ฐํ์ ์ถ๊ฐ์ ๊ฑฐ๋ ์ ํ์ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๋ชจ์ ์บ์ฌ ๊ฐ์๊ฑธ ๋ฃ์ผ๋ ค๋ฉด ๋ช ๊ฐ์ง ํธ์ ์ด ํ์ํ๊ธด ํ ๋ฏ
fsm์ด ๋ต์ด๋ค
์ํํจํด์ ์ฌ์ฉํด๋ณด์์ค.
FSM์์ A์์ B๋ก ์ํ๊ฐ ์ ์ด๋๋๊ฑธ Transition์ด๋ผ๊ณ ํ์๋ค. ๊ฐ๋ น ๋ฌ๋ฆฌ๊ธฐ -> ์ ํ ๊ฐ ๋๋ ค๋ฉด, ๋ฌ๋ฆฌ๊ธฐ Update์์ ์ ํ์ด๋ฒคํธ๊ฐ ๋ค์ด์ค๋ฉด ์ ํ์ํ๋ก ChangeStateํด์ค์ผ ๊ฐ๋ฅํ๊ฑฐ์ง. ๊ทธ๋ฐ ๋ ผ๋ฆฌ๋ก A์์ ๊ฐ์์๋ ์ํ๋ค์ ์ ์ํด์ฃผ๋ฉด ๋จ. ์ด๊ฒ ๊ฐ์ฅ ๋ช ํํ ๋ฐฉ๋ฒ์. ๋ชจ๋ํ๋ ์ฝ์ง๊ฐ ์์. ๋๊ฐ ๋งํ์์. "๋ฌ๋ฆฌ๋ ๋์์๋ ๊ตฌ๋ฅด๊ธฐ ์ ํ ๊ณต๊ฒฉ์ด ๋ค ๊ฐ๋ฅ"์ด๋ผ๊ณ . ๊ทธ๋ง์ ๋ฌ๋ฆฌ๊ธฐ,๊ตฌ๋ฅด๊ธฐ,์ ํ๋ ์๋ก๋ฅผ ์์์ผ(์ฐธ์กฐ) ์ ๋ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด. ์ฐธ์กฐ๊ฐ ์๋ค๋๊ฑด, ์ด๋ ํ๋๊ฐ ๋ถ๋ฆฌ๋๋ฉด ์ ๊ธฐ๋ฅ์ ๋ชปํ๋ค๋๊ฑฐ. ๊ทธ ๋ง์ ๋ชจ๋์ด ์๋๊ฑฐ์ง.
๋๊ฐ bool๋ก ํ๋๊ทธ์ฒ๋ผ ์ ์ํด๋, ๊ฒฐ๊ตญ์๋ ๊ทธ bool๋ณ์๋ก ์ธํด ์๋ก ์์กด์ฑ(์ฐธ์กฐ)๊ฐ ์๊ธฐ๋๊ฑฐ์. ๋๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ์๊ตฌ๋ช ์ธ ์์ฒด๊ฐ ๋ชจ๋์ด ์๋จ. ๋ชจ๋ํฌ๊ธฐํ๊ณ ๊ทธ๋ฅ ๋ง๋ค์ด. FSMํด์ ์ฐ๋ ์ฝ๋๋ก ํ๋.
์ ์ฐํ๊ฒ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ํ๋ ์ฝ๋๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ผ์ด ์๊ฒผ์๋ ๋ฆฌํํ ๋งํ๋ ๊ฑฐ์ ์ด๋ค ์ฝ๋๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ์ฐํ๊ฒ ์ถ๊ฐํ ์ ์์ ๊ฑ ์ง๊ธ ์กฐ๊ฑด์์ ๊ฐ์ฅ ์ฐ์ํ๊ฒ ๋ง๋ค๋ฉด ๋จ
๊ทธ๋ฐ ๋น์ ์๊ฒ ์คํธ๋ํฐ์ง ํจํด์ ์ถ์ฒํฉ๋๋ค