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

조영웅님의 프로필 이미지
조영웅

작성한 질문수

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

Session #2

[Session#2] 강의

작성

·

258

1

안녕하세요. Session2 강의에서 Send구현을 했는데 막힌부분이 있습니다.

Send에 Lock을 걸어주셨는데 그 이유가 Send를 여러 쓰레드가 호출해서 RegisterSend() 함수가 동시다발적으로 실행되면 안되니 Lock을 걸어준다고 이해했습니다.

그런데 궁금한게 지금 상황이 좀 이해가 안되는것 같습니다. 제가 이해한 상황은 아래와 같습니다

현재 Session은 DummyClient에서 Accept한 세션소켓으로 주고 받고 하는중이다. 

(OnAcceptHandler 함수가 실행되고 해당 세션소켓을 인자로받아 Session.Start를 해줬으니깐.)>

서버가 Send를 여러 쓰레드로 해서 해당 세션소켓으로 정보를 보내는 상황????

서버에서 멀티쓰레드로 Send를 사용해서 정보를 보내는 건가요?

답변 2

2

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

그 부분은 나중에 컨텐츠를 만들어 봐야 감이 잡힙니다.
Session은 말 그대로 클라의 대리인 정도라고 볼 수 있습니다.
특정 클라에게 패킷을 보내려면 Session을 통해 보내야 하는데,
온라인 게임에서는 보내야 할 정보가 굉장히 많습니다.
주변에 NPC, 플레이, 몬스터가 이동하거나 공격하거나,
하는 모든 행동들을 알려야 하는데
Send 하는 게임 로직이 이리 저리서
동일한 클라를 대상으로 호출될 수 있습니다.

ex) Player 주변 몬스터가 움직여서 패킷 보내야 함
ex) 우편물이 도착해서 해당 Player한테 패킷 보내야 함

...

0

조영웅님의 프로필 이미지
조영웅
질문자

감사합니다. ㅎㅎ

조영웅님의 프로필 이미지
조영웅

작성한 질문수

질문하기