inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Series phát triển game MMORPG bằng C# và Unity] Part 9: Triển khai nội dung MMO (Liên kết DB + Cấu trúc quy mô lớn + Chuẩn bị Live)

Room마다 Thread를 만들기

459

graphite

10 câu hỏi đã được viết

0

안녕하세요 루키스님 덕분에 서버개발자로 취업하였습니다.

루키스님의 강의를 체화하기 위해서 간간히 코드를 보면서 잊어먹을랑 말랑한 것들을 다시 강의로 듣곤 합니다

그러다가 아래 코드를 보면서 문득 의문이 들었는데요.

while(true)
{
  GameLogicTask.Instance.Update()
}

게임 실행 시 위 로직을 타면서 메인쓰레드 하나서 모든 Room의 Update를 담당하고 있는데

Room에 유저수가 많아지게 되면 메인 쓰레드에 점점 부하가 더 많아지는게 아닌가해서 질문을 드립니다.

메인쓰레드 부하가 많아지면 컨텍스트 스위칭이 생겨도 Room마다 Thread를 생성하여

남은 자원을 Update가 바쁘게 돌아가는 Room쪽에 쓰레드를 조금 더 할당해 주어도 될까요?

(밑에 질문에 답변해 주셨네요 ^^; Room마다 쓰레드를 더 만들겠습니다.)

 

심리스 월드에서 Actor마다 JobSerializer를 할당하는 방법을 쓰면,

쓰레드를 너무 많이 만들게 될것 같은데 컨텍스트 스위칭 외에 또 생기는 성능적인 사이드 이펙트를 뭘 또 고려하면 좋을까요?

Actor마다 JobSerializer를 쓴다고 하면 Actor단일로서는 lock을 걸지 않아도 되지만

서로 상호작용이 일어나는 상황에서는 어쩔수 없이 lock을 걸어줄수 밖에 없을 것 같은데, 그러면 결국은 JobSerializer를 쓰지 않아도 되지 않나 부족한 지식으로 어렴풋이 생각이 듭니다.

또한 JobSerializer를 Flush 하기 위해선 Actor마다 while(true) 루프를 돌면서 계속해서 잤다가 깼다가 확인 하는 과정과 컨텍스트 스위칭비용이 점점 더 늘어날 것 같은데 이런 비용을 감안하면서 사용하는 것인지요. 아니면 딱히 신경쓰지 않아도 될만한 부하인지 궁금합니다.

MMORPG thread

Câu trả lời 2

1

Rookiss

쓰레드를 늘리는 것은 맞지만,
방이 100개라고 쓰레드를 100개를 만들면 곤란합니다.
기본적으로 적정 쓰레드 개수는 CPU 코어 * 1~1.5 정도이고, 그 이상은 손해에 가깝습니다.
배분 관련 내용은 C++ 서버 내용에서 잠시 다뤘습니다.
또한 메인 쓰레드에서 게임로직만 담당하게 해도, 동접 2000 정도의 MMO를 돌릴 수 있습니다.
중소기업에서 만든 MMO는 실제로 그렇게 하는 경우가 꽤 있는데
다만 메인 쓰레드에서 너무 괴랄한 길찾기나 AI를 돌리지 않으면 됩니다.

0

graphite

감사합니다.

질문 있습니다.

0

42

2

심리스 존 방식 난이도

0

86

2

RewardPlayer함수 에 대해서

0

55

1

모바일 데이터 환경에서의 렉 현상 문의 드립니다.

0

88

2

화살 처리 관련 질문이 있습니다!

0

116

1

part1~9 모두 완료하였습니다.

0

209

2

이번 수업 특히 좋았습니다

0

149

1

화살과 몬스터 버그와 관련한 질문입니다

0

169

3

DummyClient cpu스펙 질문있습니다.

0

120

2

InventoryManager 클래스에서 사소하지만 꼭 알고 싶은 사항이 있습니다

0

111

2

FANTASTIC UI STARTER PACK이 없네요..

0

119

1

면접 질문 드립니다.

0

146

1

로그인 정보 암호화는 어떻게 하나요?

0

231

2

조건식 중단점을 걸면 문제가 발생합니다

0

133

0

GenProto.bat 파일 오류

0

171

2

코드변경을 하면 오류가 생기는데요

0

188

2

아이템 슬롯 선적용에 대한 질문입니다

0

193

1

M1 M2강의의 경우 어느정도 수준이 필요한가요?

0

308

1

3~4일 간격으로 CPU 99% 사용되는 문제

0

421

2

JobSerializer 관련

0

287

1

3D 게임 이동 동기화

0

462

2

GameLogic 쓰레드에서 모든 GameRoom을 처리하나요?

0

255

1

Async와 Job방식의 차이가 궁금합니다.

0

293

1

EF사용시 async사용

0

254

1