์ด์ ์ผ์ง
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (1)
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (2)
์ด์ ์ผ์ง์์ ์ธ๊ธํ๋ ๊ฒ์ฒ๋ผ ์ด๋ฒ์๋ ์์ด๋ณธ์ ๊ตฌํํ์์
์์ด๋ณธ๊น์ง ์ง์ํ๋ ค๋ค ๋ณด๋ FSM ์ํ๊ฐ ๋ง์ด ์ถ๊ฐ๊ฐ ๋์๋ค.
๋์ ์ค๋๋๊ณค์ด๋ ๋์ ์คํ์ดํฐ๋ฅผ ๊ณ์ ๋๋ ค๋ณด๋ฉด์ ์ ์ถํด๋ณธ ์ํ๋จธ์ ์ด๋ค. ์ค์ ๋ก ์ฝ๋๋ ์์ ์ฒ๋ผ ๊ตฌํ์ด ๋์ด์๋ค.
1. ๊ณต๊ฒฉ์ก์ ์ํ์์ ํํธ๋ฐ์ค๋ฅผ ์ํํ๋ค.
2. ํํธ๋ฐ์ค๋ ๋ฒ์, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฒ์์ ๊ฑธ๋ฆฐ ํ๊ฒ๋ค์๊ฒ ์ ์ฉํ ํจ๊ณผ๊ฐ Entity์ Component์กฐํฉ์ผ๋ก ๋ง๋ค์ด์ง๋ค.
3. ํํธ๋ฐ์ค Entity๋ ActionSystem์์ ์์ฑ๋์ด ๋ค์ HitBoxSystem์์ ์ฒ๋ฆฌ๋๋ค.
4. ํํธ๋ฐ์ค ์์คํ ์์ ๋ฒ์์์ ์๋ Entity๋ฅผ ์ฐพ์๋ธ ํ ์ ์ฉํ ํจ๊ณผ๋ฅผ ๋์์๊ฒ ํ๊น ํ๋ค.
5. ์ด์ ์์คํ ๋ค์ ํ ์ฌ์ดํด์ ๋๊ณ ๋ค์ ์ ๋ฐ์ดํธ๋ก ๊ฐ๋ค
6. ๋ค์ ActionSystem์์, ๋ง์ฝ ํํธ๋ฐ์ค์์ ์๋ ๋ ์์ด Stand ์ค์ด์๋ค๋ฉด, ๊ฐ/์ฝํ ํ๊น ์ด ์๋ค๋๊ฑธ ๊ฐ์งํ๋ค.
ํ๊ฒฉ์ ๋ฐ๋ผ StandHit, AirborneHit์ผ๋ก ์ ์ดํ๋ค.
7. ์์ด๋ณธ ์ํ๋ ๋์ ๋ค๊ฐ ๋ฐ๋ฅ์ ๋ด๋ฆฌ๊ฝ๊ฒ ๋๋ฉด Ground๋ก ์์์ ์ ์ด๋๋ค. ๋ง์ฝ ์ด ์ค๊ฐ์ ๋ ๋ง์๋ค๋ฉด AirborneHit๋ก ์ ์ด.
ํ์ฌ๋ ์์ํ ๋ชป๋ด๋ ค์ค๊ฒ ๊ณ์ ๋๋ฆฌ๊ฑฐ๋
๋์ ์ ๋ ์์ํ ๋ชป์ผ์ด๋๊ฒ ํ ์ ์์ง๋ง
์ด๊ฑด ๋์ค์ ์กฐ์จ์ ํ๋ฉด ๋ ๋ฌธ์ ๊ณ
๋ค์ ํ ์ผ์ ๊ฐ๋จํ HP์ ์ฒด๋ ฅ๊ฐ์ ๋ฐ ์ฌ๋ง์ด ๋ ๋ฏํ๋ค.
์. ์ฐ์ฌํ๋ ์ค ๋ชฐ๋๋ค ใ ใทใทใท
๊ฐ์ฉ๋ ๊ฐ์ข ใทใทใท
๊ฐ์ธ์ ์ผ๋ก ํ๋์ ์์คํ ์ ๋๋ฌด ๋ง์ ๊ฒ์ ์ฒ๋ฆฌํ๋๊ฒ ์๋๊ฐ ์ถ๊ธฐ๋ ํ๊ณ ?? ํน์ Job์ ์ฌ์ฉ์ํ๊ณ ์์ด?
์์คํ ์ -> ์์คํ ์ด
์ก์ ์์คํ ์ ์ก์ ํ๋ํ๋๊ฐ ์ํธ๋ฐฐํ์ ์ด๊ธฐ ๋๋ฌธ์, ์ปดํผ๋ํธ๋ก์ ๋์์ ์กด์ฌํ๋ฉด ์๋๋ค๋ ๊ฒฐ๋ก ์ด ๋ฌ์ด. ๊ทธ๋์ ์์คํ ์ ์ฌ๋ฌ๊ฐ๋ก ๋๋๊ธฐ๋ณด๋จ ํ๋์์ ์ฒ๋ฆฌํจ. ๊ทผ๋ฐ ์ ์ก์ ์์คํ ์ ์์ด๋ณธ์ด๋ ํ๊ฒฉ๊ด๋ฐ๋ ์ํ๊ด๋ฆฌ๋ง ํ๊ณ ์๋ง ๊ณต๊ฒฉ๊ด๋ จ๋ ์ก์ ์ ๋ณ๋๋ก ๋น ์ง๊ฒ ๋ ๋ฏํด.
ํด๋ณด๋ฉด์ ๋๋๊ฑด๋ ecs๋ ์ผ๋จ์ ๊ตฌํ์ ์๊ฐ๋๋๋๋ก ๋ง๋ค๊ณ ์งํํ๋ฉด์ Divide and Conquer์ ๋ต์ผ๋ก ๊ฐ๋๊ฒ ํธํจ. ์ฒจ๋ถํฐ ๋๋ฌด ๋ถ๋ฆฌํด์ ์ค๊ณํ๋ฉด ๋ฐ๋ชฉ์ ๋ง์ด ์ก์.
์๋ง ๊ฐ์๋ก ์ ์ ์์คํ ์ด ์ชผ๊ฐ์ง๊ฑฐ๋ผ ์๊ฐํจ. ์ชผ๊ฐ๊ธฐ๋ ์ฌ์ด์ ์ด ecs์ ๋งค๋ ฅ์ธ๋ฏ
๊ธ์ฟค๋ง Leo๋ ๊ฒ์์ค๋ธ์ ํธ๋ฅผ Entitiy๋ก ์ด๋ป๊ฒ ๋ณํ์์ผ??
์ฝํ๊ฒ ๋จ์ด์ก์๋, ๊ฐํ๊ฒ ๋จ์ด์ก์๋๋ ๋ฐ๋ก ๋๋ ๋๋๋ค๋ฉด ์์ด๋ณธ ๋ฟ ์๋๋ผ ๋ค์ํ๊ฒ ์ฌ์ฌ์ฉํ ์ ์์๊ฑฐ๊ฐ๊ธฐ๋ ์ถ๋ค, ์ถํ์ ํ๋ค๊ณ ํ๋
๊ทธ๋ฐ๊ฑฐ์์. LeoECS๋ ์์ C# ํ๋ ์์ํฌ์. ์ ์คํ์ธ ๊ฒ์์ค๋ธ์ ํธ๋ CompVisualPrefab์ปดํผ๋ํธ๋ฅผ ๋ถ์ด๋ฉด ์ ๋ํฐ์ ๋จ๋๋ก PrefabInstancingSystem์ด ํ๊ณ ์์. ๊ทธ๋ฆฌ๊ณ Transform2DComponent์ Pos๊ฐ์ ๋ฐ๋ผ ์ ๊ฒ์ค๋ธ์ ํธ์์น๋ฅผ๊ฐฑ์ ํ๋SyncPosToGameObjectSystem์ดํด์ฃผ๋๊ฑฐ
์์ด๋ณธ๋๋๋ชฌ์คํฐ๋ค์ ์ ์ก์ ์ปดํผ๋ํธ๋ฅผ ์ธ๊ฑฐ๊ณ ์๋ง ํน์๋ณด์ค ์๋ฅผ๋ค๋ฉด ๋๋์ ๋๋๊ณค๊ฐ์ด ๋ง์๋ ์์ด๋ณธ๋ฐ์์๋์ ๋ค์ ์์ธ๋ฏ
์.. ๋ง๋ค ์ฝ๋ ๋ฐฉ์๋ง ECS์ด์ง ๋๋จธ์ง๋ ์ค๋ฆฌ์ง๋ํ๊ณ ๋๊ฐ์๊ฑฐ์ง. ๋ ๊ณ ๋ฏผ์ค. DOTS๋ ์์ง ๊ฐ๋ฐ์๋ ๊ฒ๋ ๋ง๊ณ ๊ทธ๋์ ์ฐจ๋ผ๋ฆฌ Leo๋ก ๋์ ํด๋ณผ๊น ์ถ๋ค. DOTS๋ ๊ฒ์ ๊ตฌํ์ ํ์ํ ๊ธฐ๋ฅ๋ ์์ง ๋ค ์ ๋ง๋ค์ด์ก์ ๋ฟ๋ง ์๋๋ผ Addressable ๊ฐ์ ๊ฒ๋ ์จ ๋จน์ง ๋ชปํ๋..(DOTS์ฉ Addressable ๊ฐ๋ฐ์ค์ด๋ผ ํจ..)
์ฝํ๊ฒ ๋จ์ด์ก์๋, ๊ฐํ๊ฒ ๋จ์ด์ก์๋๋ฅผ ๋ ๋ฆฝ์ ์ธ ์์คํ ์ผ๋ก ๋นผ๋๋๋ค๋ฉด ์์ด๋ณธ ๋ฟ๋ง ์๋๋ผ ์คํฌ์์๋ ์ฌ์ฉํ ์ ์์ง ์์๊น ์ถ์ด์. ํผ๊ฒฉ์๊ฐ ์๋ ์์ ์ ์ ์ฅ์์ ๋ง์ด์ง ๊ทธ๊ฒ ECS์ ๋ธ๋กํ ํน์ง์ด ์๋๊น ์ถ์ด์
์์.. Latios๋ก ์ฐฉ๊ฐํ์๋ค Leo๋ ๋ด ์ค๋ ฅ์ผ๋ก๋ ํ๋ค๊ฒ ๊ตฌ๋ง ใทใท ๋ฌผ๋ฆฌ๊น์ง ์ง์ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด ใ ใทใท
ใ ใ ๋ง์. ์ ๊ฑฐ CompHit์ด๋ HitHard ์ปดํผ๋ํธ ํ๊ทธ๋ ํํธ๋ฐ์ค์ ์๋ ์ ๋คํํ ๋ค ๋ถ๋๋ฐ, ์ก์ fsm์ธ์ ๋ค๋ง ์์ด๋ณธ์ฒ๋ฆฌ๋์ง ๋ฒฝ๊ฐ์๋ฐ ๋ถ์ด๋ ์๋ฌด๋์์ํจ. ๋์ค์ ์์๊ฐ์๋ฐ์ ๋ถ์ด๋ฉด ๋ณ๋๋์์ผ๋ก ๋ถ์์ ธ์ ํ ๋์จ๋ค๊ฑฐ๋ ํ๋ ์ฒ๋ฆฌ ๋ง๋ค์ด์ฃผ๋ฉด ๋์ง. ์ ๋ง ๋งํ ๊ฐ์ฒด์งํฅ ์์์ง์ฅ์์ ๋ฒ์ด๋๊ฑฐ๊ฐ์์ ํ๋ณตํจ
ํ๋ค๋ณด๋ฉด ์์์ด ๊ทธ๋ฆฌ์์ง๋๋ ์๋๋ผ๊ตฌ. ๋ด๊ฐ ์ปดํฌ๋ํธ ์ค๊ณ๋ฅผ ์๋ชปํด์ ๊ทธ๋ฐ ๊ฒ์ผ ์๋ ์์ง๋ง ใ
๋ฌผ๋ฆฌ๋ ๋จ์ํ๊ฒ๋ง๋ค์ด์ ๋ณ๋ก์์ด๋ ค์. ๊ทธ๋ฅ aabb๋ circle์ฒ๋ฆฌ๊ฐ ๋ค์ ใ ใ ใ ใ ์ฌ์ง์ด ํ์ ๋ ์์ด aabb๋ผ์. ๋ ์๋๋ฐ ๊ณต๊ฒฉ๋ง๋๊ฑฐ๋ณด๋ฏ ์๊ฑฐ์. y์ถ์ถฉ๋์ฒ๋ฆฌ๋ ๊ทธ๋ฅ ๋ณ๋๋ก ๋์ด๊ฒน์นจํ ์คํธ๋ก ๋์ธ์์ ์. 3d๋ฌผ๋ฆฌ๋ ๋๋๋ชป๋ง๋ค์ด ใ ใ ใ ์ ํ๋์ ๊ณต๋ถํด์ผ๋ผ... ๋์ค์ ์ผ์ง์ ๋ฌผ๋ฆฌ์์คํ ํ๋ฒ ๊ณต์ ํ ๊ฒ
๊ฒ์์์คํ ๋ง ecs์ฐ๊ณ ๋๋จธ์ง ui๋ ๋ค๋ฅธ๊ฑด ๋ค๊ทธ๋ฅ oop์ธ๊ฑฐ์ ใ ใ ใ ui๋ฅผ ecs์ฐ๋๊ฑด ๊ฒฝํ์ ํผ์ด์ผ..
Leo, Latios ๋ฑ ๋ค๋ฅธ๊ฑฐ ๊ณต๋ถํด๋ณผ๊น ์๊ฐ์ด ๋ค๋ค๊ฐ๋ ์ธ์ ์ง์์ด ๋๊ธธ์ง๋ ๋ชจ๋ฅด๋๊ฑฐ๋ผ.. ์.. ๋ด๊ฐ ์ ๋ฒ ํ๋ฒ์ ์ ์์ ๋์.. ์ด์ ์์ ๊ฐ์ฒด์งํฅ์ผ๋ก ๊ฒ์ ๊ฐ๋ฐํ๋ ค๋๊น ๋๋ฌด ๋จผ๊ธธ์์ด.. ๋๋์๊ฐ๋ ค๋ ๋ฏธ์น ๊ฑฐ๊ฐ์
UI๋ ๋น์ฐ ๊ฐ์ฒด์งํฅ ์จ์ผ์ง. ์ด์ฐจํผ ๋ฉ์ธ์ค๋ ๋์์๋ง ์๋ํ๋๊ฑธ ใ ใ
latiosFramework๋ sveltoEcs๋งํผ์ ์๋์ง๋ง ๋ณธ์ธ ๋ ์์ ์ธ ์ฒ ํ์ด ๋ด๊ธด ํ๋ ์์ํฌ์. ๋๋ ๋ช๋ฒ์จ๋ณด๊ณ ๊ทธ๋ฅ ๋์ก์ด. sveltoEcs๋ก 1๋ ๋ ๋ ค๋จน์๊ฑฐ ์๊ฐ๋์...
๊ทธ๋ฆฌ๊ณ ์๋ฒ์์ ์ ๋ก์ง ๋๋ ค์ผํด์ leoecs๋ฅผ ์ด๊ฒ๋ ์์. entitias๋ ๊ฐ๋ฅํ๊ธดํ๋ฐ, ๊ฐ๋ด๋ Roslyn ์ฝ๋ ์ ๋ค๋ ์ด์ ๊ธฐ๋ฐ์ด๋ผ, ์ฝ๋์ ๋ค๋ ์ด์ ๊ผฌ์ด๋ฉด ํผ๊ฒ์ดํธ ์ด๋ฆผ. ๋ ์ฒซ ecs๊ฐ entitas์ฌ์ ๊ฑฐ๊ธฐ์ ๋๋ค์ด์ ๋ ์ผ์ญ๋ง๋์ธ๊ฐ ํ๋๋ฐ. ์๋ถ๋
๊ธ์ฟค DOTS๋ ๋ท์ฝ๋์์ ์ ์ฉ ๋ฉํฐ์๋ฒ ๋ง๋ค์ด์ฃผ๋๊ฑฐ ๊ฐ๋๋ฐ
์๋ง ๊ฐธ๋ค์ ์๋์ค๋ ์ท ๋ด๋ ค์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋๊ธฐํ๋ฅผ ํ ๊ฑฐ๊ฐ์. ์ค๋ฒ์์น๋ ๊ทธ๋ ๊ฒ ํ๊ณ ์๊ฑฐ๋ . ๊ทผ๋ฐ fps๊ฐ์๊ฒ์์ ํนํ๋๊ฑฐ๋ผ. ๋ ๊ทธ๋ฅ๋๋ฆฌ์ง์๋ค. ๋ ์ ๊ฑฐ ์๋ฒ์์ ๊ฒ์๊ฒฐ๊ณผ ๊ฒ์ฆ์ฉ์ผ๋ฌ ์ธ๊ฑฐ์ง ์ค์ ๋ ๊ทธ๋ฅ p2p์ ์ ๋ ฅ๋ง ์ฃผ๊ณ ๋ฐ๋ lockstep๊ธฐ๋ฐ์ผ๋ก๊ฐ๊ฑฐ๋ผ. ์๋ฒ์๋ฎฌ๋ ์ด์ ๋๋ฆด์ ๋๋ก ๋ ์๋ฒ๋น๋ฅผ ๊ฐ๋น๋ชปํจ. ์คํํฌ๋ํํธ์ฒ๋ผ ๋ฐฐํ๋ท๋์ฐ๊ณ ๊ฐ์์ p2p๋กํด์ผ์ง
๊ทธ๋์ ์ฝ๋๋ณด๋ฉด์๊ฒ ์ง๋ง lockstep๋๋ฌธ์ ๋ถ๋์์์ float ํ๋๋ ์์ฐ๊ณ ์ ๋ถ Fix๊ณ ์ ์์์ ์ฐ์์. ๋ํ๋ ๊ทธ๋ ๊ฒํ๊ณ ์์
์ค์.. ์ ํฌ ๊ด๋ จ๋ ๊ฒ๋ค๋ ์๋ฒ์์ ๊ฒ์ฆ์ํจ ๋ค์์ ์ฒ๋ฆฌํ๋ ค๊ณ ํ๋๋ณด๋ค ๊ฐ๊ณ ์ ใทใท
Dots๋ Deterministic Math์ธ์ ๊ฐ ์ง์ํ๋ท๋๋ฐ ๊ฐ๋ ๋ค์ด ์์์ด์์ด
์ ๋ํฐ๋ ๋ญ ํ๋ค๊ณ ๋ฐํ๋จ๋ฉด 10๋ ํ์ ๊ฐ๋ฐ์์ฑํ๋๋ฏ ์ถ์ด ใ ใ ๋ ์๋ฒ ์ชฝ์ ํฌํค๊ฐ์ ๊ฒ๋ง ์จ์์ ์ ๋ชฐ๋ผ
๋์ค์์ฌ์ฌํ๋ฉด lockstep๋ํจ๋ฐ๋ฐ. ์ฑ๊ธ๊ฒ๋ง๋ค๋ฏ์ด ๋ฉํฐ๊ฒ์๋ง๋๋๊ฒ ๊ฐ๋ฅ. ๋ฃฐ๋ง ์งํค๋ฉด๋จ. Determinism์ด๋ Input๋ฐ์ดํฐํ๋ง ํด๋๋ค๋ฉด ๋ฐ๋ก ๋ฉํฐํ๋ ์ด์ง์ํ๊ฒ ๊ธ๋ฐฉ๋ฐ๊ฟ
ํฌํค๋๋์์ง์์นญ ใ ใ ๋๋ฆ ์ง์์์ฒญํ๋ฉด ์๋ต๋์ํด์ฃผ๋ํธ์
๊ธ์ฟค ๋์ค์ ํ์ํ๊ฒ ๋๋ฉด ๊ณต๋ถํด๋ณผ๊ฒก ใ ใ ์ข์ ์ ๋ณด ๊ณ ๋ง์ก
Leo๋ ๊ณต๋ถํ๋๊ฑฐ ์ด๋? ์๋ฃ ๋นต๋นตํ๊ฒ ์์ด???
์ด๊ฒ SparsetECS๋ผ ๋งค์ฐ ์ฌ์. ์ํคํ์ ์ด๋ ๋น๊ต๋์๋ ์ ๋๋ก ๋จ์ํ. ๋์ ๋ชจ๋ ๊ธฐ๋ฐ์ปดํผ๋ํธ๋ฅผ ๋ค ์ง์ ๊ตฌํํด์ผ๋ผ. ์ ๊ธฐ ๋ด๊ฐ์ฐ๋ ๋ฌผ๋ฆฌ์์คํ ์ด๋ ์ ๋ํฐ์ฐ๋๋ ๊ธฐ๋ฅ๋ค์ ์ฃ๋ค ๋ด๊ฐ ์ผ๋ ๋์ ์ํ์ฐฉ์ค ๊ฑฐ์ณ์ ๋ง๋ ๊ฑฐ์. ์ ๊ธฐ ๊ฒ์ํ๋ฉด์ ๋๋ฒ๊น ์์ด์ดํ๋ ์๋์ฐ๋๊ฒ๋ ๋ค..
๋ณด๊ธฐ ๋๋ฌด ์ข๋ค~ ์ธ๋๊ฒ์๊ฐ๋ฐ ๊ฐค๋ฌ๋ฆฌ ๊ฐ์~~