Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1103)

KoreanFoodie's Study

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-22. Reader-Writer Lock

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-22. Reader-Writer Lock ํ•ต์‹ฌ : 1. ์ฝ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์“ฐ๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์„ ๊ฒฝ์šฐ, Read Lock ๊ณผ Write Lock ์„ ๋‚˜๋ˆ„์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 2. Write Lock ์˜ ๊ฒฝ์šฐ ์“ฐ๋ ˆ๋“œ์˜ ID ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์†Œ์œ ๊ถŒ์„ ๊ฒฝํ•ฉํ•˜๊ณ , Read Lock ์˜ ๊ฒฝ์šฐ ๊ณต์œ  ์นด์šดํŠธ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. 3. Write Lock ์„ ์žก์€ ์ƒํƒœ์—์„œ Read Lock ์„ ์žก๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Read Lock ์„ ์žก์€ ์ƒํƒœ์—์„œ ๋ฐ”๋กœ Write Lock ์„ ์žก๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์ปจํ…์ธ ์—์„œ, ๋‚ด์šฉ์„ ์ฝ๋Š” ๊ฒฝ์šฐ๋Š” 1์ดˆ์— 100๋ฒˆ ์ผ์–ด๋‚˜๋Š”๋ฐ, ์‹ค์ œ๋กœ ๋‚ด์šฉ์„ ์“ฐ๋Š” ๊ฒฝ์šฐ๋Š” ์ผ์ฃผ์ผ์— ํ•œ ๋ฒˆ ์ผ์–ด๋‚œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ์ด๋•Œ, ์‚ฌ์‹ค ๋‚ด์šฉ์„ ์ฝ์„ ๋•Œ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ๋ณ„..

Game Dev/Game Server 2023. 8. 7. 22:39
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-21. ThreadManager

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-21. ThreadManager ํ•ต์‹ฌ : 1. Thread ๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ธฐ๋ณด๋‹ค, ThreadManager ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•ด ๋ณด์ž. 2. ThreadManager ๋ฅผ ํ†ตํ•ด ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด, ์ดˆ๊ธฐํ™” ๋ฐ ์ข…๋ฃŒ ์‹œ์ ์˜ ์ž‘์—…์„ ์ž๋™ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 3. CRASH ๊ด€๋ จ ๋งคํฌ๋กœ๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•˜์ž. ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, Thread ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ค„ ThreadManager ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์›๋ฆฌ๋‚˜ ๊ธฐ๋Šฅ์€ ๊ฐ„๋‹จํ•˜๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” Thread Local Storage ์— ๊ฐ ์“ฐ๋ ˆ๋“œ๋ณ„๋กœ ID ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ์ƒ์„ฑ์‹œ์— ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ •๋„์˜ ๊ธฐ๋Šฅ๋งŒ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๋‹ค. ThreadManager.h #pragma once #include #in..

Game Dev/Game Server 2023. 7. 27. 15:12
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-17, 18, 19. Lock-Free Stack

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-17, 18, 19. Lock-Free Stack ํ•ต์‹ฌ : 1. Lock-Free Stack ์€ ๋ฝ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ Stack ์— ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ œ๋Œ€๋กœ Push/Pop ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. popCount ๋‚˜ ์ฐธ์กฐ๊ถŒ/์†Œ์œ ๊ถŒ ๊ฐœ๋…์„ ํ™œ์šฉํ•ด ์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. Lock-Free Stack ์€ ์‹ค์ œ๋กœ ํ™œ์šฉํ•˜๊ธฐ์—๋Š” ๊นŒ๋‹ค๋กœ์šฐ๋ฉฐ, Lock ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ด๋ผ๊ณ  ์žฅ๋‹ดํ•  ์ˆ˜ ์—†๋‹ค. ๊ฒฐ๊ตญ ๊ฒฝํ•ฉ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ, ์‹ค์งˆ์ ์œผ๋กœ ์‚ญ์ œ๋ฅผ ํ•˜๋Š” ์“ฐ๋ ˆ๋“œ๋Š” 1๊ฐœ์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 3. compare_exchange_weak ์€ compare_exchange_strong ๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ, spurious fail ์ด ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ๊ทธ sp..

