profile
C++ Game Developer

세션 객체 풀링 구현하기

프로젝트 : https://github.com/HoonInPark/ServerHyperion.git 본 포스트에 대한 내용은 feat/framesync 브랜치에 있다. 문제 지금 내 코드는 서버가 시작할 때 Info 객체를 일정수 만큼 할당하고 배열에 넣는다. 그

2025년 9월 11일
·
0개의 댓글
·
post-thumbnail

서버 성능 테스트하기 - 1편 (feat. tracy)

더미 클라이언트로 스트레스 테스트하기를 해봤지만, 당시 발견했던 문제는 그대로였다. 메인 루프가 느려서 객체 풀이 고갈되는 거였다. 전송이 완료되면 메시지 unique_ptr을 담은 풀로 반환되는데, 이 때 접속자 수에 따라 고갈되는 속도가 달랐고, 고갈되지 않는 경우

2025년 9월 11일
·
0개의 댓글
·

대량의 동시접속 시 생기는 에러들 해결하기

현재 테스트 환경은 localhost로 구축된 상태. 향후 AZURE에 올리면 더 빈번하게 아래의 문제가 일어날 것이다. 문제 더미 클라이언트로 스트레스 테스트하기에서 테스트 환경을 구축한 뒤 30명, 50명, 100명으로 접속자를 늘려가며 테스트를 해봤다. 이렇게

2025년 9월 9일
·
0개의 댓글
·
post-thumbnail

송신 로직을 lock-free queue로 동기화하기

프로젝트 : https://github.com/HoonInPark/ServerHyperion.git 본 포스트에 대한 내용은 feat/lockfree 브랜치에 있(었)다. 지금은 dev에 병합됐다. 문제 드미트리 뷰코프의 MPMC 순환큐를 내 프로젝트에 사용하고자 한

2025년 8월 31일
·
0개의 댓글
·

std::memory_order 이해하기

문제 MPMC에서 적용되는 lock-free buffer queue만들기를 하던 도중, 참고한 코드에서 std::memoryorderrelaxed를 쓰고 있었다. 모두의 코드의 C++ memory order 와 atomic 객체에선 C++의 멀티 스레딩 내에서 스레드

2025년 8월 28일
·
0개의 댓글
·

MPMC에서 적용되는 lock-free buffer queue 이해하기

프로젝트 : https://github.com/HoonInPark/ServerHyperion.git 본 포스트에 대한 내용은 feat/lockfree 브랜치에 있다. 문제 내가 이전에 작성한 순환큐 구현하기를 feat/framesync에 적용하고 main에까지 병합했

2025년 8월 27일
·
0개의 댓글
·

Busy Wait

문제 내가 처음 IOCP 서버를 다루기 시작할 때, 다음과 같은 코드가 이상해 보였다. 분명 스레드를 신호에 따라 멈추고 다시 동작하게 만드는 함수들이 있는데도, 1 ms만 쉬고 다시 다음 라운드를 돌게 만드는 거였다. 왜? SNS에 질문해 보니 누군가가 '시스템 콜'에 대해 알아보라고 했다. 해결 위 코드에서 1 ms 쉬고 다시 다음 라운드에서 유의미...

2025년 8월 27일
·
0개의 댓글
·
post-thumbnail

홀짝 트리

https://github.com/HoonInPark/CodingTestPractice/blob/main/ProgrammersTest/OddEvenTree.h 문제 루트 노드가 설정되지 않은 1개 이상의 트리가 있습니다. 즉, 포레스트가 있습니다. 모든 노드들은 서로

2025년 8월 26일
·
0개의 댓글
·
post-thumbnail

Hyperion 게임 서버 구상

프로젝트 : https://github.com/HoonInPark/Hyperion.git 문제 본 프로젝트의 목표는 다음과 같다. 3D 게임의 서버 권위 모델을 구현 이를 위한 물리 시뮬레이션이 서버에서 작동해야 하고, 이것의 결과 값이 클라이언트에 Replicate

2025년 8월 19일
·
0개의 댓글
·

Unreal에서 Multithreading으로 Observer Pattern 최적화하기

프로젝트 : https://github.com/HoonInPark/Hyperion.git 본 포스트에 대한 내용은 feat/obop 브랜치에 있다. 사담 누가 말했는데, 고수 개발자들이 쓴 네이버 블로그의 낭만은 개발이랑 상관 없는 소리도 같이 섞여 있는 거라고. 내

2025년 8월 14일
·
0개의 댓글
·

AccepterThread 수정하기

문제 현재 나의 AccepterThread() 함수 내의 루프는 32ms 마다 계속 돈다. AccepterThread 이해하기에서 언급했듯, PostAccept(...) 함수 내의 AcceptEx(...) 함수가 Client Info 세션 객체의 접속을 받도록 대기시

2025년 8월 1일
·
0개의 댓글
·

순환 큐 (Circular Queue) 구현하기 - Unreal에서 떼 왔슈

문제 "무례하긴, 순회야" - 객체 풀과 순회 인터페이스 구현하기에서 내부 멤버를 deque로 변경했다. 근데 deque는 반복적으로 푸시/팝을 할 경우 동적할당이 일어난다. 누구인가, 누가 런타임에 동적할당을 하였어? 해결 순환큐를 만들어서 멤버로 바꿔 넣어주자.

2025년 7월 27일
·
0개의 댓글
·
post-thumbnail

"무례하긴, 순회야" - 객체 풀과 순회 인터페이스 구현하기

프로젝트 : https://github.com/HoonInPark/ServerHyperion.git원래 내가 만든 객체풀은 다음과 같이 구현돼 있었다.근데 std::queue는 순회 불가능.정 순회하고 싶으면 하나하나 디큐해서 값을 읽고 다시 집어넣어야 한다.

2025년 7월 26일
·
0개의 댓글
·

AccepterThread 이해하기

프로젝트 : https://github.com/HoonInPark/ServerHyperion.git본 포스트에 대한 내용은 feat/framesync 브랜치에 있다. 현재 서버에서 Client Info 객체의 풀링을 구현하고 있는데, 접속이 들어오면 풀에서 디

2025년 7월 26일
·
0개의 댓글
·