인프런 커뮤니티 질문&답변

강승연님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

왜 SendBuffer 를 Session 이 가지면 성능에 문제가 되나요?

해결된 질문

24.01.14 13:03 작성

·

145

0

1명의 움직임을 100명에게 패킷으로 보내려면 Session 이 가진 버퍼를 100명에게 보내면 될 것 같아서...

왜 위 경우에 하나만 만들어서 100명에게 보낼 수 없는지 궁금합니다.

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2024. 01. 14. 13:07

<1명의 움직임>이라는 행위를 패킷으로 만드는 작업도
결국 복사 비용이 들어갑니다. (playerId, posx, posy) 뭐 이런 식으로 데이터 복사를 해야겠죠.
SendBuffer를 Session마다 둬서 100명한테 열려야 하면 그 정보를 100번 복사해야 합니다.
반면 SendBuffer를 중앙에서 한 번만 만들면,
일일히 다시 복사하지 않고, 그 정보를 그대로 전송 요청을 해줄 수 있겠죠.
커널 쪽에서 관리하는 송수신 버퍼에 복사는 일어나겠지만 그것은 필연적인 것이고.
최소한 유저레벨에서 불필요한 복사를 줄일 수 있다는 것이 핵심입니다.