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

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

KoreanFoodie's Study

[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
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-3. Unicode

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-3. Unicode ํ•ต์‹ฌ : 1. ๋ฌธ์ž์—ด์„ ํ•ธ๋“ค๋ง์—๋Š” 2๊ฐ€์ง€ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค. ํ•˜๋‚˜๋Š” Character Set ์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” Encoding ์ด๋‹ค. 2. Unicode ๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ž์—ด์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” Set ์œผ๋กœ, ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์— ๋”ฐ๋ผ UTF-8 ์ด๋‚˜ UTF-16 ๋“ฑ์œผ๋กœ ๋‚˜๋‰˜๊ฒŒ ๋œ๋‹ค. 3. MBCS ๋Š” ๋ฌธ์ž์˜ ํŠน์ง•๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๋ฐ”์ดํŠธ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, WBCS ์€ ๋ชจ๋“  ๋ฌธ์ž์—ด์ด ๋™์ผํ•œ ๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ต์ˆ™ํ•˜์ง€๋งŒ ๋ฌผ์–ด๋ณด๋ฉด ํ•ญ์ƒ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋‚ด์šฉ, ์œ ๋‹ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ผ๋‹จ Unicode ์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋ ค๋ฉด ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ์˜ ๋‘ ์š”์†Œ, 'Character Set' ๊ณผ 'Encoding' ์„ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค. ๋จผ์ €,..

Game Dev/Game Server 2023. 12. 15. 12:02
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-2. PacketHandler

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 5-2. PacketHandler ํ•ต์‹ฌ : 1. ๋‹ค์–‘ํ•œ ํŒจํ‚ท์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํŒจํ‚ท๋ณ„๋กœ enum ์„ ๋งŒ๋“ค๊ณ , ๊ฐ enum ๋ณ„๋กœ ํŒจํ‚ท์„ ํ•ธ๋“ค๋งํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด switch ๋ฌธ์œผ๋กœ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 2. ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒฝ์šฐ๋„ Primitive Type ์„ ์ฝ๋Š” ๊ฒฝ์šฐ์™€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค. ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋‚˜ ๊ฐฏ์ˆ˜ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค! ์ด์ „ ์‹œ๊ฐ„์—๋Š” Buffer Helper ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ฒ„ํผ๋ฅผ ์กฐ๊ธˆ ๋” ์šฉ์ดํ•˜๊ฒŒ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ๋ถ€์กฑํ•˜๋‹ค! ์ผ์ผํžˆ ์ž„์˜์˜ ๊ฐ’์œผ๋กœ ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ์ฑ„์›Œ ํŒจํ‚ท์„ ์กฐ๋ฆฝํ•˜๊ณ  ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ์ข€ ๋” ์ •ํ˜•ํ™”๋œ ํ˜•ํƒœ๋กœ ํŒจํ‚ท์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” PacketHandler ..

Game Dev/Game Server 2023. 12. 15. 01:05
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 4-10. PacketSession

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 4-10. PacketSession ํ•ต์‹ฌ : 1. ๊ฐ„๋‹จํ•˜๊ฒŒ ํŒจํ‚ท์„ ๋งŒ๋“ค์–ด ๋ณด์ž. ์‚ฌ์‹ค ๋ฐ์ดํ„ฐ์— size ์™€ id(ํ”„๋กœํ† ์ฝœ) ์„ ํ—ค๋”๋กœ ๋ถ™์ด๋ฉด, ๊ทธ๊ฒŒ ๊ธฐ๋ณธ์ ์ธ ํŒจํ‚ท์˜ ํ˜•ํƒœ๋‹ค. 2. Session ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋„ฃ์„ ๋•Œ๋Š” ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ์˜ ์ •ํ•ฉ์„ฑ์ด ๊นจ์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์ž. ์ด๋ฅผ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ, ๋ฐ”๋กœ ์„ธ์…˜์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  Disconnect ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋ก๋งŒ ํ•œ ๋‹ค์Œ ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๊ฐ€ Dispatch ๋  ๋•Œ ์„ธ์…˜์„ ์ œ๊ฑฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ์ €๋ฒˆ๊นŒ์ง€๋Š” ๋ฒ„ํผ์— ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋‚ด๋ ค๊ณ  ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๊ทธ๋ƒฅ ๋‹ด์•„์„œ ๋ณด๋ƒˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‹ค์ œ ๊ฒŒ์ž„์—์„œ๋Š” ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์Šจ ๋ฐ์ดํ„ฐ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ํ”ํžˆ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํŒจํ‚ท์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, ํ•ด๋‹น ์ •๋ณด์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ์ •๋ณด(ํ”ํžˆ ํ—ค๋” ๋ถ€๋ถ„์—..

Game Dev/Game Server 2023. 12. 14. 18:50