Game Dev/Game Server 2023. 7. 26. 18:58
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-16. Lock-Based Stack/Queue

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-16. Lock-Based Stack/Queue ํ•ต์‹ฌ : 1. Lock-Based Queue/Stack ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด, ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ•ด๋‹น ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•  ๋•Œ ๋ถˆํ•„์š”ํ•œ Lock ์„ ์ถ”๊ฐ€๋กœ ์žก์„ ํ•„์š”๊ฐ€ ์—†์ด, ์‹ฑ๊ธ€์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ์ฒ˜๋Ÿผ Push/Pop ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 2. Push/Pop ํ•จ์ˆ˜ ๋‚ด๋ถ€์ ์œผ๋กœ lock_guard ๋ฅผ ์žก์•„์ฃผ๋ฉด ๋œ๋‹ค. 3. WaitPop ์˜ ๊ฒฝ์šฐ, Condition Variable ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. Queue ๋‚˜ Stack ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ์— ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ฒƒ์„ ์‘์šฉํ•˜๋ฉด, ๊ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํŠน์ • ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๋ฝ์„ ๊ฑธ๊ณ  ํ’€๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๊ฒ ์ง€๋งŒ... ์ด๋Š” ์‚ฌ์‹ค ๋งค์šฐ ๊ท€์ฐฎ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ƒฅ ..

Game Dev/Game Server 2023. 7. 25. 11:29
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-15. Thread Local Storage

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-15. Thread Local Storage ํ•ต์‹ฌ : 1. Thread Local Storage(TLS) ๋Š”, ์“ฐ๋ ˆ๋“œ ๋ณ„๋กœ ํ• ๋‹น๋œ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค. 2. TLS ๋ฅผ ์ด์šฉํ•˜๋ฉด, ๊ฐ ์“ฐ๋ ˆ๋“œ๋ณ„๋กœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ ํž™์ด๋‚˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์—์„œ ๋ณ„๋„์˜ ๋ณ€์ˆ˜ ์„ ์–ธ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด ๋ถˆํ•„์š”ํ•œ Race Condition ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. 3. TLS ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์˜์กด์ ์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, C++ ์—์„œ๋Š” ์ด์ œ ์–ธ์–ด ํ‘œ์ค€์—์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. Thread Local Storage ๋ž€, ์“ฐ๋ ˆ๋ณ„๋กœ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์˜๋ฏธํ•œ๋‹ค. ์Šคํƒ์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ณ„๋„์˜ stack ์˜์—ญ์ด ์กด์žฌํ•˜๊ณ , Heap ๊ณผ ๋ฐ์ดํ„ฐ ์˜์—ญ์„ ๊ณต์œ ํ•˜๋Š”๋ฐ... TLS ์˜ ๊ฒฝ์šฐ, ๊ฐ ์“ฐ๋ ˆ๋“œ๋ณ„..

Game Dev/Game Server 2023. 7. 24. 17:24
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-14. ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ (atomic, ์ฝ”๋“œ ์žฌ๋ฐฐ์น˜)

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-14. ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ (atomic, ์ฝ”๋“œ ์žฌ๋ฐฐ์น˜) ํ•ต์‹ฌ : 1. atomic ์—ฐ์‚ฐ์ด๋ž€, ๋ง ๊ทธ๋Œ€๋กœ ํ•ด๋‹น ์—ฐ์‚ฐ์ด '์›์ž์ '์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๋œป์ด๋‹ค. '์›์ž์ ' ์ด๋ผ๋Š” ๊ฒƒ์€, ํ•ด๋‹น ์—ฐ์‚ฐ ์‚ฌ์ด์— ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ด ๋ผ์–ด๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 2. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์—ฌ๋Ÿฌ ์ด์œ (์ฃผ๋กœ ์ตœ์ ํ™”)๋กœ ์ฝ”๋“œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ memory order ๋Š” ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๋“ค์ด '์ˆ˜์ • ์ˆœ์„œ' ์— ๋™์˜ํ•œ๋‹ค๋Š” ์›์น™์„ ์ง€์ผœ์•ผ ํ•œ๋‹ค. 3. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ ์˜ต์…˜์ด ์žˆ๋‹ค : memory_order_relaxed, memory_order_release, memory_order_seq_cst ์›์ž์  ์—ฐ์‚ฐ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์›์ž์  ์—ฐ์‚ฐ์„ ๋งˆ์น˜ ์ผ์‹œ์ ์œผ๋กœ ๋ฝ์„ ๊ฑด๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ์ •ํ™•..

