MMORPG 1

2023. 5. 28. 00:37· 게임 서버
목차
  1. Actor
  2. 서버가 하는 일
  3. 멀티쓰레드
  4. 멀티 프로세스

https://www.youtube.com/watch?v=yk-HD8YoyZg&list=PLy-g2fnSzUTDsS7kCzmFYn4BJK6nCs0_r&index=11 

 

 

 

Actor

Player

NPC

Control Zone(CZ)

 

서버가 하는 일

패킷 처리(읽기/쓰기)

 

틱(Tick) 처리

매 프레임 Actor들의 상태를 업데이트하는 것

 

기타 시스템

경매장 같은 것

 

패킷과 틱 처리가 많은 부분을 차지

유저가 늘어날수록 처리해야하는 패킷과 틱이 증가한다

Ex) 5000명의 유저가 있는 서버가 1초에 10틱을 처리한다고 가정하면 유저 한명에게 한 틱을 처리하는데 0.02ms 밖에 주어지지 않는다

멀티쓰레드가 필수

 

 

멀티쓰레드

Network I/O와 Work Thread 사이에는 버퍼가 존재(큐 형태)

Network I/O는 네트워크 결과를 모두 버퍼에 저장

 

싱글 쓰레드

Work Thread가 1개인 경우

1프레임마다 버퍼에 모든 결과를 처리 + 틱 처리

 

심플한 구조 -> 락 문제, 우선순위, 데드락 등의 문제가 없음

 

많은 Actor를 감당할 수 없다

 

 

싱글 쓰레드 + 데디케이트 쓰레드

데디케이트 쓰레드는 특정 작업만 처리하는 쓰레드

DB I/O나 특정 기능(경매장 같은 것)을 전담해서 처리

가장 중요한 패킷과 틱 처리를 제외한 다른 기능을 별도의 쓰레드가 처리하게 하는 방법

싱글 쓰레드보다는 효율적이지만 한계가 있음

 

 

멀티 쓰레드

Work Thread가 여러 개인 경우

버퍼의 내용과 담당하는 Actor들은 각 Work Thread들이 가져가서 처리

 

Locking 문제

공유자원을 접근할 때 Lock을 해야한다

 

Actor 간에 상호작용 문제

게임의 특성 상 요청/응답 뿐만 아니라 Actor 간의 상호작용이 많다

상호작용하는 Actor들을 담당하는 Thread가 다를 경우 문제가 발생

잘못 설계하면 성능이 오히려 낮아진다

구조 설계와 구획화를 잘해야한다

 

 

 

멀티 프로세스

프로세스는 기본적으로 서로의 메모리에 접근 불가능

다른 프로세스에 있는 Actor는 상호작용이 불가능하다

 

상호작용을 할 일이 없는 Actor들을 분류해서 다른 프로세스에게 할당할 수 있다

-> 서로 다른 대륙에 있는 Actor

 

구획의 경계에 있는 Actor들이 문제가 될 수도 있지만 내부적으로 보완 가능하다

-> 구획 이동에 로딩이나 상호작용이 불가능한 통로를 설치

 

심리스 서버의 경우는 적용 불가능

저작자표시 (새창열림)

'게임 서버' 카테고리의 다른 글

소켓 프로그래밍  (0) 2023.05.27
Server Authority  (0) 2023.05.27
게임핵  (0) 2023.05.27
P2P / Relay Server  (0) 2023.05.22
Deterministic  (0) 2023.05.20
  1. Actor
  2. 서버가 하는 일
  3. 멀티쓰레드
  4. 멀티 프로세스
'게임 서버' 카테고리의 다른 글
  • 소켓 프로그래밍
  • Server Authority
  • 게임핵
  • P2P / Relay Server
초혼
초혼
siaksiakx@gmail.com github.com/chohon
초혼 개발일지 siaksiakx@gmail.com github.com/chohon
초혼
초혼 개발일지
초혼
전체
오늘
어제
  • 분류 전체보기 (57)
    • SW정글 (10)
      • 알고리즘 (4)
      • 자료구조 (1)
      • OS (4)
      • 프로젝트 (1)
    • 기본 (26)
    • 용어 정리 (2)
    • 알고리즘 문제 (1)
      • HackRank (1)
    • 게임 서버 (8)
    • 스크랩 (3)
    • Pension (6)
    • Golang (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
초혼
MMORPG 1
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.