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

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

KoreanFoodie's Study

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-4. JobQueue #3

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-4. JobQueue #3 ํ•ต์‹ฌ : 1. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” JobSerializer ๋ฅผ ์ด์šฉํ•ด, ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ SharedPtr ๋กœ ๋งŒ๋“ค์–ด Push ํ•ด ์คŒ์œผ๋กœ์จ ์ข€ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ Job ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. 2. ๋žŒ๋‹ค์™€ SharedPtr ๋ฅผ ํ•จ๊ป˜ ์“ด๋‹ค๊ณ  ํ•ด์„œ Memory Leak ์ด ์ผ์–ด๋‚˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋žŒ๋‹ค์™€ SharedPtr ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ธฐ๋ณธ์ ์ธ ์„ค๊ณ„๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ธฐ์กด์— ๋งŒ๋“ค์—ˆ๋˜ Job ์„ ์ข€ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์กฐ๋ฅผ ์•ฝ๊ฐ„ ์ˆ˜์ •ํ•ด ๋ณด์ž. ๋จผ์ € Job ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ServerCore ์— ๋งŒ๋“ค์–ด์ค„ ๊ฒƒ์ด๋‹ค. /*--------- Job ----------*/ using CallbackType = ..

Game Dev/Game Server 2023. 12. 20. 16:40
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-3. JobQueue #2

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-3. JobQueue #2 ํ•ต์‹ฌ : 1. Job ๋ณ„๋กœ ํด๋ž˜์Šค ์ƒ์†์„ ๋ฌดํ•œํžˆ ๋Š˜๋ ค๋‚˜๊ฐ€๊ธฐ ๋ณด๋‹ค, Functor ์™€ Tuple ์„ ์ด์šฉํ•ด ๊ฐ Job ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•ด ๋ณด์ž. 2. C++ 17 ์—์„œ๋Š” std::apply ๋ฅผ, C++ 11 ์—์„œ๋Š” Template Meta Programming ์„ ์ด์šฉํ•ด ํŠน์ • Functor ์— ์ž„์˜์˜ ๊ฐฏ์ˆ˜์˜ ์ธ์ž๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” Job ๊ณผ JobQueue ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์‚ฌ์‹ค Job ์ด ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ์ด๋ฅผ ์ƒ์†ํ•ด์„œ ํด๋ž˜์Šค๋ฅผ ๋ฌดํ•œํžˆ ๋Š˜๋ ค๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์€... Job ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค๊ณ  ํ•˜๋ฉด ๋งค์šฐ ๋”์ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค. Job ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์„ ์กฐ๊ธˆ ๊ฐ„๋žตํ™”ํ•˜๊ธฐ ์œ„ํ•ด, ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•ด ๊ฐ ..

Game Dev/Game Server 2023. 12. 20. 06:25
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-2. JobQueue #1

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-2. JobQueue #1 ํ•ต์‹ฌ : 1. Command ํŒจํ„ด์€, ์‹คํ–‰๋  ๋™์ž‘์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ๊ตฌ์ฒด์ ์ธ ๋™์ž‘์€ ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์† ๋ฐ›์€ ๊ฐ์ฒด์—์„œ ๊ฒฐ์ •ํ•˜๋„๋ก ํ•˜๋Š” ์„ค๊ณ„ ๊ธฐ๋ฒ•์ด๋‹ค. 2. Command ํŒจํ„ด๊ณผ JobQueue ๋ฅผ ์ด์šฉํ•˜๋ฉด, ์ด์ „์— Broadcast ๋กœ ์ธํ•œ ๋™์ž‘์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ(LOCK ์œผ๋กœ ์ธํ•œ)์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด์ „ ์‹œ๊ฐ„์— ๊ฐ„๋‹จํ•œ ์ฑ„ํŒ… ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ๋‹ค๋งŒ ์ด์ „ ๋ฐฉ์‹์€ Broadcast ๋ฅผ ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ์‹ฌ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ... ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์šฐ๋ฆฌ๋Š” JobQueue ๋ฅผ ๋งŒ๋“ค์–ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Command ํŒจํ„ด์„ ์ด์šฉํ•ด ์กฐ์•…ํ•˜๊ฒŒ๋‚˜๋งˆ JobQueue ๋ฅผ ๊ตฌ์ถ•ํ•ด ๋ณด์ž. Com..

