init
This commit is contained in:
commit
b887f15662
21 changed files with 1038 additions and 0 deletions
51
README.md
Normal file
51
README.md
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
# C++20 게임 서버 (SocketServer)
|
||||
|
||||
## 개요
|
||||
이 프로젝트는 Modern C++ (C++20)와 Boost.Asio를 사용한 게임 서버 코어를 보여줍니다.
|
||||
비동기 I/O, 멀티스레딩, 패킷 직렬화 및 글로벌 세션 관리 시스템을 특징으로 합니다.
|
||||
|
||||
## 주요 기능
|
||||
- C++20: std::span, std::jthread, std::format (준비됨) 및 Concepts 활용.
|
||||
- Boost.Asio: 확장 가능한 네트워킹을 위한 Proactor 패턴 적용.
|
||||
- 패킷 처리: 효율적인 헤더/바디 분리 및 디스패칭.
|
||||
- 스레드 안전성: 뮤텍스(mutex)를 사용한 공유 자원 보호.
|
||||
- 글로벌 세션 관리: 모든 접속자를 한곳에서 관리하고 브로드캐스팅하는 시스템.
|
||||
- 검 키우기 컨텐츠: MySQL 연동을 통한 유저 데이터 영속성 및 강화 로직
|
||||
|
||||
## 사전 요구 사항 (테스트 환경, debian 13)
|
||||
- g++ 14.2.0 이상
|
||||
- CMake 3.31.6 이상
|
||||
- Boost Libraries 1.83.0 이상
|
||||
- OpenSSL 3.5.4 이상
|
||||
- MariaDB Client Library 11.8.3 이상
|
||||
|
||||
## 환경 설정
|
||||
|
||||
```bash
|
||||
./setup.sh
|
||||
```
|
||||
|
||||
## 빌드
|
||||
|
||||
```bash
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
## 실행 방법
|
||||
1. 서버 시작:
|
||||
```bash
|
||||
./Server
|
||||
```
|
||||
2. 클라이언트 실행:
|
||||
```bash
|
||||
./Client
|
||||
```
|
||||
|
||||
## 아키텍처
|
||||
- NetworkService: io_context 및 스레드 풀 관리.
|
||||
- Session: 개별 클라이언트 연결 및 비동기 읽기/쓰기 루프 처리.
|
||||
- PacketHandler: 패킷 ID에 따른 로직 디스패칭.
|
||||
- SessionManager: 연결된 모든 클라이언트를 글로벌하게 관리하고 메시지를 브로드캐스팅하는 싱글톤 관리자.
|
||||
- DatabaseManager: Boost.MySQL을 사용한 비동기 데이터베이스 연동 및 데이터 영속화 관리.
|
||||
- Logger: 멀티스레드 환경에서 안전한 로그 출력을 위한 스레드 세이프 로거.
|
||||
- Packet: #pragma pack(1)을 사용한 효율적인 바이너리 프로토콜 정의.
|
||||
Loading…
Add table
Add a link
Reference in a new issue