ComponentData๋ฅผ ๋ง๋ค๋ ๊ธฐ์กด์๋ GamePieceData๋ฅผ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ MatchValue, Coordinate ์ด๋ฐ ์์ผ๋ก ๋ง๋ค์๋๋ ์ฝ๋ฉํ๋ฉด์ ์ฌ์ฌ ๋ญ๊ฐ ๊ผฌ์ธ๋ค๋ ๋๋์ ๋ฐ๊ฒ ๋จ. ๊ทธ๋์ ์ ๋ํฐ ๊ณต์ ECS Sample ํ๋ก์ ํธ๋ฅผ ์ด์ด์ ์ด๋ป๊ฒ ๋ง๋ค์๋ ๋ค์ ํ๋ฒ ์ดํด๋ดค๋๋
๊ธฐ๋ฅ์ ๋ฐ๋ผ ์๊ฒ ์๊ฒ ์๋ผ ๋์. ์๋ฅผ ๋ค๋ฉด CoordnateData ์ MatchValueData ์ด๋ฐ ์์ผ๋ก ๋ง๋ฌ.
์ด๋ฐ ๋ฐฉ์์ด ์ข์ ์ ์ด ์ด์ฐจํผ Data๋ฅผ ์๊ฒ ์ชผ๊ฐ ๋๋ ํ๋์ Entity์ ์๋ ์ปดํฌ๋ํธ ๋ฐ์ดํ๋ค์ Aspect์์ ์ฝ๊ฒ ๋ถ๋ฌ์์ ์ธ ์๊ฐ ์๊ณ Data ์ฌ์ฌ์ฉ์ด ์ฉ์ดํจ. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฉ๋ด์ผ๋ ์ฝ์ด๋ณด๋ ์ด๋ฐ ์์ผ๋ก ์ฌ์ฌ์ฉ์ ๋ง์ดํด์ผ ์ฑ๋ฅ์์๋ ์ด๋์ด ์๋ค๊ณ ํจ. (๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ์ด๋ผ ๋ด์ฉ์ ์ดํด๊ฐ ๋๋ ์ค๋ช ์ ๋ชปํ๊ฒ๋ค)
์ํผ DOTS ์ธ ์ฌ๋๋ค์ ๊ธฐ์ตํด๋ฌ!
ComponentData๋ ๊ธฐ๋ฅ๋ณ๋ก ์๊ฒ ์๊ฒ ์ชผ๊ฐ ๋๋๊ฒ ์ข๊ณ ๋ค๋ฅธ ๊ณณ์์๋ ์ฐ์ผ๊ฑฐ๊ฐ์ Speed ๊ฐ์๊ฑด ๋ฐ๋ก ์ชผ๊ฐ ๋๋๊ฒ ์ข์.ย
์ค์ ๋ ์คํ๋ ค ์ปดํผ๋ํธ๊ฐ ์๊ฒ ์ชผ๊ฐ์, ํ์ํ ๊ฒ๋ง ์ ๋ฐ์ดํธํ๋๊ฒ ECS์ฒ ํ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ์๊ฒ ์ชผ๊ฐฏ๋๋ฐ. ์คํ๋ ค ์ง๊ธ์ ๋๋ฌด ์ชผ๊ฐ์ ์ด๋์ ๋๋ ํฉ์น๋๊ฒ ์ข๋ค๊ณ ์๊ฐํ๊ณ ํฉ์น๋์ชฝ์. ์๋ฅผ๋ค๋ฉด, RPG์ ์ ๋ ์คํฏ์ HP,MP๋ StatComponent, moveSpeed๋ SpeedComponent์ ๋๋๋ ์์ผ๋ก. ์๋๋ฉด ์์ง์ด์ง ์๋ ๋๋ ์์ํ ๋๊น. ๊ทผ๋ฐ ๋ฒํ์์คํ ๊ตฌํํ ๋ ์ ๋๋ ์ง๊ฑฐ๋ฅผ ์ด์งํผ ๋ค ๋ชจ์์ ๋ญ๊ฐ๋ฅผ ํด์ค์ผ ํ๋ ์ํฉ์ด ์ด. ๊ทธ๋์ ๊ทธ๋ฅ ํฉ์ณ๋ฒ๋ฆผ
๊ณต๊ฒฉ๋ ฅ๊ฐ๋ CanAttackComponent๋ก ๋ณ๋๋ก ๋นผ๋จ์์. ๊ทผ๋ฐ StatComponent์ ๊ทธ๋ฅ ํฉ์นจ. ๋ ์ ๊ฑฐ ๋๋ ๋๊ณ AI์์ CanAttack์ปดํผ๋ํธ ์ ๋ฌด์ ๋ฐ๋ผ ๊ณต๊ฒฉAI๋ก์ง ํ๊ณ ์ํ๊ณ ๋ ํ ๋ผํ๋๋ฐ. ๊ทธ๋ฅ ํฉ์ณค์ด. ๋์ค์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๊ทธ๋ ๊ฐ์ ๋ค์ ๋๋๋ ค๊ณ . ๋์ค์ ๋๋ ๋ ECS๊ตฌ์กฐ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ๋ง์ด ์๋ฐ๋. ์ฒจ๋ถํฐ ๋ง ๋๋ํ์ ์๋ค๊ณ ๋ด. ์ด์งํผ ๊ณ์ ์์ ํด ๋๊ฐ๋๊ฑฐ. ๋์ ๊ทธ๋ฅ ๊ฐ์ฒด์งํฅ๋ณด๋จ ํจ์ฌ ์์ ์ด ํธํ๋ค๋๊ฑฐ ๋๋
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด๊ธฐ๋ฅ์ ๊ฐ์ ๋ ๊ธฐ๋ฅ ํ ์คํธํ๋๊ฒ๋ ์ด๋ ต์ง ์์. ๊ฐ๋ น AISystem์ด ์๋๋ฐ, ์ด๊ฑฐ ๋ก์ง์ ์ข ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด NewAISystemํ๋ ๋ ๋ง๋ค์ด์ ํ ์คํธ ํด๋ณด๋ฉด ๋จ. ๊ทธ๋ฆฌ๊ณ ๊ด์ฐฎ์ผ๋ฉด ๊ทธ๊ฑฐ ์ฐ๊ณ . ์ด์ ๊บผ๋ ๊ทธ๋ฅ ๊ตณ์ด ์์ง์ฐ๊ณ AISystem๊บผ๋๋ฉด ์๋์ํ๋๊น ๋ ๋ฌ๋ ๋๊ณ . ์ด๋ฐ๊ฑด ์ ๋ง ์ข์๊ฑฐ ๊ฐ์
ใ ใ ๊ทธ๊ฒ ๋ง์. ํ๋์ ์ฟผ๋ฆฌ์์ ์์ฃผ ์ฐ์ด๋๊ฑด ๋ฌถ์ด์ฃผ๋๊ฒ ๋ง๋๋ฐ ๊ทธ ์ค์์๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ค๋ณตํด์ ์ฐ์ด๋๊ฑด ๋๋ ์ฃผ๋๊ฒ ์ข๋ค๊ณ ํจ.
์ฟผ๋ฆฌ์์ ๊ฐ์ด ํธ์ถ๋๋ ์ ๋ค๋ผ๋ฆฌ ๋ฌถ์ด์ฃผ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ์ค๋ณตํด์ ์ฐ์ด๋ ๋ฐ์ดํฐ๋ ๋ฐ๋ก ๋๋ ์ฃผ๋๊ฒ ์ข์. ๋๋ GamePieceData๋ผ๊ณ ํด์ ํ๋๋ก ๋ค ๋ญ์ณ๋์๊ฒ ๋ง์์ ์ฝ์ง์ค
์ปดํฌ๋ํธ ๋งํ๋๊ฑฐ ๋ง์ง? ๊ทธ๋ฐ๊ฑฐ๋ฉด ์ปดํฌ๋ํธ ๋๋ฌด ๋ง์์ง๋ฉด ์ฒ์ ์์ฑํ ๋ ๋๋ฌด ๋์ง ๋์ง ๋ถ์ฌ์ผ ๋์ ์ ๋นํ๊ฒ ๋๋๋๊ฒ ์ข์๊ฑฐ ๊ฐ์ ์ธ๊ฒ์๋์ค ์ค๋ธ์ ํธ ์์ฑ ์ญ์ ํ๊ฒ ๋๋ฉด ์ฑํฌํฌ์ธํธ์ ๋ถ๋ด ๋ง์ด ์ค๊ฑฐ๊ฐ์
https://learn.unity.com/course/dots-best-practices
์ด๊ฑฐ ํจ ๊ณต๋ถํด๋ด๋ด. ํนํ ์ฟผ๋ฆฌ ํธ์ถํ ๋, ์ต์ ํ์ ๋ฌธ์ ๊ฐ ์๊ฒจ. ๋ง์ฝ MatchValue๋ง ํ์ํ๋ฐ GamePieceData์์ MatchValue์ Coordinate๊ฐ ๊ฐ์ด์์ผ๋ฉด Coordinate๋ ๊ฐ์ด ๋ธ๋ ค์์ ์ ์ข๋ค๊ณ ํจ.
์ฆ, ๋๋ฌด ์ชผ๊ฐ ๋์ผ๋ฉด ์ ์ข๊ณ ์ฟผ๋ฆฌ์์ ํจ๊ป ํธ์ถ๋๋ ๋ ์์ด๋ฉด ๋ฌถ์ด์ฃผ๋ ๋ค๋ฅธ ๊ณณ์์๋ ์ฌ์ฉ๋๋ ๊ฑฐ๋ผ๋ฉด ๋ถ๋ฆฌํด๋๋๊ฒ ์ข๋ค๋๋ผ
์ ๋ํฐ ๊ณต์ ECS Sample Project์ 1. State Machine AI๋ฅผ ์ด์ด๋ณด๋ฉด Guard์ ์ปดํฌ๋ํธ๊ฐ ๊ฐ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ๋ก ์ปดํฌ๋ํธ ๋ฐ์ดํฐ๊ฐ ๋๋ ์ ธ์๋๊ฑธ ํ์ธํ ์ ์์ด.
ใ ใ