Game Dev/Game Server 2023. 12. 19. 18:49
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-1. ์ฑ„ํŒ… ์‹ค์Šต

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 6-1. ์ฑ„ํŒ… ์‹ค์Šต ํ•ต์‹ฌ : 1. Chat ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž. ๊ฐ„๋‹จํ•˜๊ฒŒ๋Š” ์ฑ„ํŒ…์ด ์ „ํŒŒ๋  Room ๊ณผ ์ฑ„ํŒ… ํŒจํ‚ท๋งŒ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด ๋œ๋‹ค. 2. ์ฑ„ํŒ…์„ ์ „ํŒŒํ•  ๋•Œ๋งˆ๋‹ค, Room ์—์„œ WRITE_LOCK ์„ ์žก์œผ๋ฉด ๋ณ‘๋ชฉํ˜„์ƒ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์ถ”ํ›„ JobQueue ๋ฅผ ๋„์ž…ํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ์—๋Š” ์ฑ„ํŒ… ํŒจํ‚ท์„ ๋งŒ๋“ค์–ด ๋ณด๋ฉด์„œ, ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹ค์ œ๋กœ ํŒจํ‚ท์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ, ์šฐ๋ฆฌ๊ฐ€ ์ž‘์—…ํ–ˆ๋˜ Protocol.proto ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ด ์ฃผ์ž. syntax = "proto3"; package Protocol; import "Enum.proto"; import "Struct.proto"; message C_LOGIN { } message S_LOG..

Game Dev/Game Server 2023. 12. 19. 14:34
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-9. ํŒจํ‚ท ์ž๋™ํ™” #2

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-9. ํŒจํ‚ท ์ž๋™ํ™” #2 ํ•ต์‹ฌ : 1. ํŒŒ์ด์ฌ๊ณผ jinja2 ๋ฅผ ์ด์šฉํ•ด, ํŒจํ‚ท ํ•ธ๋“ค๋Ÿฌ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ๋ณด์ž. 2. ์ด ํฌ์ŠคํŒ…์—์„œ ๋งŒ๋“  ProtoParser ๋Š” Protocol.proto ์˜ ํŒจํ‚ท ๋ช…์„ธ๋ฅผ ์ฝ์–ด PacketHandler ์˜ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์ €๋ฒˆ ์‹œ๊ฐ„์— ํŒจํ‚ท ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ๋ฐ‘์ž‘์—…(?) ์„ ๋ณด์—ฌ์ค€ ๋ฐ” ์žˆ๋‹ค. ์‚ฌ์‹ค ์ œ๋Œ€๋กœ ํŒจํ‚ท ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, data-driven ํ•˜๊ฒŒ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ฐ„๋‹จํ•œ Flow ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค : Protocol.proto ์— ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ํŒจํ‚ท(๋ฉ”์‹œ์ง€)์„ ์„ ์–ธํ•œ๋‹ค. ์ž๋™ํ™” ํˆด์ด ๋Œ์•„๊ฐ€์„œ Packet ๊ณผ PacketHandler ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๊ฐ ํŒจํ‚ท์— ๋Œ€ํ•œ ์ปค์Šคํ…€ ๋™์ž‘๋งŒ ์ง์ ‘ ๊ตฌ..

