Skip to content

Latest commit

ย 

History

History
77 lines (56 loc) ยท 3.33 KB

File metadata and controls

77 lines (56 loc) ยท 3.33 KB

CodeNames C++ IOCP

Windows IOCP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•œ ์‹ค์‹œ๊ฐ„ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด CodeNames ๊ฒŒ์ž„ ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค. C++17๊ณผ Winsock2๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ, SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” Claude AI(Sonnet, Haiku)๋ฅผ ์‚ฌ์šฉํ•œ Vibe-Coding๋กœ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


์ฃผ์š” ๊ตฌํ˜„ ๊ธฐ๋Šฅ

โ€ข IOCP ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ๋„คํŠธ์›Œํฌ ํ†ต์‹  โ—ฆ Windows IOCP๋ฅผ ํ™œ์šฉํ•œ ๊ณ ์„ฑ๋Šฅ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์„œ๋ฒ„ โ—ฆ ๋™์‹œ ๋‹ค์ค‘ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ (4๋ช… ๋™์‹œ ๊ฒŒ์ž„ ๋งค์นญ) โ—ฆ ์›Œ์ปค ์Šค๋ ˆ๋“œ ํ’€ ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

โ€ข ์‚ฌ์šฉ์ž ์ธ์ฆ ์‹œ์Šคํ…œ โ—ฆ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ฐ˜ ๊ณ„์ • ๊ด€๋ฆฌ โ—ฆ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ํ† ํฐ ๊ธฐ๋ฐ˜ ์„ธ์…˜

โ€ข ๊ฒŒ์ž„ ๋งค์นญ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ โ—ฆ ํ”Œ๋ ˆ์ด์–ด ๋งค์นญ ํ ์‹œ์Šคํ…œ โ—ฆ 4๋ช… ๋ชจ์ด๋ฉด ์ž๋™ ๊ฒŒ์ž„ ์‹œ์ž‘ โ—ฆ ํŒ€ ๋ถ„๋ฐฐ ๋ฐ ์—ญํ•  ์ž๋™ ํ• ๋‹น (์ŠคํŒŒ์ด๋งˆ์Šคํ„ฐ/์š”์›)

โ€ข ์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„ ๋™๊ธฐํ™” โ—ฆ ํ„ด ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„ ์ƒํƒœ ์—…๋ฐ์ดํŠธ โ—ฆ ์นด๋“œ ๊ณต๊ฐœ ์ƒํƒœ ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™” โ—ฆ ๊ฒŒ์ž„ ๋‚ด ์ฑ„ํŒ… ๊ธฐ๋Šฅ

โ€ข Observer ํŒจํ„ด ๊ธฐ๋ฐ˜ UI ๋™๊ธฐํ™” โ—ฆ GameState ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ ๋ชจ๋“  UI ์—…๋ฐ์ดํŠธ โ—ฆ 9๊ฐœ ๊ฒŒ์ž„ ์ƒํƒœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜

โ€ข Windows Console ๊ธฐ๋ฐ˜ UI โ—ฆ 5๊ฐœ ํ™”๋ฉด ๊ตฌํ˜„ (๋กœ๊ทธ์ธ, ๋ฉ”๋‰ด, ๋งค์นญ, ๊ฒŒ์ž„, ๊ฒฐ๊ณผ) โ—ฆ ์ปฌ๋Ÿฌ ํ…์ŠคํŠธ, 5x5 ์นด๋“œ ๊ทธ๋ฆฌ๋“œ


๊ธฐ์ˆ  ์Šคํƒ

Language: C++17
Networking: Windows IOCP, Winsock2
Database: SQLite3
UI: Windows Console API
Build: CMake, vcpkg
Compiler: MSVC 19.36 (Visual Studio 2022)
Platform: Windows x64


Vibe Coding ํ˜‘์—… ๊ณผ์ •

์ด ํ”„๋กœ์ ํŠธ๋Š” Vibe Coding ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋œ ํ˜‘์—… ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ AI์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ (bowons)

๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ Manager ๊ณ„์ธต์œผ๋กœ ๊ตฌ์กฐํ™”ํ•˜์—ฌ NetworkManager, SessionManager, DatabaseManager, GameManager๋กœ ๋ถ„ํ• ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋“ˆ ๊ฐ„ Mediator ํŒจํ„ด๊ณผ Observer ํŒจํ„ด ๋“ฑ ๋””์ž์ธ ํŒจํ„ด์„ ์ ์šฉํ•˜์—ฌ ๋А์Šจํ•œ ๊ฒฐํ•ฉ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด Cํ”„๋กœ์ ํŠธ์— ์ •์˜๋œ ๊ฒŒ์ž„ ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•ด ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„ ํ˜ธํ™˜์„ฑ์„ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๊ตฌํ˜„ (Claude 4 Sonnet)

bowons์ด ์„ค๊ณ„ํ•œ Manager ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค:

  • NetworkManager: Windows IOCP API, CreateIoCompletionPort, WSAAccept ๋“ฑ IOCP ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ I/O ๊ตฌํ˜„
  • SessionManager: ์„ค๊ณ„๋œ ํ”„๋กœํ† ์ฝœ ํ•ธ๋“ค๋Ÿฌ๋“ค์„ Mediator ํŒจํ„ด์— ๋”ฐ๋ผ ๊ตฌํ˜„
  • DatabaseManager: SQLite ํ†ตํ•ฉ ๋ฐ ์ฟผ๋ฆฌ ์ž‘์„ฑ - ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ์ฟผ๋ฆฌ๋ฌธ ์ด์šฉ
  • GameManager: Mediator ํŒจํ„ด์„ ํ†ตํ•œ ๊ฐ Manager ๊ฐ„ ์กฐ์œจ ๋กœ์ง ๊ตฌํ˜„

IOCP์™€ Windows ๋น„๋™๊ธฐ API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋น„๋™๊ธฐ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๋ณต์žกํ•œ ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ (Claude 4.5 Haiku)

bowons์˜ ์š”์ฒญ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ „์ฒด๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค:

  • IOCPClient: Windows IOCP ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ๋„คํŠธ์›Œํ‚น ํด๋ผ์ด์–ธํŠธ
  • GUIManager: 5๊ฐœ ๊ฒŒ์ž„ ํ™”๋ฉด ๊ด€๋ฆฌ ๋ฐ ์ƒํƒœ ์ „ํ™˜
  • GameScreen: ๊ฒŒ์ž„ UI ๊ตฌํ˜„ ๋ฐ Observer ํŒจํ„ด์„ ํ†ตํ•œ ์ƒํƒœ ๋™๊ธฐํ™”
  • 20+ ๊ฐœ์˜ ํ”„๋กœํ† ์ฝœ ํŒŒ์„œ ๋ฐ ํŒจํ‚ท ํ•ธ๋“ค๋Ÿฌ ์ž‘์„ฑ