-
[C++] 결과 반환과 상세 진단을 위한 공통 파이프라인
PrivateServer에서 새로운 계층마다 결과 타입을 반복해 작성했던 경험을 돌아보고, Vulkan의 VkResult를 참고해 결과 반환과 상세 진단을 TkResult와 TkDiagnostic으로 분리한 공통 계층을 설계하고 Packet Tool에 적용한 과정을 정리합니다.
-
[C++] World Server 2: Double Buffer 도입기
업데이트:비동기 Runtime event를 authoritative tick 입력으로 확정하기 위해 Double Buffer를 도입하고, publication 병목을 Outbound Triple Buffer로 개선한 과정을 정리합니다.
-
[C++] World Server 1: Fixed-Step과 Bounded Catch-Up
업데이트:World Server가 tick을 유지하고, 밀린 simulation의 event와 state 발행을 구분하는 과정을 정리합니다.
-
[C++] World Server 3: 게임 로직의 계산과 상태 반영을 분리하다
업데이트:네트워크 event를 tick 전용 input으로 변환하고, 읽기 전용 상태를 계산한 typed result만 Coordinator가 반영하도록 게임 로직의 mutation 경계를 분리한 과정을 정리합니다.
-
[C++] C++ 객체를 C#에 전달하기
C++ IOCP NetworkRuntime을 Godot C#에서 사용하기 위해 C ABI 브리지, 불투명 핸들, P/Invoke, SafeHandle과 페이로드 소유권을 설계한 과정을 정리합니다.
-
[C++] Actor Scheduling: Lost Wakeup을 막는 Admission Protocol
업데이트:Producer와 Consumer가 구분되어 있는 환경에서 발생할 수 있는 Lost Wakeup 에 대해 알아보고, 어떻게 해결할 수 있었는지 알아봅니다.
-
[C++] 고정 블록 메모리 풀: 메모리 풀은 더 빠를까?
고정 블록 메모리 풀을 new/delete와 비교합니다.
-
[C++] IOCP 2: NrRuntime의 Winsock I/O Pipeline과 Lifetime
NrRuntime이 AcceptEx와 ConnectEx로 연결을 만들고, IOCP completion을 Session Actor에 전달해 partial receive와 send, 종료 시 pending I/O lifetime을 관리하는 구조를 정리합니다.
-
[C++] MPSC Queue: Atomic은 MutexLock보다 빠른가
Private Server의 bounded MPSC queue를 MutexLock과 Atomic으로 구현하고 비교하면서, CAS 경합과 캐시 공유, lock-free 진행 보장, 동기화 방식의 선택 기준을 다시 검토한 과정을 정리합니다.
-
[C++] IOCP 1: OVERLAPPED I/O와 Completion Port
Windows OVERLAPPED I/O의 요청과 완료 구조를 먼저 살펴보고, Winsock 비동기 API의 주요 파라미터와 IOCP의 handle 연결 및 completion 처리 방식을 정리합니다.