Game Dev/Game Server 2023. 12. 18. 23:26
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-8. ํŒจํ‚ท ์ž๋™ํ™” #1

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-8. ํŒจํ‚ท ์ž๋™ํ™” #1 ํ•ต์‹ฌ : 1. ํšจ์œจ์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด, ํŒจํ‚ท์ด ๋ณ€๋™๋  ๋•Œ ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ๊ด€๋ จ protoc ํŒŒ์ผ ๋“ฑ์ด ์ž๋™์œผ๋กœ ์—…๋Žƒ๋˜๊ฒŒ ๋งŒ๋“ค๋ฉด ์ข‹๋‹ค. ๋ฐฐ์น˜ํŒŒ์ผ๊ณผ .vcxproj ๋ฅผ ์ž˜ ์ˆ˜์ •ํ•ด ๋ณด์ž. 2. ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„์—์„œ ๊ฐ ํŒจํ‚ท ๋ณ„๋กœ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ Functor ๋กœ ๋งŒ๋“ค์–ด ๊ฐ ํŒจํ‚ท์— ๋Œ€์‘์‹œ์ผœ ๋†“์œผ๋ฉด, ๊ฐ ์ปจํ…์ธ  ๋‹ด๋‹น์ž๋Š” ํŒจํ‚ท์ด ์ถ”๊ฐ€๋  ๋•Œ ํ•ด๋‹น ํŒจํ‚ท์— ๋Œ€ํ•œ ๊ตฌํ˜„๋งŒ ์‹ ๊ฒฝ์“ฐ๋ฉด ๋œ๋‹ค. ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” Protobuf ๋ฅผ ์„ธํŒ…ํ•˜๋ฉด์„œ, ํŒจํ‚ท ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋˜๋Š”์ง€์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค ๋Œ์ด์ผœ ๋ณด๋ฉด ๋ถˆํŽธํ•œ ์ ์ด ์ด๊ณณ ์ €๊ณณ์— ์‚ฐ์žฌํ•œ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ํŒจํ‚ท์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋ฉด, .protoc ํŒŒ์ผ์„ ๋งค๋ฒˆ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด ์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์‹ฌ์ง€์–ด ์ด ์ž‘์—…์„ Gam..

Game Dev/Game Server 2023. 12. 18. 19:41
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-7. Protobuf

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-7. Protobuf ํ•ต์‹ฌ : 1. protobuf ๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๊ตฌ๊ธ€์—์„œ ์ œ๊ณตํ•˜๋Š” ํˆด์„ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•œ๋‹ค. 2. protobuf ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž„์‹œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ณต์‚ฌ๋Š” ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์œผ๋‚˜, ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™” ๊ณผ์ •์ด ๋งค์šฐ ํŽธ๋ฆฌํ•ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 3. protobuf ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ์–ธ์–ด ๋ฐ OS ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํƒ€ ์„œ๋ฒ„์™€์˜ ์—ฐ๋™์ด ์‰ฌ์›Œ ํ˜‘์—…์—๋„ ๋งค์šฐ ์œ ๋ฆฌํ•˜๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ตฌ๊ธ€์—์„œ ๋งŒ๋“  ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํˆด์„ ์ง€๊ธˆ๊นŒ์ง€ ๋งŒ๋“  ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ฒฐ๊ณผ๋งŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์„ค์น˜ ๋ฐ ์„ธํŒ…ํ•˜๋Š” ๊ณผ์ •์„ ์ž์„ธํžˆ ๊ธฐ๋กํ•  ๊ฒƒ์ด๋‹ˆ, ์ถ”ํ›„ ์„ธํŒ…์— ์–ด๋ ค์›€์„ ๊ฒช์„ ๋•Œ ์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. ๐Ÿค— ๋จผ์ €, protobu..

