LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (1)
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (2)
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (3)
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (4)
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (5)
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (6)
Beatem Up์ ์ก์ ์์คํ ๊ณผ ๋ชฌ์คํฐ AI ์ค๊ณ
๋์ ์ค๋๋๊ณค ๊ฐ์ ๋น์ ์ ๊ฒ์์ ๋ณด๊ณ ๊ธฐ๋ฅ๋ค์ ๋ถ์ํด๋ณด์๋ค.
๋ง๋ค๊ณ ์ ํ๋ ๊ฒ์์ ์ค๊ณํ๊ณ ์ ํ๊ณ , ์ด๋ป๊ฒ ๋ง๋ค์ด์ผ ํ ์ง ๋ชจ๋ฅธ๋ค๋ฉด, ๊ทธ ๊ฒ์์ด ๋ฃฐ์ด๋ ์ด๋ค ๋จํธ์ ์ธ ๊ธฐ๋ฅ์ ์์ ๋ก ํ์ด์ ์ฐ๋ฉด, ๊ทธ ์์์ ์ค์ ๋ฃฐ(์์คํ )์ ์ ์ถํ๊ธฐ๊ฐ ์ฉ์ดํ๋ค๊ณ ํ๋ค. (๊ฐ์ฒด์งํฅ๋ฐฉ๋ฒ๋ก ์์ ๋์์ธ ๋จ๊ณ๋ ๋น์ท?)
1.ํ๋ ์ด์ด ์บ๋ฆญํฐ๋ ํ๋ ์ด์ด๊ฐ ์ ๋ ฅ์ ํตํด ํ๋์ ์ปจํธ๋กค ํ๋ค.
2.๋ชฌ์คํฐ ์บ๋ฆญํฐ๋ AI๊ฐ ํ๋์ ์ปจํธ๋กค ํ๋ค.
3.์บ๋ฆญํฐ๋ ํ๊ฒฉ ๋ฐ์ผ๋ฉด ๊ฒฝ์งํ๋ค
4.์บ๋ฆญํฐ๋ ์ธ๊ฒ ํ๊ฒฉ ๋ฐ์ผ๋ฉด ์์ด๋ณธ์ด ๋๊ธฐ๋ ํ๋ค. (ํน์ ์ธ๊ฒ ๋ง์ง ์๋๋ผ๋ ๋ง์ด ๋ง์ผ๋ฉด ์์ด๋ณธ ๊ฐ๋ฅ)
5.ํ๋์ด๋ ์... ๋ญ๊ฐ ํ๋๊ฑธ ํ๋์ด๋ผ ํ๋ค! (ํฝ)
ใดํ๋์ ์คํธ๋ฆฌํธํ์ดํฐ์ ์ฅํ, ์ด๋ฅ๊ฒ, ์ ํ ์ฒ๋ผ ๋ญ๊ฐ๋ฅผ ํ๋๊ฒ์ ํ๋์ด๋ผ๊ณ ํจ.
ใด์ฝ๋๋ก ๋งํ์๋ฉด ์ ํด์ง ์๊ฐ๋์ ๋ฐ์ํ๋ ์ผ๋ จ์ ๋์์ด๋ผ๊ณ ์ ์ํ ์ ์๋ค.
ใด์ค์ํ ๊ฒ์ ์ด ํ๋์, ์๋ก ์ค๋ณตํด์ ์คํํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์) ๋ฌ๋ฆฌ๋ฉด์ ๊ฑท๋๊ฑฐ, ์ ์๋ฆฌ ํฌ์ + ์ ํ ๋ฑ
6.ํ๋์ ํ๊ฒฉํจ๊ณผ๊ฐ ์๋ค๋ฉด ์๋ ์บ๋ฆญํฐ์๊ฒ ํ๊ฒฉ์ ๊ฐํ๋ ๋ฒ์(ํํธ๋ฐ์ค)๋ฅผ ๋ง๋ค ์๋ ์๋ค.
์ด๋ฅผ ํตํด ๋ ์ค๋ฅด๋ ์์คํ ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
(๋น์ ์ ์์คํ )
ํ๋ ์ด์ด ์ปจํธ๋กค ์์คํ
๋ชฌ์คํฐ AI ์์คํ
ํ๋ ์์คํ
ํ๊ฒฉ ์์คํ
์ก์
์์คํ
๊ฒ์์ ๋ฐ์์ฑ์ด ์ต์ฐ์ ์ด๊ธฐ ๋๋ฌธ์, ์๋ฎฌ๋ ์ด์
๊ฒฐ๊ณผ๋ ์ต๋ํ ๋นจ๋ฆฌ๋์ค๋๊ฒ ์ข๋ค. ๋๋ฌธ์ Loop์์์ ์์คํ
์ฒ๋ฆฌ์์ ์์๊ฐ ๋งค์ฐ ์ค์ํ๋ค.
ํ๋ ์ด์ด๋ AI๊ฐ ํ๋์ ์ปจํธ๋กค ํด์ผํ๋ฏ๋ก Loop์์ ์ต์๋จ์ ์์นํ๊ณ ์๊ณ
๊ทธ ๋ค์ ํ๋ ์์คํ
์ AI๋ ์ปจํธ๋กค๋ฌ์์ ๋ฐ์ ์ ๋ณด๋ก ์ ํด์ง ํ๋์ ์ํํด์ผ ํ๋ฉฐ
๋ง์ฝ ํ๋ ์์คํ
์์ ํ๊ฒฉ(ํํธ๋ฐ์ค)์ด ์์ฑ๋์๋ค๋ฉด ํ๊ฒฉ ์์คํ
์์ ๋ฐ๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ฏ๋ก ๊ทธ ๋ค์์ ์จ๋ค.
ํ๋ ์์คํ (HardCodedActionSystem)
ํ๋ ์์คํ ์ ๋จ์ํ๋ค. FSM์ด๊ณ ๋ค์๊ณผ ๊ฐ์ ์ํ๋ค์ด ์๋ค
Idle,Angry,Beatup,MoveForward,TurnAround,SimpleAttack,JumpAttack
๊ณ ๋ธ๋ฆฐ์ ์ด๋, ๋๊ธฐ, ์ค์ผ๋์ง๊ธฐ, ์ ํ, ์กฐ๋กฑํ๊ธฐ, ๋ค๋์์ ๋ณด๊ธฐ, ๋น๊ธ๋น๊ธ ๋๊ธฐ ๊ฐ์ ๊ฒ๋ค ์ ๋ถ ํ๋์ด๋ค.
Component์ nextState์ ์ํํ๊ณ ์ ํ๋ ํ๋ state์ด๋ฆ์ ๋ฃ์ด์ฃผ๋ฉด ๋์ํ๋ค
ํ๋ ์ด์ด ์ปจํธ๋กค, ๋ชฌ์คํฐ AI ์์คํ (PlayerControlSystem,BTRuntimeSystem)
ํ๋ ์ด์ด ์ปจํธ๋กค์ ์ ์ Input์ ๋ฐ๋ผ ์ด๋ค ํ๋์ ํ๊ฒ ํ๋ฉด ๋๋ค. ๋ชฌ์คํฐ AI๋ Input์ด ์๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฃผ์ด์ง Logic์ ๋ฐ๋ผ ํ๋์ ํ๋ฉด ๋๋ ๊ฒ.
๋ชฌ์คํฐ๋ BehaviourTree๋ก ์์ฑํ์์ง๋ง, FSM์ผ๋ก ํด๋ ๋ฌด๋ฐฉํ๋ค. ๋ชฌ์คํฐ BT์์๋ ํน์ ๋ก์ง์ ๋ฐ๋ผ ๋ญ๊ฐ ํ๊ณ ์ ํ๋ ํ๋์ด ์๋ค๋ฉด HardCodedActionComponent์ nextState์ ์ธํ ํ๋ฉด ํด๋น ํ๋์ ์ํํ๋ค.
๊ทผ๋ฐ ์ฌ๊ธฐ์ ํ๋ ์ด์ด ์ปจํธ๋กค์ ์ข ๋ค๋ฅด๋ค.
ํ๋ ์ด์ด ์ปจํธ๋กค๊ณผ ๋ชฌ์คํฐ AI์ ์ฐจ์ด๋ ๋จ์ง
Input์ ์ ์ ๊ฐ ์ฃผ๋ or AI๊ฐ ์ฃผ๋ ์ฐจ์ด๋ง ์๋ ๊ฒ์ด ์๋๋ค.
ํ๋ ์ด์ด ์ปจํธ๋กค์๋ ๋ชฌ์คํฐ AI์๋ ์๋ ํ๋ ์ํ ์ค์ ํน์ ํ๋์ ๋ชปํ๋ ์ ์ฝ์ด๋ผ๋๊ฒ ์กด์ฌํ๋ค.
์1) ์์์๋, ๊ณต๊ฒฉA,B ์ ํ, ๋ฐฉํฅํค๋ก ์ด๋ ๋ค ๊ฐ๋ฅ
์2) ๊ณต๊ฒฉA์ค์๋ ๊ณต๊ฒฉB๋ง ์ฌ์ฉ๊ฐ๋ฅ ๋๋จธ์ง ๋ค ๋ชปํจ
์3) ์ฐ๋ฌ์ ธ ์์๋๋ ๋ค์ ์ผ์ด์๊ธฐ ์ ๊น์ง ์๋ฌด๊ฒ๋ ๋ชปํจ.
๋ชฌ์คํฐ๋ AI๊ฐ ๋์์์๋ ์์์ ๊ณต๊ฒฉ ํ๋์ ์ํํ์ง ์์ํ ๋ ํ๋ ์์คํ ์ ์ ์ฝ์ด ํ์๊ฐ ์๋๋ฐ
ํ๋ ์ด์ด๋ ์บ๋ฆญํฐ๊ฐ ๋์ ์์๋๋ ๋ฐฉํฅ๋ ๋ฒ๋ ๋ฒํผ๋ค์ ๋ง๊ตฌ ๋๋ฅผ ํ ๋๊น
๋์์์๋ ์ ํ ๋๋ ๋ค๊ณ ๋ฐ๋ก ์ ํ ํ๋์ ํ๋ฉด ์๋๋ ๊ฒ์ด๋ค.
๋๋ฌธ์ ํ๋ ์ด์ด ์ปจํธ๋กค ์์คํ ์ ํ๋ ์ํ๊ฐ ์ ์ด ์กฐ๊ฑด์ด๋ผ๋ ๊ฒ์ด ์ ์๋์ด ์๋ค. ๋์ถฉ ๋ค์๊ณผ ๊ฐ์ด ์๊ฒผ๋ค.
Stand์ค์ Move์ ์ด๋ ๋ฐฉํฅํค ๋๋ ์๋, Move์์ Stand์ ์ด๋ ๋ฐฉํฅํค๋ฅผ ๋ผ์์๋
์ผ๋ฐ๊ณต๊ฒฉ1 ์ค์ ํน์ ๊ตฌ๊ฐ ํ๋ ์์ ๊ณต๊ฒฉ๋ฒํผ์ ๋๋ฅด๋ฉด ์ผ๋ฐ๊ณต๊ฒฉ2๊ฐ ๋๊ฐ๊ฒ๋
๋ง๊ฑฐ๋ ์ฐ๋ฌ์ ธ์๋ ์ํฉ์ธ Beatup์ํ์๋ ์ด๋ ํ ์ํ์ ์ด๋ ๋ฐ์์ํจ
ํ๊ฒฉ ์์คํ
ํ๋ ์์คํ ๋ด์์ ํํธ๋ฐ์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, ํํธ๋ฐ์ค๋ด์ ์๋ ๊ฐ์ฒด๋ค์๊ฒ ์ผ๋ จ์ "ํจ๊ณผ"๋ฅผ ๊ฐํ๋ค.
ํจ๊ณผ๋ผ๋ ๊ฒ์ ์ฒด๋ ฅ์ ์ฐจ๊ฐ์ํค๋ ๋ฐ๋ฏธ์ง ์ฒ๋ฆฌ, ํ๋ ์์คํ ์์ "๊ฒฝ์ง" ํน์ "์์ด๋ณธ" ์ํ๋ก ๋ง๋ค์ด ๋ฒ๋ฆฌ๋ ๊ฒฝ์ง ํจ๊ณผ ์ฒ๋ฆฌ ๋ฑ์ด ์๋ค.
ํ๊ฒฉ ์์คํ ์ ์ด๋ฐ ํจ๊ณผ๋ฅผ ๋ฐ์์ผ ํ๋ค๊ณ ๋์ ๊ฐ์ฒด์ Tag๋ฅผ ํด๋ ๋ฟ์ด๋ฉฐ, ์ค์ ์ด ์ฒ๋ฆฌ๋ EffectDataConversionSystem์์ ์ฒ๋ฆฌํ๋ค.
(์ด์ ์ผ์ง์์ ํ๋ฒ ์ค๋ช ํ์ ์์)
์ ์ด๋ ๋ฌ๋ผ์ง ๊ฒ ์๋ค๋ฉด, ์์ ์๋ ๋ฐ๋ฅ xzํ๋ฉด์ผ๋ก๋ง ํํธ๋ฅผ ๊ฒ์ฌํ๋ค๋ฉด, ์ง๊ธ์ y์ถ ๊ฒ์ฌ๋ ํ๋ค๋ ์
๋น์ ์
์์คํ
์ฌ์ค ํ๋ ์ด์ด ์ปจํธ๋กค ํน์ ๋ชฌ์คํฐAI๋ณด๋ค ๋ ์ต์๋จ์ ์๋ ์์คํ ์ ๋ฐ๋ก ๋น์ ์ ์์คํ ์ด๋ค. ์ด ์์คํ ์ ํ์ฌ ์บ๋ฆญํฐ๊ฐ "๋ณดํต" ์ํ์ธ์ง, ํน์ "๊ฒฝ์ง", "์์ด๋ณธ" ์ํ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ์์คํ ์ด๋ค. ๋ชฌ์คํฐAI๋ ํ๋ ์ด์ด ์ปจํธ๋กค์ด๋ , ์บ๋ฆญํฐ๊ฐ ๊ฒฝ์ง,ํน์ ์์ด๋ณธ ์ํ๋ผ๋ฉด ๋ชจ๋ ํ๋์ ์ทจ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด ์์คํ ์ด ์ฐ์ ์ ์ผ๋ก ๋จผ์ ์ฒ๋ฆฌ๋๋ค. ๋๋ฌธ์ ๋ชฌ์คํฐ AI์ ๋์ ์ต์๋จ ์กฐ๊ฑด์๋ ํ์ฌ ๋น์ ์ ์์ ํ๋ํด๋ ๋๋ ์ํ์ธ์ง๋ฅผ ํ์ธํ๊ณ ๋์๊ฐ๊ฒ ๋์ด ์๋ค.
๋น์ ์ ๊ฒ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๊ฐ ๋ฌด๋ ค ์ผ๋ฐ,๊ฒฝ์ง,์์ด๋ณธ,์์ด๋ณธ๊ฒฝ์ง,๋ฐ๋ฅ,๋ฐ๋ฅ๊ฒฝ์ง,๊ธฐ์ ์ด 8๊ฐ๊ฐ ์๋ค...
๊ทธ๋ฅ ์ณ๋ง์ ๋ ๋์๊ฐ์ผ ํ ์ํ๋ค์ด ์ ๋ ๊ฒ ๋ง์ ๊ฒ์ด๋ค.
์ฌ์ค ๋น์ ์ ์ ๋ง๋ค๋ฉด์ ํ๋์ด๋ผ๋๊ฒ์ ์ ์ํ๊ณ ๋๋, ๊ฒฝ์ง๊ณผ ์์ด๋ณธ ์ญ์ ํ๋์ด์ด์, ํด๋น ํ๋ ์ญ์ ํ๋ ์์คํ ์ ์ํ์ ์ผ๋ถ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ค๋ฅธ ํ๋๊ณผ์ ๊ด๊ณ๊ฐ ๋ณต์กํด์ง๋ฉด์, ์ฝ๋๊ฐ ์ฝ๊ธฐ ํ๋ ์์ค์ผ๋ก ๊ฐ์ ํ์ฅ์ ์ด๋ ค์์ด ์์๋ค. (์ผ๋ฐ๊ณต๊ฒฉ ์ค์ ๋ง์ผ๋ฉด ๊ฒฝ์ง์ผ๋ก ํ๋์ด ์ ํ๋๋ฏ๋ก, ๊ฒฝ์ง๋ ํ๋์ด๋ผ๊ณ ํ ์ ์์)
์ด๋ฅผ ๋น์ ์ ์์คํ ์์ ๊ฒฝ์ง๊ณผ ์์ด๋ณธ, ๋์์๋ ์ํ๊ฐ์ ๊ฒ๋ค์ ๋์ ๊ด๋ฆฌํด์ค์ผ๋ก์, ํ๋ ์์คํ ์ ์ข๋ ์บ๋ฆญํฐ ๊ด์ ์์ ๋ฅ๋์ ์ผ๋ก ํ ์ ์๋ ํ๋ ์ํ์ ์งํฉ์ ๊ฐ๊น์์ก๋ค.
(์ํ๋ฅผ ๋๊ฐ๋ก ๋๋ ์ ๊ด๋ฆฌํจ)
๋ค์ ์ผ์ง์ ๋ด์ฉ์, ์์ ์์คํ ์ ์ด์ฉํ์ฌ ๊ณ ๋ธ๋ฆฐ์ ๋ง๋ ์ด์ผ๊ธฐ๊ฐ ๋ ์์ ์ด๋ค.
์ด๊ฑฐ ecs๋ง์? ์๊ธด๊ฒ ๊ทธ๋ฅ ๊ฐ์ฒด์งํฅ๊ฐ์๋ฐ ์ ๊ธฐํ๋ค