https://lucid-boundary.tistory.com/m/108
์๋ ํ์ธ์.์ด๋ฒ Hello Cube ์ํ ํ๋ก์ ํธ๋ 13๋ฒ : Custom Transform ๋ง ๋ฆฌ๋ทฐํ ์์ ์ ๋๋ค.์๋ง๋, Hello Cube ์ํ ์ค์์๋ ์ด ์์ ๊ฐ ์ ์ผ ์ด๋ ต๊ณ ๋ํดํ ๊ฒ ๊ฐ๋ค์. ์์๋๋ก ๋ฆฌ๋ทฐํ์ง ์๊ณ ์ฃผ์ ์ ๋ง๊ฒ ์ํ์ ์ ์ ํ๋ค๋ณด๋ ์ข ์ ๋ฆฌ๊ฐ ํ์ํ ๊ฒ ๊ฐ๊ตฐ์.์์ผ๋ก ๋จ์ ์ํ์ ( 9, 11, 14, 15 ). ์ด 4๊ฐ์ด์ง๋ง, 11๋ฒ FirstPersonController ๋ ์ ๋ฐ๊ฐ์ด ํ๋ธ ํ๋ก์ ํธ์์๋ ๋ค๋ฃจ์ง ์์ ์์ ์ ๋๋ค.ํด๋น ์ํ์ ์ธํ ์์คํ ๊ด๋ จ ํฌ์คํ ์์ ๋ค๋ฃฐ๋ ค๊ณ ํฉ๋๋ค.ย ย 1. EntityQuery ํํค์น๊ธฐ2. ECS์์ Transform ์ ๋ญ๊ฐ ๋ฌ๋ผ?3. 13๋ฒ Custom Transfrom Sample ํ๋ก์ ํธ ๋ฆฌ๋ทฐ 1. EntityQuery ํํค์น๊ธฐ ์ด๋ฒ ..
lucid-boundary.tistory.com
์๋ ํ์ธ์.
์ด๋ฒ ์ํ ์์ ๋
13๋ฒ Custom Transforms ์ ๋๋ค.
์ํ ์์ ์ค์์ ์ ์ผ ์ด๋ ต์ง๋ง, ์๊ฒ ๋๋ ๋งํผ ์ป์ด๊ฐ๋๊ฒ ๋ง์ ์์ ์๋ค์.
๋ฉ์ธ ์ฃผ์ ๋ Entity Query, Trasnform ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ธ๊ฒ ์ ์ผ ์ด๋ ต๋ค๋๊ฑธ ๋ณด์ฌ์ฃผ๋ ์ํ์ด์๋ค์.
EntityQuery๋ ํํ ์ํฐํฐ๋ฅผ ์ฐพ๋ (query) API์ด๊ณ
Trasnform์ ์ํฐํฐ๋ฅผ bakingํ๋ฉด์ ๋ถ์ฌ์ง๋ ์ปดํฌ๋ํธ์ ๋๋ค.
๋ฆฌ๋ทฐ ์๊ฐ์ด ์ ์ผ ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค.
๋ฌธ์๋ ์ฐธ ๋ํดํ๊ฒ ์ค๋ช ํด์ ๋ฒ์ญ๋ ํ๋ค๊ณ ์ง๋ฃจํโฆ..
๊ทผ๋ ๊ทธ๋์ ์ ์ฐ๋๊ฑด๊ฐ์? ์ฐพ์๋ด๋ ๊ฑฐ์ ์ถ์์ ์ธ ๋ง๋ง ๋์ค๋๋ฐ ์ฅ์ ์ด๋ผ๋์ง..
https://gamedev.stackexchange.com/questions/200076/i-dont-get-why-ecs-is-considered-more-performant-than-oop
๋ด๊ฐ ์์ด๊ฐ ์งง์์ ์ข๋ ์ฐพ์๋ดค๋๋ฐ, Dots๋ ๊ธฐ์ ์คํ์ด๋ผ๋ ํฐ ์นดํ ๊ณ ๋ฆฌ C#์ก์์คํ , ๋ฒ์คํธ ์ปดํ์ผ๋ฌ, ECS 3๊ฐ๊ฐ ํฌํจ๋์ด ์์ Dots์ ์ฃผ๋ชฉ์ ์ ์ฑ๋ฅ ํฅ์ ์ธ๊ฑฐ ๊ฐ๋ค ๊ทธ๋ผ Dots๋ ์ข ๊ท๋ชจ๊ฐ ์๋ ๊ฒ์์๋ง ์ฐ์ด๊ฒ ๋ค (๋ฌ๋์ปค๋ธ๊ฐ ๋์ผ๋..)
๊ทธ๋ ๊ฒ ์ดํดํ์ฌ ์๋๊ณ ์บ์ฑ ๋ฉ๋ชจ๋ฆฌ ์ชฝ์ผ๋ก ์ ๊ทผํ๋๊ฒ ์ดํด๊ฐ ๋ ์๋ ๊บผ์
์ฌ๋ฌ๊ฐ์ง ํน์ง์ด ์๊ฒ ์ง๋ง, ์ ์ผ ํฐ ํน์ง์ ์ฑ๋ฅ์ด์ง ์์?
์ฃผ๋ก ์ด๊ฑฐ ์ฐธ๊ณ ํ๊ณ
https://usingsystem.tistory.com/539
์ ๋ํฐ
์ฌ์ดํธ๋ ๊ทธ๋ฐ๊ฑฐ ๊ฐ์๋.. (์ข ๋ฏธ์ฌ์ฌ๊ตฌ๊ฐ ๋ง๊ธดํ๋ฐ..)
https://unity.com/kr/dots
https://www.youtube.com/watch?v=7UphiG8UtTg
25๋ถ๊น์ง
๋ณด์๋ฉด ๋ฉ๋๋ค. ์ด๋ถ์ด ์ค๋ช ์ ๊ธฐ๊น๋๊ฒ ์ํด์ฃผ์ธ์.
์์ ๊ฐ์ฌํฉ๋๋ค. 25๋ถ๊น์ง ๋ดค์ต๋๋ค. OOP์๊ธฐํ๋ฉด์ ์์์ ๋จ์ ์ผ๋ก ์ ์ง๋ณด์์ ๋ํ ์๊ธฐ๊ฐ ๋์ค๋๋ฐ, "OOP != ์์" ์ด์๋์? ์์ ์์ฐ๊ณ ์กฐ๋ฆฝ์์ผ๋ก OOP๊ฐ๋ฐํ ์๋ ์๊ตฌ.. ๊ทธ๋์ ์ฃผ์ ๋ชฉ์ ์ ์ฑ๋ฅ ์ต์ ํ ๋ง๋๊ฑฐ ๊ฐ์๋ฐ์? ์๋ฅผ ๋ ๊ฒ์๋ ์ค๋ธ์ ํธ๊ฐ ๋ง์๋ฐ, ์ ์คํ๋๋ค์ด๊ณ ์ ์ง๋ณด์์ ๋ํ๊ฑด ์์์๋ ๋์ค์ง๋ง, ์ฌ๋์ด ๋ฌธ์ ๋ค... ๊ทธ๋ฆฌ๊ณ ์ฝ๋๋ฅผ ๋ณด์ง ์๋ ์ด์ ์ ์ง๋ณด์๊ฐ ์ข๋ค๋๊ฑด ์ฅ์ ์ผ๋ก ๋ฃ๊ธฐ๋ ์ข ์ ๋งคํ๋ค์.
ECS์ ์ฃผ์ ๋ชฉ์ ์ ์ฑ๋ฅ ์ต์ ํ๊ฐ ๋ง๊ธด ํฉ๋๋ค. OOP๊ฐ ์ฝ๋ค? ๊ทธ๊ฑด ์ต์ํด์ก๊ธฐ ๋๋ฌธ์ด๋ผ ๋ด ๋๋ค. ๋จ์ํ ์์, ์ถ์ํ๋ฅผ ์ด๋ค๊ฐ ์๋๋ผ ์ ์ด๋ค ์ค๊ณ๋ฅผ ์ํ๋ค๊น์ง๋ ๊ฝค ๋ง์ ๊ณต๋ถ์ ๊ฒฝํ์ด ํ์๋ก ํ์ฃ . ํนํ, ์ฒ์ ๊ณต๋ถํ ๋ ์์, ์ถ์ํ๋ก ๋ง๋ค์ด์ง ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋๊ฑด ์ฌ๊ฐ ์ด๋ ค์ด ์ผ์ด ์๋๋๋ค. ์์์์ OOP์ ๋จ์ ์ผ๋ก ์ด๋ฐ ๋ถ๋ถ์ ์ด์ผ๊ธฐ ํ ๊ฒ ์๋๊น ์ถ๋ค์. ๊ทธ๋ ๋ค๊ณ ECS์ ์์ฐ์ฑ์ด ์ข๋? ๊ทธ๊ฑด ๋ง์ํ์ ๋๋ก ์ฌ๋์ ๋ฐ๋ผ ๋ค๋ฅด์ง ์์๊น ์ถ์ต๋๋ค. ์ ๋ OOP๋ณด๋ค ECS๊ฐ ๋ ํธํ๊ธด ํ์ต๋๋ค.
OOP๊ฐ ์ต์ํด์ ธ์ ์ฝ๊ณ ์์ฐ์ฑ์๋ค๊ณ ํ๋จ๋๋๊ฑฐ์ง OOP๋ ์ต์ํด์ง๊ธฐ๊น์ง ๊ฝค ๋ง์ ๊ณต๋ถ์ ๊ฒฝํ์ด ํ์ํ๋ฏ์ด ECS๋ ๋ง์ฐฌ๊ฐ์ง๋ผ ๋ด ๋๋ค. ์ต์ํด์ง์ง ์์์ผ๋ ์ฌ๋๋ค์ด ์์ฐ์ฑ์ ๋ํด ์ด์ผ๊ธฐ ํ๋ ๊ฒ์ด ์๋๊น ์ถ์ต๋๋ค. ECS๋ ๋ชจ๋ํ๊ฐ ๋์ด ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ ํ์ฅ์ด ๊ฐ๋ฅํ ๋ฐฉ์์ด๊ธด ํฉ๋๋ค. ๋ฌธ์ ๋ ์ต์ํจ์ด์ฃ .
๊ทธ๋ฆฌ๊ณ ๋ฑ์์ฒ๋ผ ๊ฐ์ฒด๊ฐ ๋ง์ด ๋์ค๋ ๊ฒ์์ด ์๋๋ฉด ๊ตฌ์ง ์ธ ํ์๊ฐ ์๋ค๊ณ ๋ค ํ๋๋ฐ, 1frame ์ด๋ ๋ฐ์ด์ด๋ ์ต์ ํํ ์ ์์ผ๋ฉด ํ๋ฉด ์ข์ ๊ฑฐ์ฃ . ๋ชฐ๋ก , ECS๋ ์ต์ํด์ง๋๋ฐ๊น์ง ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ํ์ํ๋ ๊ตฌ์ง ๋ชํ๋ ์, ์ฑ๋ฅ ์ต์ ํํ๋ ค๊ณ ECS๋ฅผ ๋ฐฐ์์ผ ํ๋? ํ๋ค๊ณ ๋นํจ์จ์ ์ผ์๋ ์๊ฒ ์ง๋ง ๊ทธ๊ฑด ์ต์ํ์ง ์์ ์ํ์์์ ํจ์จ์ ๋ฐ์ ธ๋ดค์๋ ์ด์ผ๊ธฐ๊ฐ ์๋๊น ์ถ์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ํ์ฌ ๋ณธ์ธ์ด OOP์ ์ต์ํด์ ธ์๊ณ ํ์ฌ๋ค์ด๊ฐ ์๊ฐ์๊ณ ๋ฌด๊ฑฐ์ด ๊ฒ์์ด ๋ง๋ค ์ผ์ด ์์๊ฑฐ๋ค ๋ผ๋ฉด ๊ตฌ์ง ECS๋ฅผ ๊ณต๋ถํ์ง ์์๋ ๋๋ค๊ณ ๋ด. ๊ทธ๋ฐ๋ฐ ๋ฐ๋์ ์ํฉ์ด๋ผ๋ฉด ๋ฐฐ์๋๋๊ฒ ๋ง์ง ์๋ ์ถ์. ๋น์ฅ์ ์ถ๊ฐ์ ์ผ๋ก ๊ฐ๋ฐ๋์ด์ผ ํ ๊ฒ ๋ง๊ณ ์๋ํํฐ๋ค๋ ECS ๋์ ํ๋ฌ๊ทธ์ธ๋ค์ด ๋ง๋ค์ด์ ธ์ผ ํ๋ค๋ ๋จ์ ์ด ์์ง๋ง ํ์ฌ์์๋ ECS๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ํ ๊ณ ๊ทธ๋ผ, ์ต์ํด์ง๋ ์ฌ๋๋ค์ด ๋ง์์งํ ๊ณ ์ธ์ ๊ฐ๋ ECS๋ก ํจ๋ฌ๋ค์์ด ์ฎ๊ฒจ๊ฐ์ง ์์๊นํ๋ ์๊ฐ๋ ๋ค์ง๋ง ํ์ฐธ ํ์ ์ผ์ด๊ธฐ๋ ํจ. ECS ์ ๋๋ฉ์ด์ ๋ ๋์ฌ๋ ค๋ฉด ๋ด๋ ๋ง ์ฏค์ ์์ํ๋๋ฐ.. ์์ง ๊ฐ๊ธธ์ด ๋ฉ์ด์ ๋น์ฅ ECS๋ฅผ ๊ณต๋ถํ๋๊ฑด ๋นํจ์จ์ ์ธ๊ฑด ํฉํธ์. ์ต์ ์ ๋๋ฉ์ด์ ์ ๊ฐ๋ฐ๋๊ณ ๊ทธ๋๋ถํฐ ๊ณต๋ถํด๋ ๋ฆ์ง ์๋ค๊ณ ๋ด.
OOP๊ฐ ์ฝ๋ค๊ณ ์๊ฐํ์ง ์์ ๋ค๋ง ๊ฐ์ฒด์งํฅ์ ํ์ค์ ๋น์ ํด์ ์ค๋ช ํ๋ ์ ๊ทผ์ด ๋ ์ฌ์ด๊ฑด ์ฌ์ค ์ด๋ฏธ ์ต์ํ๊ณ ๋๋ฆฌ ์๋ ค์ง OOP๋ณด๋ค ECS๋ฅผ ์ต์ํ๊ฒ ์จ์ผ ์ด์ ๊ฐ ์๋ค๋ฉด ์ฐ๊ฒ ์ฃ 1ํ๋ ์ ์ต์ ํ๋ ํ์๊ฐ ์๋ ์ ํ. ํน์ ๊ฐ๋ฐ์ ๋ง์กฑ์ธ๊ฑฐ ๊ฐ์ ๋นํจ์จ์ ์ผ ์๋ ์๊ฒ ์ง๋ง์ด ์๋๋ผ ๊ทธ๊ฒ ์ค์ํ๊ฑฐ ๊ฐ์ ์์ ๋งํ๋ฐ๋ก ์ ECS๋ฅผ ์ต์ํ๊ฒ ์จ์ผํ๋์ง ์ด์ ๊ฐ ์์ผ๋ฉด ์ธ๋ฏ
์ํผ ์ ๊ฐ ๊ถ๊ธํ๋๊ฑด > ECS๋ฅผ ์ฐ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ? -> ์ฑ๋ฅ ์ต์ ํ ๋ ๋ ๋ !
ํ์ฌ ์ํฉ์์๋ ECS ๊ณต๋ถํ ํ์๋ ์๋ค๊ณ ๋ด ๋๋ค. ํ 5๋ ํ? ์ฌ๋๋ค์ด ๋ง์ด ์ฐ๊ฒ ๋๊ณ ๋ ํผ๋ฐ์ค ๋ง์์ง๊ณ ECS ๋์ํด์ฃผ๋ ์๋ํํฐ ๋ง์์ง๋ฉด ๊ทธ๋ ์จ๋ ๋ฉ๋๋ค๋ง. ํ๊ฐ์ง ๋ง์๋๋ฆฌ๊ณ ์ถ์๊ฑฐ๋ ๋ณธ์ธ์ด ์ต์ํด์ง ์ ๋๋ก ์์ง ๋ชปํ๋ ์์ญ์ ๋ํด์ ์ฃ๋ถ๋ฅด๊ฒ ํ๋จ์ ๋ด๋ฆฌ๋๊ฑด ์คํ์ด์ง ์์๊น ์ถ์ต๋๋ค.
ํ์ค ๋น์ ๋ผ๊ณ ์ ๊ทผํ๊ธฐ ์ฝ๋ค๋ผ.. ๊ฐ๋ ์์ฒด๋ ๊ทธ๋ ๊ธด ํ์ฃ .
์ ๋ dots, ecs์ ๋ํด ์ ๋ชจ๋ฆ ๋๋ค. ๊ด์ฌ์ ์ข ์์ต๋๋ค. ๊ทผ๋ ์ด๋ค ๋ถ๋ถ์ ์ฃ๋ถ๋ฅด๊ฒ ํ๋จํ๋ค๊ณ ํ์๋๊ฐ์?
ECS์ ๋ํด ๋ฅ์ํ๊ฒ, ๋๋ ๊ตฌ์ฒด์ ์ผ๋ก ๊ณต๋ถํ๊ธฐ ์ ์ ๋ ๋ ๋ ! ๊ฒฐ๋ก ์ ๋ด๋ฆฐ ๋ถ๋ถ์ด์. ์ด๊ฑด ํ๋ก๊ทธ๋จ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๋ถ๋ถ์ ๋ํด์ ๋ณธ์ธ์ด ์ ์์ง ๋ชปํ๋ ์์ญ์ ๋ํด ํ๋จ์ ๋ด๋ฆฌ๋ฉด ์คํ์ด์ง ์์๊น ์ถ์ต๋๋ค.
์ ๊ทธ๊ฑด ์ ๊ฐ ๊ฒฐ๋ก ์ ๋ด๋ฆฐ๊ฒ ์๋๊ตฌ์. ๋น๊ทธ๋ ๋์ด ๋ง๋ค๊ณ ํ์ ์ ๊ทธ๋ฐ๊ฑฐ์์..
์์ ์คํด๊ฐ ์์๋ค์! ์ํผ ์ ๋ ์ง๊ธ์ ECS๋ฅผ ์ธ๋๊ฐ๋ฐ์๊ฐ ๊ตฌ์ง ๊ณต๋ถํ ํ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๋๋ค์ด OOP์ ์ต์ํด์ ธ์ ์์ฐ์ฑ์ด ์ข๋ค ์ด์ฉ๋ค ํ์ง๋ง ๊ทธ ์์ฐ์ฑ ์ข์ ์ค๊ณ๋ฅผ ํผ์ ๋ ์์ ์ผ๋ก ํ ์ ์๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ช์ด๋ ์์๋ จ์ง. (์ด๋ฏธ ๋ง๋ค์ด์ง, ๋๊ตฐ๊ฐ๊ฐ ๋ง๋ ์ํคํ ์ฒ ๊ฐ๋ค ์ฐ๋๊ฒ ๋๋ถ๋ถ ์ผํ ๋ฐ) ๊ทธ๋ฐ ์์ผ๋ก ๋ฐ์ง๋ฉด ECS๋ ์ธ์ ๊ฐ๋ ๋๊ตฐ๊ฐ๊ฐ ๋ง๋ค์ด๋์ ์ํคํ ์ฒ ์ฐธ๊ณ ํด์ ๊ฐ๋ค ์ฐ๋ฉด์ ์์ฐ์ฑ์ ๊ฐ์ถ๊ฒ ๋ ๋ ์ด ์ฌ๊ฑฐ๋ผ ๋ด ๋๋ค.
์ ๋ ๊ทธ๋ด๋ ์ด ์ค๊ธธ ๊ธฐ๋ํฉ๋๋ค. ์ ๋ํฐ ๊ฐ๋ฐํ๋ฉด์ ๊ตฌ์กฐ์์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐํ์ด์. (MVVM, MVP ๋ฑ๋ฑ ์ฒ๋ผ) ๊ทผ๋ ์์์ผํ ๊ฒ ๋ง๊ณ , ์ด๋ ค์ฐ๋ฉด ์ ์์ฐ๊ฒ ๋๋๊ฒ ์ฌ์ค.. (ํ๋๋ ํซํ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ์์ง๋ ์ฐ๋ ์๋ฐ..)
ECS ์์ฒด๋ ์ฌ์์. ํ๋ฌ ๊ณต๋ถํ๋ฉด ๊ฒ์ํ๋ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ ๋๋ฉ์ด์ ๋ฑ ์์ง ๊ฐ๋ฐํด์ผ ํ ๊ฒ ๋ง์ด ๋จ์๋ค๋ ๊ฒ์ด๊ณ (์์ ์คํ ์ด์์ ๊ตฌ๋งคํ๋ฉด ๋๊ธด ํจ) ์ง์ํด์ฃผ๋ ์๋ํํฐ๊ฐ ์์ง ์๊ณ (ํ์ด์ด๋ฒ ์ด์ค ๋ฑ) ํจ์น ๋ฑ์ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ํผ๋ฐ์ค๊ฐ ๋๋ฌด ๋ถ์กฑํด์ ๊ณต์ ๋ฌธ์(API์ ๋ฉ๋ด์ผ) ์ ๊ตฌ์๊ฐ ๋์ด์ผ ํ๋ ์ด๋ ค์? ์ด ์์ด์ ์ง๊ธ ๋น์ฅ ๊ณต๋ถํ ํ์๋ ์๊ณ ํ 5๋ ํ? ์๋ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๋ ์ฌ๋์ด ๋ง์์ง์ง ์์๊น ์ถ์ต๋๋ค. ํ์ฌ์์๋ ๊ณ ํ๋ฆฌํฐ ์บ๋ฆญํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ์๊ตฌ๊ฐ ์๊ณ ๊ทธ๋ ๋ค๋ฉด 1frame ์ต์ ํ๊ฐ ์์ฌ์ด ์ํฉ์ด ์๊ฒจ์ ํ์ฌ์์ ECS๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ํ ๊ณ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉ์๊ฐ ๋ง์์ง๊ฒ ๋ ๊ฑฐ๋ผ ๋ด ๋๋ค.