LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (1)
LeoECS๋ฅผ ์ด์ฉํ Unity์์ ECS๊ฒ์ ๋ง๋ค๊ธฐ (2)
AI์ ํ๋์ฝ๋ฉ๋์ด ์๋ FSM์ ๊ฝค ๋ง์ ๊ฐํธ์ด ์์๋์ด ์ ์ ์ฌ์ด๊ฐ ๊ฒธ ๋ค๋ฅธ๊ฑฐ์ ๋ํ ๋ด์ฉ์ ๋ค๋ค๋ณผ๊น ํ๋ค.
ํ์ฌ ์ฌ์ฉ๋๊ณ ์๋ ๋ฌผ๋ฆฌ๊ด๋ จ๋ ๋ด์ฉ์ด๋ค.
LeoECS์์๋ ๋ฌผ๋ฆฌ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฐ๋ก ์กด์ฌํ์ง ์๋๋ค. ๋๋ฌธ์ ์ง์ ํ๋ ๋ง๋ค์ด ์ค์ผ ํ๋๋ฐ
๋ด ๋ฌผ๋ฆฌ์ง์์ ๊ณ ๋ฑํ๊ต๋ ๊ณตํต๊ณผํ์์ค์ ๋จธ๋ฌผ๋ฌ ์์๊ธฐ ๋๋ฌธ์ ์์ฃผ ๊ฐ๋จํ 2D ๋ฌผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์๋ค.
์ ๋ง ๋น์์ ๋นํด๋ ํ ๋ง์ด ์์ ์ ๋๋ก ๊ฐ๋จํ ๋ฌผ๋ฆฌ ๊ตฌํ์ด๋ค..
์ถฉ๋ ์ฒดํฌ
์ผ๋จ ๊ฒ์์์ ๋ฌผ๋ฆฌ์์ง์ ์ฌ์ฉํ๋ ๋ชฉ์ ์ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋ค.
1. ํน์ ๊ตฌ์ญ์ ๋ฌด์์ด ์๋์ง๋ฅผ ํ์
2. ๋ฌผ์ฒด๋ ์๋ก ๊ฒน์น์ง ์๋๋ก ํ๋ ์ฒ๋ฆฌ
1๋ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ํ์ํ ๊ฒ์ '๋ฌผ์ฒด'๋ผ๋ ๊ฒ์ '๋ชจ์'์ด๋ผ๋ ๊ฒ์ด ์ ์๋์ด์ผ ํ๋ค. ์ด๋ฅผ Shape๋ผ๊ณ ์ ์ํ์๋ค(์ ๋ํฐ์๋ Collider๋ผ๋ ๊ฒ์ด ์์)
๋ชจ์๋ฟ๋ง ์๋๋ผ ๋ฌผ์ฒด๋ ์์น๋ฅผ ๊ฐ์ง๋ค. ์ด๋ ์ญ์ Transform์ Pos๋ก ์ ์ํจ
์ด๋ ํน์ ๊ตฌ์ญ์ ๋ฌผ์ฒด๊ฐ ์๋์ง๋ฅผ ํ์ํ๋ค๋ ๋ง์ ์ข๋ ์์ธํ๊ฒ ๋งํ๋ค๋ฉด
์ด๋ ํน์ ์์น์ Shape๊ณผ ๊ฒน์น๋ Shape๋ค์ด ๋ฌด์์ด ์๋๊ฐ๋ก ๋งํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด Shape๊ณผ Shape์ด ๊ฒน์น๋์ง๋ฅผ ์ฒดํฌํ๋ ๋ฐฉ๋ฒ์ด ๋ฌด์์๊น?
1. AABB vs AABB
AABB๋ AxisAlignedBoundingBox(์ขํ์ถ๊ณผ ํํํ๊ฒ ๋์ธ ๋ฐ์ค?)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด๊ฑธ ์ฐ๋ ์ด์ ๋ ๊ณ์ฐ์ด ํธํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋์ ๊ฐ ๊ธ์ด์จ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ๊ธฐ์ต์ด ์๋๋ค.. ๊ฒน์น๋ฉด true ์๊ฒน์น๋ฉด false์ผ๊ฒ์ด๋ค.
2. Circle vs Circle
์๊ณผ ์์ด ๊ฒน์น๋์ง ํ๋ณํ๋๊ฑด ๋น๊ต์ ์ฝ๋ค.๊ทธ๋ฅ ์ค์ฌ๊ฐ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ ์์ ๋ฐ์ง๋ฆ๋ณด๋ค ํฌ๋ฉด ๋จ.
3. AABB vs Circle
AABB์ Circle์ด ๊ฒน์น๋ ๊ฑด ๋ญ, ๊ธฐ์ต์ด ์๋๋ค. ์ฃผ์์ ๋ณด๋๊น ๋ด๊ฐ ์ด๋ ๊ธ์ด๋ค์ด๊ฑฐ๊ฐ์๋ฐ.
(๋ด๋ ๋ญ์ง๋ชจ๋ฅด๊ฒ ๋ค)
https://learnopengl.com/In-Practice/2D-Game/Collisions/Collision-detection
์์ ๊ฒ๋ค์ ์ด์ฉํ๋ฉด ๋ฌผ์ฒด ์์ ๋ฌด์๋ค์ด ๋ค์ด์๋์ง ์ฒดํฌํ๋ ๋ฐฉ๋ฒ์, ๊ทธ๋ฅ ๊ฒ์์ ์กด์ฌํ๋ ๋ชจ๋ 'Shape'๋ค์ for๋ฌธ์ ๋๋ฉด์ ์ฒดํฌํด์ฃผ๋ฉด ๋๋๊ฒ
๋ง์ฝ ๋ฌผ์ฒด๊ฐ ๋ง 10000๊ฐ ์ด์์ด๋ฉด? BroadPhase
๋ฌผ์ฒด๊ฐ 10000์ด์์ด๋ฉด ๋ญ๊ฐ ์ถฉ๋ํ๋์ง ํ์ํ๊ธฐ ์ํด์๋ ์ด 10000๊ฐ์ ๋ฌผ์ฒด๋ค๊ณผ์ ์ถฉ๋๊ฒ์ฌ๋ฅผ ๋ค ํด์ผํ๋๋ฐ, ์ด ๊ณผ์ ์ ๊ฒ์ ํผํฌ๋จผ์ค์ ๋งค์ฐ ์น๋ช ์ ์ผ ์ ์๋ค. ๋๋ฌธ์ ๋ญ๊ฐ ํด๊ฒฐ์ฑ ์ด ํ์ํ๋ค.
Circle์ด๋ AABB๋ ๋๋ค๋ฅธ CustomShape์ด๋ ์ผ๋จ ์ ๋ถ AABB๋ก ๊ณ์ฐ์ ํ๋ค๋ฉด?
(์ ๋ํฐ์ BoundingBox)
์์ด๋ CustomShape๋ ๊ทธ Shape๋ฅผ ๊ฐ์ธ๋ AABB๋ก ๊ฐ์ ํ๋ค๋ฉด? AABB๋ ๊ฒ์ฌ๋ก์ง์ด ๋งค์ฐ ์ ๋ ดํด์ง ์ ์๋ค.์ด๋ฅผ ๋ฌผ๋ฆฌ์์ง์์ BroadPhase ๋จ๊ณ๋ผ๊ณ ํ๋ค
์ ๋ํฐ์ ์กด์ฌํ๋ BoundingBox๊ฐ ๋ฐ๋ก ๊ทธ๊ฒ. ๋ฌผ๋ฆฌ๊ณ์ฐ์๋ ์ฐ์ด๊ณ , ๋ ๋๋งํ ๋ฌผ์ฒด๋ฅผ ํํฐํ๋๋ฐ๋ ์ฐ์ธ๋ค.
QuadTree
์ฌ๊ธฐ์ BroadPhase๋จ๊ณ๋ก ํ๋ ๋ ์๋ค. ๊ทธ๊ฒ์ Shape๋ค์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ ์ด๋ถํฐ ํ์์ด ์ฉ์ดํ ์๋ฃ๊ตฌ์กฐ๋ก ๋ค๊ณ ์๋ ๊ฒ.
BSP,QuadTree,Octree ๋ฑ ์ด๋์ ์ง๋๊ฐ๋ฉด์ ๋ค์ด๋ณธ์ ์ด ํ๋ฒ์ฏค ์์ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์๋ QuadTree๋ฅผ ์ฐ๊ณ ์์ผ๋ฏ๋ก ์ด๊ฑธ ์ค์ ์ผ๋ก ๋์ถฉ ์ค๋ช ํ๋ค.
QuadTree๋ ๋๋ฌด ๋ฅํ๊ฒ ์ค๋ช ํ๋ฉด ๋๋ ์์ ์ด ์์ด์, ๋์ถฉ ๋๋์ผ๋ก ๋งํ์๋ฉด. ์ฐ๋ฆฌ๊ฐ ์ด๊ณ ์๋ ๊ณณ์ ๋ํ ์ฃผ์์ ๊ฐ๋ค.
๊น๊ฐ๋ฅ = ์์ธ,๊ณ ์์,๋์๊ตฌ,ํ์ ๋
๊น์ ๋ฅ = ์์ธ,๊ณ ์์,๋์๊ตฌ,ํ์ ๋
๊น๋ผ๋ฅ = ์์ธ,๊ด์ฃผ์,๋จํ์ฐ์ฑ๋ฉด
์ด๋ ๊ฒ ์ธ ์ฌ๋์ ์์น์ ๋ณด๊ฐ ์๊ณ , ๋ง์ฝ ๋ด๊ฐ ํ์ํ๋ ค๋ ๊ณณ์ด "๋์๊ตฌ"๋ผ๊ณ ํ๋ค๋ฉด, ๊น๊ฐ๋ฅ,๊น์ ๋ฅ๋ง ๋ฆฌ์คํธ๋ก ๋ฐ์ ํ์ํ๋ฉด ๋๋ค.
๊น๋ผ๋ฅ์ ์ ์ด๋ถํฐ ๊ฑธ๋ฌ์ง๋ ๊ฒ์ด๋ค.
์ด๊ฒ ๊ฐ๋ฅํ๋ ค๋ฉด ์ ์ ๊ฐ, ์ ์ด๋ถํฐ ์ด๋ค์ ์ง์ญ์ ๋ฏธ๋ฆฌ ๋ผ๋ฒจ๋งํ์ฌ ๊ตฌ์กฐํ ํด๋์ผ ํ๋ค.
QuadTree๋ depth๋ผ๋๊ฒ ์๋ค. depth=0์ worldํฌ๊ธฐ๊ฐ 300,300์ด๋ผ๋ฉด ๋ฑ 300,300ํฌ๊ธฐ์ด๋ค.
depth=1๋ก ๋ค์ด๊ฐ๋ฉด ๊ตฌ์ญ์ 4๊ณณ์ผ๋ก ๋๋ ์
1๊ตฌ์ญ x:-150~0 y:0~150
2๊ตฌ์ญ x:0~150 y:0~150
3๊ตฌ์ญ x:-150~0 y:-150~0
4๊ตฌ์ญ x:0~150 y:-150~0
์ผ๋ก ์ ์ํ๋ค. depth2๊ฐ๋๋ฉด 1๊ตฌ์ญ ์์์ ๋ 4๊ตฌ์ญ์ผ๋ก ๋๋๊ณ ๊ทธ๊ฒ์ ๋์ค๋งํผ ๋ฐ๋ณตํ๋ค
๋ง์ฝ depth๊ฐ 3๋จ๊ณ๊น์ง ์๊ณ , A๋ผ๋ ๋ฌผ์ฒด๊ฐ x:-149,y:149์ ์๋ค๊ณ ํ๋ฉด
A๋ depth=2๋จ๊ณ์ 1๋ฒ์งธ ๊ตฌ์ญ์ ์ํ๊ฒ ๋๋ค.
์์)
์ด๋ ๊ฒ QuadTree์์ ๋ชจ๋ Shape๋ค์ ๋จผ์ ๊ตฌ์กฐํ ํ์ฌ ๋ฃ์ด๋์๋ค๋ฉด
QuadTree์๊ฒ ํ์ํ๊ณ ์ ํ๋ Shape๊ณผ ์์น๋ฅผ ์ฃผ๋ฉด ๊ทธ์ ํด๋น๋๋ depth์ ๊ตฌ์ญ๊ณผ ์ผ์นํ๋ ๋ ์๋ค์ ๋ฆฌํดํด์ฃผ๋ ๊ฒ์ด๋ค.
๊ฒ์๋ด์์ ํน์ ๋ฒ์์ ์๋ ์ ์ ํ์ํ ๋๋ QuadTree๋ฅผ ์ฌ์ฉํ๋ฉด ๋น ๋ฅด๊ฒ ์ ์ ์ฐพ์ ์๊ฐ ์๋ค.
์ผ๋จ Shape๋ค์ QuadTreeํํ๋ก ์๋ฃ๊ตฌ์กฐํ๋ฅผ ํ๊ณ
ํน์ ๋ฒ์์ ๋์์ ์ฐพ๊ณ ์ ํ๋ค๋ฉด
(๋ฐ๋ฅ์ ์ ์ด ๋ง์ Hitbox ๋์์ ์ฐพ๋ ๊ฒ๋)
(QuadTree์ AABB๋ก ์ฟผ๋ฆฌํ์ฌ ๋์์ ์ ๋ณํ๋ ๊ฒ)
์์ ์ RTS ๋์ ํํผ๋ ์ผ๋ ๋ฌผ๋ฆฌ๊ธฐ๋ฅ์์๋ QuadTree๊ฐ ์ฌ์ฉ๋จ
(๋
น์ ์ญ์๊ฐ๊ฐ QuadTree ๊ตฌ์ญ ๋๋ ์ง๊ฑฐ Debug)
์์ ์ ์ฌ๋ ธ๋ ํฌ์คํ - https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=98708
๋ค์ ์ ๋ฆฌํ์๋ฉด ๋ฌผ๋ฆฌ์์ง์์ ์๊ธฐํ๋ BroadPhase๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. ํ์์ ์ฉ์ดํ๋๋ก ์์น ๋ฐ Shape์ ์๋ฃ๊ตฌ์กฐํ(QuadTree)
2. Shape๊ณ์ฐ AABB๋ก ๋จ์ํ
๊ทธ๋ฆฌ๊ณ ์์ ์ค๋ช ํ๋ AABBvsAABB, CirclevsCircle, AABBvsCircle๋ก ์ค์ ๋ก ๊ฒน์น๋์ง ์ฒดํฌ๋ฅผ ๋ฌผ๋ฆฌ์์ง์์ NarrowPhase๋ผ๊ณ ํ๋ค.
์ค์ ๋ก LeoECS๋ฅผ ์ฐ๋ฉด์ ์ ๋ง ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค.
๋ค์์ ๊ธฐํ๊ฐ ์์ผ๋ฉด, ํ์ฌ LeoECS์์ ์ด๋ป๊ฒ
๋ฌผ์ฒด๊ฐ ์ด๋ป๊ฒ ๊ฒน์น์ง ์๊ฒ ํ๋ ๊ฒ์ธ์ง
๋ฌผ์ฒด๋ฅผ ์ด๋์ํค๋ ๊ฒ์ ์ด๋ป๊ฒ ํ๋๊ฒ์ธ์ง์ ๋ํ ๋ด์ฉ์ด ๋ ์์ ์ด๋ค
์ถฉ๋๊ฒ์ฌ๋ ๋๋ฌด์ ๊ธฐํด
์ถฉ๋๊ฒ์ฌ๋ ๋จ์ํํธ์ ์ํจ. ๊ฒน์น์ง ์๊ฒํ๋ ๋ก์ง์ด ์ ค ๊ณจ๋๋ฆผ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ด์ข ์ด๋ผ ๊ด์ฌ๋ง์ค๋ ใณํจ. ๋ด๊ฒ๋์ง์~
์ข์ ์๋ฒฝํ ์ดํดํ๋ค.(์ดํด๋ชปํจ)
์ ์ถ์ฒ ํ '์ญ์ ๊ฐ๋ฐ์๋ ๋ฌ๋ผ' ์ฝ
๊ฟ ์ ๋ณด ๋ก์ค๋ฒ ๋ฆฌ!! LeoECS ๊ธฐ์ด๋ถํฐ ์๋ ค์ฃผ๋ฉด ๋ ๋ง์ ์ฌ๋๋ค์ด ์ดํดํ ์ง๋?
์ ๊ฐ๋จํ ๊ฒ๋ ํ๋ํ๋ ๋ค ๋ง๋ค์ด์ผ ํ๋ค๋.. ์๋๊ฐ ์๋๋๊ตฌ๋ง...ใ ใทใท
ํ .. leoecs๋ ecsํจํด์ ๋ํด ์ข ์๋ฉด ํ๋ฒ ์จ๋ณด๊ณ ๋ถํํ ์ ๋๋ก ๋จ์ํ ๊ตฌ์กฐ์ธ๋ฐ.. ์์คํ์ผ๋ ์ด 5๊ฐ๋ฐ์ ์์ด. (EcsComponent,EcsEntity,EcsFilter,EcsSystem,EcsWorld). ํ๋ฃจ์ดํ๋ง ์ข ๋ด์ ๋ด๋ ๋ค ์ดํดํ ์ ๋์. ๊ทผ๋ฐ ๋๋ DOTS๋ฅผ ์จ๋ด์ ์๊ฒ ์ง๋ง, ๊ฒ์์ ๋ง๋๋ ๊ณผ์ ์ด OOP๋ DOTS๋ ์์ ํ๋ฆฌ์์. ์ด๊ฑด ๊ฒ์๋ง๋ค ๋ ๋ฌ๋ผ์, ์ด๋ฐ๊ฑธ ์๋ ค์ฃผ๋๊ฒ ๋ง๋ ์ถ๊ธฐ๋ ํด. ๋๋ ํ์ ์ด ์์๊ธฐ๋ ํ๊ณ
https://github.com/Leopotam/ecs
์ธ์ด๊ฐ
๋ฌ์์์ด๊ธด ํ๋ฐ, ์ฌ์ค ์ฝ๋๋ง ๋ด๋ ๋ญํ๋์ง ๋์ถฉ ์์ ์์ ์ ๋๊ณ
https://www.youtube.com/watch?v=J3HG8i-DrL8&list=PLhFnsuz8Wcqy1Ut8b_-NNZ_mNkjGpKxkW
ํํ ๋ฆฌ์ผ(์ด๊ฒ๋ํํ
๋ฌ์์์ด)๋ ํ๋ฒ ๋ณด๋ฉด์ ์ฝ๋ ๋ญ์ง๊ฑฐ๋ฆฌํ๋์ง ๋ณด๋ฉด ๋์ถฉ ๋๋์ด ์ด.
์๋๋ฉด ๋ ๋ค๋ฅธ ECS๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ฒ์ฉ ํด๋ด์ ์ฌ์๋ณด์ด๋๊ฑด๊ฐ;;;
DOTS๋ณด๋ค ์ง์ง 100๋ฐฐ๋ ์ฌ์ด๋ฐ..
๊ธ์ ์ฝ๋ค๋ณด๋ API๋ฅผ ๋ด์ผ์ง ์ดํด๊ฐ ๋น ๋ฅผ๊ฑฐ๊ฐ์๊ฒ ๋ช๊ฐ ๋ณด์ด๋๋ผ๊ตฌ. ์๋ฅผ ๋ค๋ฉด ๋ฆฌํ๋ ์ฌ์์คํ ์ด ์ธ์ ํธ์ถ๋๋๊ฑด์ง ๋ฑ
์ ์ ๊ฑด ์์ฑ์๋ผ์ OnCreate() ์ฒ๋ผ ์ฒ์์ ํธ์ถ๋๋๊ฑด๊ฐ?
System๋ค์ ์ ๊ฑฐ ๋ค ๋ด๊ฐ๋ง๋ ๊ฑฐ์. leoecs๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํํด๋์ค EcsSystem๋ฐ์ ์์ด.
๊ธ์ฟค, ๊ฑฐ์ ๋ผ๋๋ง ๋์ ธ์ฃผ๊ณ ๋๋จธ์ง๋ ์์์ ๋ง๋ค์ด์ผ ํ๋๊ฑด๊ฐ ๋ณด๋ค ใ ใทใท
์ฌ์ค ์ผ์ง์ ๋ด๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํธ์์ ์ธ๋ ค๊ณ ๋ง๋ ์์คํ ๋ค์ ํ๋ํ๋ ์ผ์ผ์ด ๋ค ๋์ดํ๋ฉด ๋ค๋ค ํํํ ๊น๋ด, ๋ฐ๋ก ์ค๋ช ์ํ๋๊ฑฐ์. ๊ธฐ๋ณธ์ ์ธ ์์คํ ๋ค ์ค ํ๋์ธ Physics๋ฅผ ์ด๋ฒ ์ผ์ง์ ํ๋ฒ ์ค๋ช ํ๊ฑฐ๊ณ .
๊ธ์ฟค ์ ์ด์ LeoECS๋ ์ด๋ณด์๊ฐ ์ธ์๊ฐ ์์๊ฑฐ๊ฐ๊ธฐ๋ ํด. ํ๋ํ๋ ๋ค ๋ง๋ค์ด์ ์จ์ผํ๋, ๋ด์ฉ ์ดํดํ๋๊ฑด ๋ ์ ๋๋ง ๋์ด๋ ๊ฐ๋ฅํ ๋ฏ. ๋๋ณด๋ค ์ํ๋ ์ฌ๋์ด ๋ง์ํ ๋ ๊ด์ธํ ๋ฏ ์ถ๋ค.
ใ ใ ๋ผ๋๋ง ์๊ณ , github์ ๊ฐ๋ณด๋ฉด ์ฌ๋๋ค์ด ๋ง๋ leoecs๊ด๋ จ ํ๋ก์ ํธ๋ค์ ๋ง์ด ์์. ๋๋ ๊ทธ๋ฐ๊ฑฐ ๋ณด๋ฉด์ ๋ฐฐ์ด๊ฒ๋ ์๋๋ฐ leoecs๊ธฐ๋ฅ์์ฒด๋ ์ ๋ง ํ์ํ๊ฒ๋ง ๋ฑ ์๊ณ ๋์
๊ตฐ์ง์ด๋ํ๋๊ฑฐ ํํ ๋ฆฌ์ผ ๊ฐ๋ฅ? ๋ณด์ด๋ ๊ณต๋ถํ๋ฉด ์ ๋ฐ๊ฑฐ ํ ์ ์๋? ๋ค๋น๊ฒ์ด์ ์ ๋๋ฌด ๊น๋ํ๊ฒ ์ด๋ํด๋ฒ๋ ค์ ์ ๋ ๊ฒ ํ์ํ๋ฉด์ ๊ฐ๋ค๋ ๋๋์ด ์๋๋๋ฐ
์ ๊ฑฐ ๊ตฐ์ง์ด๋ ๊ด๋ จ๋ ๋ณด์ด๋ ์์ค์ฝ๋๋ ์ค์ ์์. ๋๋ ์ด๋ค ์์์ ์ฐธ๊ณ ํด์ ๋ง๋ ๊ฑฐ๋ผ.
https://www.jdxdev.com/blog/2021/03/19/boids-for-rts/
์ด๊ฑธ
์ฐธ๊ณ ํด์ ๋ง๋ฌ. ๊ทผ๋ฐ ์์ค์ฝ๋๋ ๋ฐ๋ก ์์ด์ ์ฝ๋๋ ๋ด๊ฐ ์งฐ์.
์ ๊ฑฐ๋ณด๋ฉด ๋๋ ๋ง๋ค์์์๊ฑฐ์
์ ํ๋ธ ์์ ์ง์์ ์๋ ค์ฃผ์ง ใ ใ ใ ใ LeoECS ํ๋ก์ ํธ ๋๋๋ฉด DOTS๋ก ๋์ด์ฌ๊ฒจ?? ์ฌ์ฌ ํผ์ ๊ณต๋ถํ๋๊ฑฐ ๋นก์ธ๋ค ใ ใ
DOTS๋ Deterministic Math๋ฅผ ์ง์ํ๋ฉด ๊ทธ๋์๊ฐํด๋ด์ผ์ง.. ๋ ๊ฒ์์ ๋ง๋ค๋ ค๊ณ ECS๋ฅผ ํ๋๊ฑด๋ฐ, DOTS๋ ๋ง๋๋๊ฒ ์๋๋ผ ์ฐ๊ตฌํ๋๊ฒ ๋๋ฒ๋ฆด ์ ๋๋ก ์ด๋ ค์ฐ๋..
์ด๋ ต์ง ์์ด... ๊ทธ์ ๋ ํผ๋ฐ์ค๊ฐ ์์๋ฟ์ด์ผ ํํํํํ...
์ด๋ ค์ด๊ฒ๋์์ง๋ง, ์ ์ฝ์ด ๋๋ฌด ๋ง์. ๋ด๊ฐ ์์ง ๊ทธ ์ ์ฝ์ ๊ทน๋ณตํ๋๋ฒ์ ๋ชป์ฐพ๊ฒ ์. ๋ํ์ ์ธ ์๊ฐ AI์ชฝ์ด์ผ. AI๋ DOTS์์ ๋์ฒด ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ ์ง ์์ง๋ ๋ต์ด ์๋์. ๊ทธ๋๋ง ๊ทผ์ ํ ๋ฐฉ๋ฒ์ IAUS ์ฐ๋๊ฑฐ ์ ๋?
๊ทธ๋ฆฌ๊ณ ์๋ฒ์์ DOTS์ฝ๋ ๋ชป์ฐ์์. ์๋ง ์ฐ๋ ค๋ฉด Unity Dedicated ๋ชจ๋๋ก ํด์ผํ ํ ๋ฐ, ์ด๊ฒ๋ ์ข ์ด์ํ๊ฑฐ๋ . ๋ค๋ฅธ๋ฐ์๋ ์๋ฒ ECS๋ฅผ C++์ Entt๋ก ๋ง๋ ๋ค๊ณ ํ๋๋ผ. Dots๋ ๋น์ทํ๊ธดํ๋ฐ, ์ ํจ์ด C++์ด๋๊น ๋งํธํ์ฐ๋ฉด๋. ๋ผ์ด์ ์ค๋ ์๊ณ . ์ด๋ฐ๊ฒ๋ค๋ง ์๋๋ฉด DOTS ์ง์์ ๊ฐ์๊ฑฐ์. ๋ฐฐ์ฐ๋๊ฒ๋ ์ด๋ ค์ด๋ฐ, ์ ์ฝ๋ ๋ง์... ์์ง์ ์ ๋ง ๋ ธ๋ ธ์
https://docs.unity3d.com/kr/2020.3/Manual/com.unity.netcode.html
DOTS์ฉ ๋ฉํฐ์๋ฒ๊ฐ ํ๋ฆฌ๋ทฐ ์ํ
ใ ใ FPS ๋ฉํฐํ๋ ์ด ๊ฒ์ ์์ ๋ก ๋ดค์. ํด๋ณด๋ คํ๋๋ฐ ์คํ์กฐ์ฐจ ์๋๋๋ผ ์ํ์ด. ๊ทธ๋์ ๋์ก์ด. ๋์ค์ ์์ ํ๋๋ฉด ํ๋ฒ ๋ด์ผ์ง. ์ด๋ค๋ฐฉ์์ธ์ง ใ
๋ท์ฝ๋๋ ์์ฆ ๋ ํผ๋ฐ์ค ์ด๋์ ๋ ๋์์ ์๋ฃ ์ฐพ๊ธฐ ์ฌ์ธ๊ฑฐ์ผ.
https://dots-tutorial.moetsi.com/multiplayer/intro-to-unity-netcode-multiplayer
https://dots-tutorial.moetsi.com/dots-netcode/intro-to-dots-netcode
์ด๊ฑฐ๋ถํฐ ๋ณด๋ฉด ๋๊ฒ๋น
์ ๋ํฐ ๊ณต์๋ฌธ์๋ณด๋ค ํจ์ฌ ๋ณด๊ธฐ ์ข๋ค. ใณใณ
์ ํ๋ธ์๋ ๋ง์ด ์ฌ๋ผ์์ผ๋ ์ฐธ๊ณ ํด
๋๋ชจ ์ด๋ ค์
์ค๋ฒ ๋ณด๊ณ ์์์... ๋ ์ด๋ฐ๊ธ ์ข์๋ฐ ์์ง์ฐ๋ฉด ์๋์? ใ ใ