Game Dev/Game Server 2023. 7. 21. 19:08
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-13. CPU ํŒŒ์ดํ”„๋ผ์ธ (feat. ์ฝ”๋“œ ์žฌ๋ฐฐ์น˜)

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-13. CPU ํŒŒ์ดํ”„๋ผ์ธ (feat. ์ฝ”๋“œ ์žฌ๋ฐฐ์น˜) ํ•ต์‹ฌ : 1. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ฝ”๋“œ ์žฌ๋ฐฐ์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์˜๋„์น˜ ์•Š์€ ๊ฒฐ๊ณผ๊ฐ€ ๋„์ถœ๋  ์ˆ˜ ์žˆ๋‹ค. 2. CPU ํŒŒ์ดํ”„๋ผ์ธ์€ CPU ๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์Šคํ…œ์ด๋‹ค. CPU ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด, ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž„์˜๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ์—์„œ๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ๋กœ์ง์ด ์‹คํ–‰๋จ์ด ๋ณด์žฅ๋˜์ง€๋งŒ, ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์—์„œ๋Š” ๊ผญ ์˜๋„๋Œ€๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”๋ฐ... ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž. volatile bool ready = false; // ๊ฐ€์‹œ์„ฑ, ์ฝ”๋“œ ์žฌ๋ฐฐ์น˜ int32 x = 0; int32 y = 0; int32 r1 = 0;..

Game Dev/Game Server 2023. 7. 19. 20:30
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-12. ์บ์‹œ (Temporal Locality, Spatial Locality)

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-12. ์บ์‹œ (Temporal Locality, Spatial Locality) ํ•ต์‹ฌ : 1. RAM ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ, ์ž์ฃผ ์“ฐ์ผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œ์— ์ €์žฅ๋œ๋‹ค 2. ์บ์‹ฑ ์ฒ ํ•™์—๋Š” Temporal Locality ์™€ Spatial Locality ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ฐ๊ฐ '์ตœ๊ทผ์— ์‚ฌ์šฉ๋œ ๋…€์„์€ ๋‹ค์‹œ ์‚ฌ์šฉ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค' , '๋ฉ”๋ชจ๋ฆฌ์ƒ์œผ๋กœ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ๋…€์„์€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค' ๋ผ๋Š” ์ถ”๋ก ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. 3. ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์กฐํšŒ๋ฅผ ํ•  ๋•Œ๋Š” ์œ„์˜ Temporal Locality ์™€ Spatial Locality ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํ”ํžˆ ์šฐ๋ฆฌ๋Š” ์บ์‹œ๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์กฐํšŒํ•  ๋•Œ, ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ์–ป์–ด์˜ฌ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค..

Game Dev/Game Server 2023. 7. 19. 16:35
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-11. future, promise, packaged_task

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-11. future, promise, packaged_task ํ•ต์‹ฌ : 1. future, promise, packaged_task ๋Š” ๋‹จ๋ฐœ์„ฑ ์ด๋ฒคํŠธ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. 2. ์„ธ ๋…€์„์˜ ์ฐจ์ด๋Š” Level of Control ์— ๋‹ฌ๋ ค ์žˆ๋‹ค. future ๋Š” ํŠน์ • ํ•จ์ˆ˜์˜ ์ž‘์—…์„ ๋งก๊ธฐ๊ณ , packaged_task ๋Š” ์ž‘์—…์„ ๋งŒ๋“  ๋‹ค์Œ, ์“ฐ๋ ˆ๋“œ์— ์ด๋ฅผ ์‹ค์–ด ๋ณด๋‚ธ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, promise ๋Š” ์ž‘์—…์„ ์‹ค์–ด ๋ณด๋‚ด๋ฉด์„œ, ๋™์‹œ์— ์‹ค์–ด ๋ณด๋‚ด๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ future ์— ๋„˜๊ธธ ๊ฐ’์„ ์ปค์Šคํ…€ํ•˜๊ฒŒ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค. 3. '๋น„๋™๊ธฐ์ '์ธ ์ž‘์—…๊ณผ '๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ' ๋Š” ๋‹ค๋ฅธ ์˜๋ฏธ์ด๋‹ค. ์–ด๋–ค ์ž‘์—…์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•ด์„œ, ๊ผญ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•  ํ•„์š”๋Š” ์—†๋‹ค. ์‚ฌ์‹ค ์ž์ฃผ ์“ฐ์ด๋Š” ๋…€์„๋“ค์€..

Game Dev/Game Server 2023. 7. 18. 16:32