Game Dev/Game Server 2023. 12. 16. 17:43
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-6. ํŒจํ‚ท ์ง๋ ฌํ™” #3

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-6. ํŒจํ‚ท ์ง๋ ฌํ™” #3 ํ•ต์‹ฌ : 1. ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ ์•ˆ์— ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒฝ์šฐ๋„, ๊ฒฐ๊ตญ Offset ๊ณผ Count ๋ฅผ ์ด์šฉํ•ด ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. 2. ์ถ”ํ›„์— ์†Œ๊ฐœํ•  ProtoBuf ๋ฅผ ์ด์šฉํ•˜๋ฉด, ํŒจํ‚ท์„ ๋งŒ๋“ค ๋•Œ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ผํžˆ ์ฝ”๋“œ๋กœ ๋„ฃ๋Š” ๊ท€์ฐฎ์Œ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค(๋‹ค๋งŒ ๋ถˆํ•„์š”ํ•œ ๋ณต์‚ฌ๊ฐ€ ์žˆ์„ ์ˆ˜๋Š” ์žˆ์Œ). ์ €๋ฒˆ์—๋Š” ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ํŒจํ‚ท์— ๋„ฃ์–ด ๋ณด์•˜๋Š”๋ฐ... ๋งŒ์•ฝ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ ์•ˆ์— ๋˜ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, BuffListItem ์ด๋ผ๋Š” ๊ตฌ์กฐ์ฒด์— ํ•ด๋‹น ๋ฒ„ํ”„์˜ ๋Œ€์ƒ๋“ค ์ •๋ณด(Victims ๋ผ๊ณ  ํ•˜์ž)๋ฅผ ๋‹ด๋Š”๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? struct BuffsListItem { uint64 buffId; float remainTime;..

Game Dev/Game Server 2023. 12. 16. 12:21
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-5. ํŒจํ‚ท ์ง๋ ฌํ™” #2

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-5. ํŒจํ‚ท ์ง๋ ฌํ™” #2 ํ•ต์‹ฌ : 1. ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” PacketList ๋ฅผ ๋งŒ๋“ค๋ฉด, ๋ฒ„ํผ๋ฅผ ์ฝ์„ ๋•Œ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์บ์ŠคํŒ…์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค. ์ž, ์ผ๋‹จ ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ ํ˜•์‹์ธ buffs ์— ๋Œ€ํ•ด ํŒจํ‚ท ์ง๋ ฌํ™”๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฝ”๋“œ๋ฅผ ์ž˜ ๋ณด๋ฉด, ์กฐ๊ธˆ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค. vector buffs; buffs.resize(pkt.buffsCount); for (int32 i = 0; i > buffs[i]; ๋ฐ”๋กœ buffs ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ์ž„์‹œ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ธ๋ฐ... ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ตณ์ด ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์žˆ๋‚˜ ์‹ถ๋‹ค. ๐Ÿค” ์ด ๋ถ€๋ถ„์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด, ์ด๋ฒˆ ๊ธ€์—์„œ..

Game Dev/Game Server 2023. 12. 16. 01:34
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-4. ํŒจํ‚ท ์ง๋ ฌํ™” #1

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-4. ํŒจํ‚ท ์ง๋ ฌํ™” #1 ํ•ต์‹ฌ : 1. ํŒจํ‚ท ์ง๋ ฌํ™”๋ž€, ํฌ์ธํ„ฐ ๋ฐ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ํŒจํ‚ท์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์ด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํŒŒ์‹ฑํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. 2. ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ, Offset ๊ณผ Count ๋ฅผ ์ด์šฉํ•ด ์ง๋ ฌํ™”๋ฅผ ์‰ฝ๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” xml ๋˜๋Š” json ํฌ๋งท์œผ๋กœ ์„ธ์ด๋ธŒ & ๋กœ๋“œ๋ฅผ ํ•˜๋ฉฐ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. xml ์€ ๊ฐ€๋…์„ฑ์ด ์ข‹์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ๋ณต์žกํ•˜๋ฉฐ, json ์€ ํ˜•ํƒœ๊ฐ€ ๊ฐ„๋‹จํ•˜๋ฉฐ ํŒŒ์‹ฑ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํŒจํ‚ท ์ง๋ ฌํ™”์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์˜์–ด๋กœ๋Š” ์‚ฌ์‹ค Serialization ์ธ๋ฐ, ์ง๋ ฌํ™”๋ผ๊ณ  ํ•˜๋‹ˆ ์‚ด์ง ์–ด์ƒ‰ํ•˜๊ฒŒ ๋Š๊ปด์ง€๊ธฐ๋Š” ํ•œ๋‹ค. ๐Ÿ˜… ์–ธ๋ฆฌ์–ผ์—์„œ๋„ Serialization ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ทธ ๋•Œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ณ ..

Game Dev/Game Server 2023. 12. 15. 16:41