Match3 ๋ง๋ ์ ์๊ณ DOTS๋ ๋์ถฉ ์๊ฒ ์ผ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์์๊ฑฐ๋ผ ์์ ๊ฐ์ด ๋์ณค๋๋ฐ
DOTS๋ก ์์ ํ ๋๋ ๊ตฌํ์ ๋ค๋ฅด๊ฒ ์ ๊ทผํด์ผ ํ๋๊ฑด๊ฐ ์ถ๋ค.
Job์ ์ด์ฉํด์ NativeHapMap ์ AllGamePieces ์ AllTiles๋ฅผ ๋ด์์ค๋ ๊ฒ์ ๋ฌด๋ํ ์ํ๋๋ฐ Match์ ํ๋ ค๊ณ ๊ฐ๋ก ์ธ๋ก ๋น๊ตํ๊ณ Match๋ ๋ ์๋ค์ DynamicBuffer์ ๋ด์์ฃผ๋ฉด ๋ ์ค ์์๋๋ฐ
DynamicBuffer<GamePieceData> matches = new DynamicBuffer<GamePieceData>();
์ด๋ ์์ด NullReference๊ฐ ๋ฌ๋ค.
DOTS์์๋ ๊ด๋ฆฌ๋๋ ํ์ ์ ์ธ ์ ์์ผ๋ NativeArray ๋๋ DynamicBuffer๋ฅผ ๋์ ์ฌ์ฉํ๋ฉด ๋๊ฒ ๊ตฌ๋ ์ถ์๋๋ฐ
ํ ๋น์ด ์๋๋๊ตฌ๋ง..
GamePiece Entity ๊ฐ๊ฐ์ ๋งค์นญ๋ GamePiece๋ฅผ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ผ ํ๋ ๊ฒ์ธ๊ฐ...?
GamePiece Entity ๊ฐ๋ณ๋ก ๋ณธ์ธ์ด ๋งค์นญ๋์๋์ง ์ฒดํฌ๋ฅผ ํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ผ ํ๋ ๊ฒ์ธ๊ฐ? (์ด๊ฒ ์ข ๋ก๊ธฐ๋๋ฐ?)
๋ด๊ฐ DOTS ์ ๋ํด ๋ชจ๋ฅด๋ ๊ฒ์ด ๋ง์ ๊ฒ์ธ๊ฐ ์๋๋ฉด ๊ตฌํ ๋ฐฉ์์ ๋ค๋ฅธ ์์ผ๋ก ํด์ผ ํ๋ ๊ฒ์ธ๊ฐ.
์ค.. ์ ์ด์์ฌ!!! ๋์๊ฒ ๋์๋ ์ฉ๊ธฐ์ ์งํ๋ฅผ ์ฃผ์์ต์์!!!
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ผ๋จ ์์ผ๊ฒ ์ด.. ๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ธฐํ ์ข ์์ผ์ค์ผ์ง
DOTS๋ฅผ ํ๋ ์์๊ฒ ์ ๋ ์๋น ์์ํ ๋ฐใ ใ ๊ธฐ์กด ํจ๋ฌ๋ค์์ ์์งํค๋ ํํ๋ผ ๋ํํ ๋ง์ด ์ด๋ ต๋๋ผ - dc App
๋ ํผ๋ฐ์ค๊ฐ ์์ผ๋ ์ด๋ค ์์ผ๋ก ์ ๊ทผํด์ผ ํ ์ง ๋ถ๋ช์น๋ฉฐ ํด์ผํ๋ ๋จธ๋ฆฌ ์ํ๋ค... ๋จธ๋ฆฌํธ๋ฝํ๋ ๋๋ ๋๋ค.. ๊น์ ๋ฐ๋ค ํ๋ณตํ ๋ํ๋ก ์ฌํ์ ๋ ๋๋ ๋๋..
์์ ํ ๋ง๋๋ก, DOTS์ฝ๋ ์ง๋ ค๋ฉด ๊ธฐ์กด์ ๊ธธ๋ค์ฌ์ก๋ ๊ฐ์ฒด์งํฅ์ ์ธ ์ฌ๊ณ ๋ฅผ ๊ฑฐ์ ๋ฒ๋ ค์ผ๋จ... ๋๋ ํ 50% ๋ฒ๋ฆฌ๋๋ฐ 3๋ ๊ฑธ๋ฆผ..
๋ง์ด! ๋ด๊ฐ ์ค๋ ์ฝ์งํ๋ฉด์ ๋๋๊ฒ ๊ฐ์ฒด์งํฅ์ ์ฌ๊ณ ๋ก ์ ๊ทผํด์ ์ด ์ฌ๋จ์ด ๋๋ฏ ์ถ์ด ๋ฏธ์ณ๋ฒ๋ฆฌ๊ฒ ๋ค
๊ทผ๋ฐ ์ ๋ฐ๊ฒ ์์๋ DynamicBuffer๋ผ๋๊ฒ. ๋ด๊ฐ์๊ธฐ๋ก๋ EntityManager.GetBufferํด์ ์์ฑํ์ง ์์๋
DynamicBuffer๋ List ๊ฐ์๊ฑฐ์ผ. DynamicBuffer T์ Buffer ํ์ ๋ฃ๋๊ฑฐ์ง. GetBuffer๋ Entity์ ์๋ DynamicBuffer๋ฅผ ๊ฐ์ ธ์ค๋๊ฑฐ๊ณ .. ๋๋ ์์คํ ๋ด๋ถ์์ DynamicBuffer๋ฅผ ํ ๋นํ ์ ์๋์ค ์์๋๋ฐ ๊ทธ๊ฒ ์๋์์.. ํด๋์ค๊ฐ ์๋ ๊ตฌ์กฐ์ฒด๋ผ์ ๊ทธ๋ฐ๊ฐ๋ฒผ
์ ์ผํ ๋ค์๋๋ฐ ์์คํ ์๋ ๋ญ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ฒ ๋ฌ๋ค๊ณ . ์ ๊ธฐ๋ฐฉ๊ธฐํ๊ตฌ๋ง
SystemHandle ์ด๋ผ๊ณ ์๊ธด ํด CompoentData๋ฅผ ์์คํ ์์ ์ ์ญ๋ณ์์ฒ๋ผ ์ฌ์ฉํ ์ ์๋๊ฑฐ์ง.
์ฟ๊ฐํผ๊ฒ DOTS๋ ์๋ฌ๋๋ฉด ๋ด์๋ชป์ธ์ง ์ ๋ค์ด ์์ง experiment์ฌ์๊ทธ๋ฐ๊ฑด์ง ๊ตฌ๋ถ์ด์๊ฐ๋จ๋ง์ด์ฌ
ใ ใ ใ ๊ทธ๋ฐ๊ฑฐ ๋ง์ง ๋ง์ด 1.0์ด์ง ์ฒด๊ฐ์ 0.4๋๋๊ฑฐ ๊ฐ์ ใ ใ
ํน์ Buffer๋ Union๋๋??? - dc App
SystemHandle์๋ค๊ฐ Buffer๋ฅผ ๋ฃ์ด์ ๊ฑฐ๊ธฐ์ ๋งค์นญ๋ ์ ๋ค์ ๋ฐ์ด์ค๋ณผ๊น...
๋งค์นญํ ์ํฐํฐ๋ค์ ์ ๋ณ์ ํ์๊ฑฐ๊ณ , ๊ฐ๋ด๋ค ์ฌ๋ผ์ง๊ฒ ํ๊ณ ์์ ์ ๋ค ๋ด๋ฆฌ๋๊ฑด๊ฐ?
์ ๋ง์. ์ด๋ํ ๊ฒ์ํผ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก 4๋ฐฉํฅ 2์นธ์ฉ ๊ฒ์ฌํด์ ๋งค์นญ๋๋ฉด ์ญ์ ํ๊ณ ์์ ์ ๋ค์ด ๋น์นธ์ผ๋ก ๋ด๋ ค์ค๊ณ
๊ทธ๋ผ ์ ๋ณํ์ ๋ค ํ๊ทธ TagLineMatchDestroy ๋ฌ์์ฃผ๊ณ ํด๋น ํ๊ทธ ๋งคํ๋ ์ ๊ฒ์ฌํ๋ ์์คํ ์ด ์ ํ๊ทธ ํ์ง๋ ์ ๋ค ํ์ผ์ ๋ณด๋ ๋ ๋ ค์ฃผ๋ฉด ์ฌ๋ผ์ง๊ฑฐ๊ณ . ๋ฐ์ผ๋ก ๋จ์ด์ง๋๊ฑด DescendTileWhenBelowEmptySystem(๋น์ด์์ผ๋ฉด ์๋๋ก ๋ด๋ฆฌ๋ ์์คํ )๊ฐ์๊ฑฐ ๋ง๋ค์ด์ ํ์ผ์ํฐํฐ๋ค ๋งคํ๋ ์ ์ํํ๋ค๊ฐ ๋ฐ์ ๋น์ด์์ผ๋ฉด ๋ด๋ ค์ฃผ๋๊ฑฐ ํด์ฃผ๋ฉด ์๋๋?
ํ๊ธด ์ด๊ฑธ ์ก์์คํ ์ผ๋ก ์ฌ์ฐจ์ ์ฐจํ๋ ค๋ฉด ์ด๊ฒ์ ๊ฒ ๋ญ๊ฐ ์ ํด์ง ๋ฐฉ์์ด ์๋๋ฐ, ๊ทธ๊ฑด ๋๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค. DOTS๋ Job์์ ํ๋ ค๋ฉด ๋ญ๊ฐ ์์์ผํ ๊ฒ๊ณผ ์ง์ผ์ผํ ๊ฒ์ด ์ค๋๋ง์์๋ฆฌ..
๊ทธ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ ์์ ์ ๋ณ๋ ์ ๋ค์๊ฒ ํ๊ทธ๋ฅผ ๋ถ์ฌ์ฃผ๋ ๋ฐฉ์. ๋งค์นญ๋ ๋ ์์ด๋ฉด ํ๊ทธ๋ฅผ ๋ถ์ผ๋ ค๊ณ ํ๊ณ ์์. ๊ฐ์ฒด์งํฅ๊ณผ ๋ค๋ฅด๊ฒ ์ ๊ทผํด์ผ ๊ฒ ๋๋ผ๊ตฌ - dc App
DOTS๋ Entity์ ์ปดํฌ๋ํธ ๋ณํ๋ก ๋ก์ง์ ์ง์ผํ๋๋ฏ. ์์คํ ์ค๊ฐ์ ๋ฐฐ์ด์ ํ ๋นํด์ ์ธ์๊ฐ ์๊ตฐ.. - dc App