๊ธฐ์กด OOP๊ธฐ๋ฐ˜ ์ฝ”๋”ฉ๋„ ํšก์„ค์ˆ˜์„คํ•˜๋Š” ์ง„๊ฒฉ์˜ ๋””์ž์ด๋„ˆ(๋ณ‘์‹ )์ž„.



์˜ค๋Š˜ ์ƒˆ๋ฒฝ 4์‹œ ๋ฐ˜๋ถ€ํ„ฐ ECS ๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ๋’ค์ ธ๋ณด๋ฉฐ ์ด๊ฒƒ ์ €๊ฒƒ ์ฐพ๋‹ค๊ฐ€ ์‰ฌ๋‹ค๊ฐ€ ํ•˜๋ฉด์„œ ์ฐพ์•„๋ณด๊ณ  ์‹คํ—˜ํ•ด ๋ณธ ๋‚ด์šฉ๋“ค


1. Dots = ECS + Job System + Burst Compiler๋กœ ์ถ”์ •๋œ๋‹ค.



2. ์ด ๋ง์€ Job System๊ณผ Burst Compiler๋งŒ ๋”ฐ๋กœ ๋–ผ์–ด๋‚ด์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. (์ถœ์ฒ˜https://www.youtube.com/watch?v=ZuzBOXUuEeM. ์ดˆ๋ฐ˜๋ถ€์— ์ด์•ผ๊ธฐ ํ•จ.)

+ ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ์€ ECS๊ฐ€ ์•„๋‹Œ ์ด ๋‘˜์ธ ๋“ฏ ํ•˜๋‹ค. ECS๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฐ์žฌ ์•ˆ๋˜๊ฒŒ ํ•˜๋Š”๊ฒŒ ๋ฌผ๋ก  ์ „์ œ์ง€๋งŒ.



3. ์œ ๋‹ˆํ‹ฐ์˜ ECS๋Š” ์•„์ง ๋ถˆ์™„์ „ํ•œ๋“ฏํ•จ. ํ•ด๋ณด๋‹ˆ๊นŒ ๋ณ„์˜๋ณ„ ์ด์ƒํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜๋‹ค. Authoring ๋ถ€ํ„ฐ ํ•ด์„œ ์ด๊ฒŒ ๋ญ” ๊ฐœ์ง€๋ž„์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Œ. ์•„๋งˆ ๊ธฐ์กด OOP ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•ด์„œ ๊ฐ์ฒด์ง€ํ–ฅ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ์Šˆ๋ฃจ๋ฃจ๋ฃฝ ํ•˜๊ณ  ๋‚˜์˜ค๊ฒŒ ํ•ด์„œ ์ง๊ด€์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ํ•ด ์ค€๋‹ค์Œ, ์„œ๋ธŒ์”ฌ์˜ Authoring์„ Runtime์œผ๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ค์‹œ ECS๋กœ ์ดค๋ผ๋ผ๋ž‘~ ํ•˜๊ณ  ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์•„์ง๊นŒ์ง€๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•ด์„œ ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‡Œํ”ผ์…œ์ž„



4. ์„œ๋ธŒ์”ฌ์€ ๋„๋Œ€์ฒด ์ •์ฒด๊ฐ€ ๋ญ˜๊นŒ



5. 2๋ฒˆ์„ ๊ทผ๊ฑฐ๋กœ ์ด ๊ฐค์—์„œ๋„ ํ•œ ์ธ๋ถ•์ด๊ฐ€ ์“ฐ๊ณ ์žˆ๋Š” LeoECS์™€ ์žก์‹œ์Šคํ…œ, ๋ฒ„์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ•ฉ์ณ๋ณด๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์Œ. ์ง€๊ธˆ์€ ์ฟจํƒ€์ž„ ๋Œ์•„์„œ ๋’ค์ ธ๊ณ„์‹œ๋‚˜ ์œ„๋Œ€ํ•˜๊ณ  ์ „์ง€์ „๋Šฅํ•˜์‹  GPT4๋‹˜๊ป˜์„œ ์—ฌ๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๋ฐท์–ด์ฃผ์…จ๋Š”๋ฐ ์ฝ”๋“œ๊ฐ€ ์˜ค๋ฅ˜ ์•ˆ๋‚  ํ™•๋ฅ ์ด 5๋ฒˆ ์ฝ”๋“œ ๋ฐท์–ด๋‚ด๊ฒŒ ํ•˜๋ฉด 1๋ฒˆ ์„ฑ๊ณตํ•˜๋Š” ์ •๋„์ธ ๋“ฏ. (๊ฐฐ์Œจ๋ผ)



6. 4๋ฒˆ์—์„œ ์„ฑ๊ณตํ•œ ์ฝ”๋“œ๋กœ ๋Œ๋ ค๋ณธ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ


- ํ”„๋กœํŒŒ์ผ๋ง์€ ๋Œ๋ฆฌ์ง€ ์•Š์•˜์Œ. ์• ์ดˆ์— ECS ๊ธฐ๋ฐ˜ ์ฝ”๋“œ๊ฐ€ OOP ๊ธฐ๋ฐ˜ ์ฝ”๋“œ๋ณด๋‹ค ํ”„๋ ˆ์ž„์ด ๋” ์•ˆ์ข‹๊ฒŒ ๋‚˜์˜ด.(ECS 40~50FPS, OOP 55~60FPS์–ธ์ €๋ฆฌ) ๋ฌด์Šจ ์ด์œ ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Œ. ํ”„๋ ˆ์ž„๋””๋ฒ„๊ฑฐ ํ™•์ธ ๊ฒฐ๊ณผ SRP๋ฐฐ์ฒ˜๋„ ๋‘˜ ๋‹ค ์ž˜ ๋จน๋Š” ์ค‘.


- ์กฐ๊ฑด์€ URP/Lit์‰์ด๋”๋ฅผ ์“ฐ๋Š” ํ๋ธŒ 4์ฒœ๊ฐœ ๋ฐฐ์น˜. OOP๋Š” Start์—์„œ instantiate(GameObject)๋กœ ํ•œ๋ฒˆ๋งŒ ๋ฟŒ๋ฆผ. ๊ทธ์™ธ์— ์ถ”๊ฐ€์ ์ธ ์—…๋ฐ์ดํŠธ ์—†์Œ.(๋กœํ…Œ์ด์…˜์ด๋‚˜ ํฌ์ง€์…˜ ๋ณ€๊ฒฝ ๋“ฑ)



7. ๊ทธ๋ž˜ ECS๋กœ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์บ์‹œ์ ์ค‘๋ฅ ์„ ๋†’ํžˆ๊ธฐ ์œ„ํ•ด์„œ๋‹ˆ๊นŒ, Translate๋„ ํ•œ๋ฒˆ ์‹คํ—˜ํ•ด๋ด„. ๊ฒฐ๊ณผ ๋˜‘๊ฐ™์Œ.



8. ๋ณ„๊ฐœ๋กœ LeoECS ๊ด€๋ จ ์œ ํŠœ๋ธŒ ์ž๋ฃŒ๋ฅผ ๋‹ค ์ฐพ์•„๋ณด๋‹ˆ ๋Ÿฌ์‹œ์•„์–ด๋ฟ์ž„. ์ข†๊ฐ™์Œ +1.



9. ๋‚ด ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋œ ECS๊ธฐ๋ฐ˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์ด๋ฆ„์€ ๊ฐ๊ฐ FuxkYouECS, MotherFuxkerECS, ECSBitch์ž„



์˜ค๋Š˜๋„ ์—ด์‹ฌํžˆ ๋Œ€๊ฐ€๋ฆฌ ๊นจ์ง€๋Š” ์ค‘