프로젝트명: MMO 스타일 C++ 게임 서버 개발
사용 기술: C++, Windows IOCP, Protocol Buffers
프로젝트 목표:
- MMO 게임 서버를 직접 설계, 구현하여 멀티스레드 비동기 구조와 위치 동기화 최적화를 경험
- 100명 이상의 동시 접속 클라이언트 환경에서 성능 테스트 및 최적화
주요 기능:
- IOCP 기반 비동기 입출력 처리
- Job Queue / Job Timer를 활용한 스케줄링
- 플레이어 관리
서버 구조/ 설계
- Actor모델 기반 서버 구조
- Player, Room을 Actor단위로 관리
- 멀티스레드 환경에서 스레드 안전성 확보
- 그리드 기반 위치 동기화
- 범위 내 플레이어에게만 위치/상태 정보 전송 → 불필요한 트래픽 최소화
- 패킷 분할 전송
1️⃣ Actor모델 기반 서버 구조
목적 :
- 멀티스레드 환경에서 객체 단위의 스레드 안전성 보장
class Actor : public enable_shared_from_this<Actor> {
public:
void PushJob(unique_ptr<Job> job);
void ExecuteJob();
protected:
LockQueue<unique_ptr<Job>> _jobQueue;
};