์ฒ ๊ถŒ์„œ ๋น ๋ฅธ ๋„คํŠธ์›Œํฌ ๋ฐ˜์‘์†๋„์— ์ ํ•ฉํ•œ ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ๋กœ, Rollback Netcode๋ผ๋Š”๊ฒŒ ์žˆ๋‹ค๋Š”๊ฑธ ๋ฐฐ์› ๋Š”๋”” C++๋กœ๋Š” GGPO๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋”๋ผ.


์ฐจํ›„ ๊ฐ„๋‹จํ•œ 4์ธ ๋„คํŠธ์›Œํฌ ๊ฒŒ์ž„๋งŒ๋“ค๋•Œ ์จ๋จน์œผ๋ ค๊ณ  ๊ผญ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์—ˆ๋Š”๋””


์ด๊ฒŒ ์˜ˆ์ „์— ๋งŒ๋“ค์—ˆ๋˜ Lockstep ๋™๊ธฐํ™” ๊ธฐ๋ฒ•๋ณด๋‹ค ์ถ”๊ฐ€๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๊ฒŒ ์žˆ๋”๋ผ.


Lockstep์€ ๊ทธ๋ƒฅ Deterministic(๊ฒฐ์ •๋ก ์ ) ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ตฌํ˜„ํ•˜๊ณ , Input์„ ๋ฏธ๋ž˜์— ์˜ˆ์•ฝ์„ ํ•˜๊ณ , ์–‘์ชฝ ๊ธฐ๊ธฐ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋ฉด ๋ฌ๊ฑฐ๋“ 


๋Œ€์‹  ์ด๊ฒŒ ๋‹จ์ ์ด, ํ˜„์žฌ ์ž…๋ ฅ์„ ๋ฏธ๋ž˜์— ์˜ˆ์•ฝ์„ ํ•˜๋Š”๊ฑฐ๋‹ค๋ณด๋‹ˆ, ๋ฐ˜์‘์†๋„๊ฐ€ ๋А๋ฆผ.


๊ทผ๋ฐ Rollback์€ Deterministic ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ๋ฒ ์ด์Šค๊ธด ํ•œ๋ฐ, ๋กœ์ปฌ Input์€ ๋ฐ”๋กœ ๋กœ์ปฌ์—์„œ ์ฒ˜๋ฆฌํ•ด๋ฒ„๋ฆฌ๊ณ , ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋‚ด Input์„ ์ „์†กํ•ด๋ฒ„๋ฆผ.


์˜ˆ๋ฅผ๋“ค๋ฉด ๋‚ด Input์ด 280 tick์— ๋ฐœ์ƒํ–ˆ๊ณ  ๊ทธ๊ฑธ ์ „์†กํ•˜๋ฉด, ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒ 300tick์ฏค์— ๋„์ฐฉํ•จ.


๊ทธ๋Ÿผ ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด๋Š” 280tick ๊ณผ๊ฑฐ๋กœ ๋Œ์•„๊ฐ€์„œ(๋งค ํ‹ฑ๋‹น ๊ฒŒ์ž„์›”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋†“์Œ) ๋ฐ›์€ Input์„ 280ํ”„๋ ˆ์ž„์— ์ง‘์–ด๋„ฃ๊ณ  ์›๋ž˜ 300ํ”„๋ ˆ์ž„๊นŒ์ง€ ์ˆœ์‹๊ฐ„์— ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ํ•ด๋ฒ„๋ฆผ.


์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋กœ์ปฌ์—์„œ๋Š” ๋งค์šฐ ๋น ๋ฅธ ๋ฐ˜์‘์†๋„๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ๋ณด์žฅ๋จ. ํ•‘์ด ์ข€ ๋А๋ ค๋„, ์„œ๋กœ ๋™๊ธฐํ™”๊ฐ€ ์ž˜ ์ด๋ฃจ์–ด์ง.


๋Œ€์‹  ์ด๊ฒŒ ๊ฐ€๋Šฅํ•˜๋ ค๋ฉด, ๋งค ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋งˆ๋‹ค ๊ฒŒ์ž„์›”๋“œ ๋ณต์‚ฌ๋ณธ(Snapshot)์„ ์ตœ์†Œํ•œ 3์ดˆ(์ดˆ๋‹น 60ํ‹ฑ์ด๋ฉด 180๊ฐœ)์˜ ๊ฒŒ์ž„์›”๋“œ๋ฅผ ์บ์‹ฑํ•ด๋†“๊ณ  ์žˆ์–ด์•ผ ํ•จ.


ECS์—์„œ๋Š” ์–ด์งœํ”ผ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ Component๋กœ๋งŒ ์ €์žฅ๋˜์–ด ์žˆ์–ด์„œ, ๊ทธ๋ƒฅ ๊ฒŒ์ž„์›”๋“œ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ Dumpํ•ด๋ฒ„๋ฆฌ๋ฉด ์ €์žฅ ๋. ๋กœ๋“œํ•˜๋Š”๊ฒƒ๋„ ๋งค์šฐ ๋น ๋ฆ„


์„œ๋ฒ„๋Š” DotnetCore์— TCP์„œ๋ฒ„ ํ•˜๋‚˜ ๋„์šฐ๊ณ , ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ๋งŒ ๋ฆด๋ ˆ์ด ํ•ด์ค„ ๋ฟ, ๊ทธ ์–ด๋–ค ๋‹ค๋ฅธ ์ •๋ณด๋„ ๊ณต์œ ์•ˆํ•จ.

์ฝ”๋“œ๋Š” ๊ทธ๋ƒฅ ์‹ฑ๊ธ€๊ฒŒ์ž„ ์งœ๋“ฏ์ด ๋งŒ๋“ค๋ฉด ์•Œ์•„์„œ ๋„คํŠธ์›Œํฌ ๋จ.


์•„๋ž˜๋Š” ์ด ํ•‘ํ ๊ฒŒ์ž„ ์‹œ์Šคํ…œ์ด๋ž‘ ์ฝ”๋“œ




๊ฐ„๋‹จํ•œ ์‹œ์Šคํ…œ๋“ค ๋ช‡๊ฐœ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์Œ. ํ™•์‹คํžˆ ECS๊ฐ€ ๋‹จ์ˆœ ์‹ค์‹œ๊ฐ„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒŒ์ž„ ๋งŒ๋“œ๋Š”๊ฑฐ๋Š” ์ •๋ง ํŽธํ•œ๋“ฏ.


์•„๋ž˜๋Š” ์ด ๋™๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ํ•ต์‹ฌ ๋ฃจํ”„ ์ฝ”๋“œ์ž„



๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ˜„์žฌ ๊ฒŒ์ž„์›”๋“œ๋ฅผ ์ €์žฅํ•˜๊ณ , ํ˜„์žฌ ์ž…๋ ฅ์„ ์ „์†กํ•˜๊ณ , ๋‹ค๋ฅธํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ์„ ์˜ˆ์ธกํ•˜๊ณ , ๋กค๋ฐฑ์ด ํ•„์š”ํ•˜๋ฉด ํ•˜๊ณ  ๊ทธ๋Ÿฐ์‹.


๋Œ€์ถฉ ๋Œ์•„๊ฐ€๋Š”๊ฑฐ ๋ณด๊ณ  ์‹ถ์–ด์„œ ๋ง‰ ์งœ๋ณด๊ธด ํ–ˆ๋Š”๋ฐ, ๋˜๋‹ˆ๊นŒ ์ฐธ ์‹ ๊ธฐํ•ด์„œ ๊ณต์œ ํ•ด๋ด„