์ ๋ํฐ๋ ์ธ๋ฆฌ์ผ์ด๋ ๊ฐ์ด์ฐ๋ค, DOTS ๋๋ฌธ์ Unity ์ ์ฌ์ธ ํ์๋๋ฐ.
ECS ํ๋ฒ ๋ง๋ณด๊ณ ๋๋ OOP ๊ตฌ์กฐ๋ก ๊ฒ์ ๋ง๋๋ ๊ฒ์ด ์ผ๋ง๋ ๋นํจ์จ์ ์ธ์ง ๊นจ๋ฌ์ ๋ฒ๋ ธ์ต๋๋ค.
๋๋ฌด ์ ๋ํฐ ์์กด์ ์ธ๊ฑฐ ๊ฐ์ ๋ช ๋ ์ ๋ถํฐ DirectX ๋ ECS ํ๋ก๊ทธ๋๋ฐ ์ชฝ ํํํ ๊ณต๋ถํ๊ธด ํ์๋๋ฐ..
์ด๋ฒ ์ฌํ๋ก ์์ฒด ์์ง ๋ง๋ค์ด์ผ๊ฒ ๋ค ๋ง์๋จน์๋๋ฐ.
์๋๊ฐ ์๋๋ค์...
ECS๊ฐ ๋ญ๋ฐ? ๋ฒค์ธ ์์ ๋ณธ๊ฑฐ ๊ฐ๊ธฐ๋
๊ทธ๋ผ ๊ฑ ์ ๋ํฐ์จ๋ผ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ฐธ๊ณ ํ๊ฒ ์ต๋๋ค. ์คํ๋ ค ์ ๋ํฐ ECS ๋ณด๋ค ์ ๊ทผ์ด ์ฝ๋ค๊ณ ํ๋ค์.
๋๋ฒ์งธ์ค ๋ค๋ฒ์งธ์ค์ ๋๊ฐ ์ข ์๊ฐ์ ์๋ชปํ๊ณ ์๋๊ฒ ์๋๊น ์ถ๋ค..
๋ถ๋ช 4๋ฒ์งธ ๋ ์๋ชจ์๊ฐํ๋ ๊ฒ์ผ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. 10๋ ๋ ๋ ๋๋๋ฐ ์๋๋ก์ด๋์ฉ ๊ฒ์์์ง ๋ง๋ค๊ฒ ๋ค๊ณ OpenGL ES ๋ NDK ํ๊ฐ๋ฉด์ ๊ฐ๋ฐ๋ง ํ ์ธ์์ด ๋ช๋ ๋ฉ๋๋ค.
ํ์คํ ๊ฑด ๊ฒ์ ์ชฝ์ ๊ทธ ์ด๋ ํ ์ํฉ์์๋ ๋ฐ์ดํฐ ์งํฅ์ ์ค๊ณ๊ฐ OOP ๊ตฌ์กฐ์ ๋นํด ๋ฌด์กฐ๊ฑด ์์ ํธํ์ ๋๋ค.
๊ทธ ์ด๋ ํ ์ํฉ์ด๋ผ๋๊ฒ ๊ฐ์ฅ ์ค์ํ ์์ฐ์ฑ์ ๊ฐ๊ณผํ ์๋ฆฌ๊ฐ ์๋๊น?
์ ๋นํจ์จ ๊ทธ์์ฒด์ ๊ตฌ์กฐ๋ ํนํ์ ๊ฝค๋ ๋ฐ์๋ ์ ๋ํฐ๊ฐ ์์ฅ์ง๋ฐฐ์ ์์น์ ์ฌ๋๋์ง ์๊ฐํด๋ณด๋ฉด ๋ต์ด ๋์ฌ๋ฏ
๋น์ฅ ์ต๊ทผ ๋์จ ์ธ๋๊ฒ์๋ค ์ค์ ECS๋ก ์ด๋๋ณผ๋งํ ๊ฒ์์ด ๋ ๋จํ๊ฐ๋ ์๊ฐ์ด ์๋จ
1์ธ ๊ฐ๋ฐ ๊ธฐ์ค์ผ๋ก ๋ฌด์กฐ๊ฑด ์์ ํธํ์ ๋๋ค. ์์ฐ๋ ฅ๋ ๋ง์ฐฌ๊ฐ์ง๋๋ค. ์ฝ๋๋์ด ๋์ด๋ ์์ฐ์ ์ด์ง ์๋ค๋ฉด ํ ๋ง ์ด ์๋๋ฐ. ๊ด๋ฆฌ ์ธก๋ฉด ์ต์ ํ ์ธก๋ฉด ๋ชจ๋ ๋ฉด์์ ์์ฐ์ฑ์ด ์๋์ ์ ๋๋ค.
์..๊ทธ์ ๋๋ก ์์ ์์ผ๋ฉด ์ถ์ํ ๊ฒ์ ๊ธฐ๋ํ ๊ฒ
๊ฐ์ ์ฅ๋จ์ ์ด ์๊ธด ํจ. ๊ทผ๋ฐ OO3๊ฐ ๋งํ๋๊ฑฐ๋ณด๋ฉด ECS๋ก ๊ฒ์์ ๋ง๋ค ์ ์๋ ์์ค์ผ๋ก ๊ณต๋ถํ๊ณ ๋งํ๊ณ ์๋๊ฑด์ง ์๋ฌธ์.
ECS๊ฐ ์ฒ์ ์ง์ ์ฅ๋ฒฝ์ด ์์ ๋ฟ์ด์ง ๊ฒฐ๊ตญ์ ๋๊ฐ์ ์ธ์ด๋ก ์์ฑํ๋ ๊ฑฐ๋ผ ์ค๊ณ๋ฅผ ๋ค๋ฅด๊ฒ ํ ๋ฟ์ด์ง ๊ทธ๊ฒ ๋ ์ด๋ ต๋ค ์ฝ๋ค? ์ง์ ์ฅ๋ฒฝ์ ๋๊ฐ์. OOP์ ์ต์ํด์ ธ์ ECS๊ฐ ์ด๋ ค์๋ณด์ด๊ณ ๋ถํธํ๊ฑฐ์ง ์ต์ํด์ง๋ฉด ECS๋ ๊ต์ฅํ ํธํจ. ๋ค๋ง ์ ๋ํฐ์ ๊ฒฝ์ฐ ์๋์ ์ผ๋ก ๋ก์ฐํด์ ์ง์ ์ฅ๋ฒฝ์ด ์ข๋ ๋์ ๋ฟ์ด์ง.
ECS๋ ๋ชจ๋ํ์ ํนํ๋์ด์ 1์ธ ๊ฐ๋ฐ ๋ฟ๋ง ์๋๋ผ ํ ์์ ์๋ ๊ต์ฅํ ํจ์จ์ ์ด๊ณ ํ๋ก์ ํธ ์์ฑ๋๊ฐ ์ฌ๋ผ๊ฐ์๋ก ์ฌํ์ฉ์ฑ๋ ๋ฐ์ด๋จ.
ECS ์์ง์ ๋ง์๋ฐ ์ ๋ํฐ๊ฐ ํ์ค์
์ ๋ํฐ๋ฅผ ๋ฏฟ์ ์๊ฐ ์๋ค๋๊ฒ ํจ์ .
Bevy์ ๋์ ํ ์
๋์ธ๋ Bevy์ธ๊ฐ
ECS ์ธ ์ ๋๋ผ๋ฉด ์ ์ ๋จ๊ฐ๊ฐ ๋น๊ต์ ๋์ ๊ฒ์์ ๊ตฌ์ ์ค์ผํ ๋ฐ ๊ทธ๋ฅ ์ฐ๋ ๊ฒ ๋์ ์ ์์ ํน์ ํฌ๊ฒ ์ฑ๊ณตํด๋ ์ธ๋ฆฌ์ผ ๋ณด๋ค ์ ๊ฐ๋ฅ์ฑ์ด ๋๊ฑฐ๋ ํน์ ์๋๋ผ๋ฉด BM ์ง์งํ๊ฒ ๋ค์ ๊ณ ๋ฏผํด
ECS๊ฐ ์ฒ์ ์ง์ ์ฅ๋ฒฝ์ด ์์ ๋ฟ์ด์ง OOP์ ๋นํด ์ด๋ ค์ด ์์ญ์ด ์๋.
์ฑ๊ธ ์ฐ๋ ๋๋ก ํ ๋ฌธ์ ๋ฅผ ๋ฉํฐ ์ฐ๋ ๋ฉ์ผ๋ก ํ๊น ๊ณ ๋ฏผํด์ผํ๊ณ . ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๊ณ ๋ฏผํด์ผํจ. ๊ฐ๋ฐ ๊ธฐ๊ฐ์ ๋์ด๋ ์ ๋ฐ์ ์์ง ๊ทธ๋งํผ ์ฑ๋ฅ์ ์ข์์ง๊ฒ ์ง๋ง ๊ฐ๋ฐ ๊ธฐ๊ฐ ์ฆ๊ฐ๋ ๋์. ๋ฌผ๋ก ์ฅ๊ธฐ์ ์ผ๋ก ๋ณด๋ฉด ์ฆ๊ฐํ์ง ์์ ์๋ ์์ ๊ทผ๋ฐ ์ด๊ฑด ๋ ์์ง ๋ชจ๋ฅด๊ฒ ์. ๋๋ ๋ค๋ฅธ ๋๊ธ์์ ์์ค์ ์ธ๊ธํ์. ์ผ์ ์์ค๊น์ง ์ฌ๋ผ์ค๋ ๋ฐ ํ์ํ ๊ฒ ์ญ์ ์๊ฐ์ด๊ณ ์๊ฐ์ ๋์ด๋ค.
์ ๋ํฐ ๋ฌธ์ ๋ ์ ๋ํฐ๊ฐ ์ ๋ขฐ๋ฅผ ์ ๋ฒ๋ฆฌ๊ณ ์ ๋ํฐ ์์ฒด์ ๋ฏธ๋ ๋ฑ๋ฑ ๋ณตํฉ์ ์ผ๋ก ์์ฉํ๊ฑฐ์ ๋ง์ ๊ณ์ฐ๊ธฐ ๋๋๋ฆฌ๋ฉด ์ธ๋ฆฌ์ผ ์ชฝ์ด ๋ ๋ด์ผ ํ๋ ์ฌ๋์ด ๋๋ถ๋ถ์ผ๊ฑธ ๋งค์ถ5ํผ ์ ์ง ์์
์ด ๊ฒ ๋์ ์ ๋ํฐ๊ฐ ์ฐ๊ธฐ๊ฐ ๊บผ๋ ค์ง๋๋ค.
github์ ECS ๊ด๋ จ ํ๋ ์์๋ค ๋ง๋๋ฐ?
Bevy ๊ฐ ๋์ธ์!!!!
ecs๋ก ๊ฐ๋ฐํ๋ฉด ๊ทธ๋ฅ ๋ฐ๋ฅ๋ถํฐ ํผ์ ๋ง๋๋๊ฑฐ์๋? ecs์์ ์ธ๋งํ ์ ์ ์ด์๋