inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

언리얼에서 소켓 연결 관련 전역 객체의 생성 질문

해결된 질문

496

박별

작성한 질문수 1

0

안녕하세요 강사님

강사님의 강의를 들으며 게임 서버 개발자를 꿈꾸는 학생입니다.

다름이 아니라 이번에 프로젝트를 진행할 기회가 생겨서 언리얼 클라와 IOCP 서버를 연동해 게임을 만드려고 합니다.

이때 클라측에선 네트워크 스레드를 별도로 두어 패킷의 송수신을 담당하도록 하고 수신받은 데이터를 전역에서 존재하는 큐를 여러개 두어(인게임 패킷만 다루는 큐, 로비에서의 패킷만 다루는 큐 등) 여기에 밀어주도록 하고 메인 스레드에서 이를 락을 걸어 뽑아서 쓰는 형식으로 구현할 계획입니다.

여기서 궁금한 점이 이런 소켓 연결 관련 객체와 글로벌 큐를 어느 위치에서 가지고 있어야 하는지입니다. 전역으로 사용하고 연결이 끊기면 안되므로 Game Instance를 생각하고 있습니다만 더욱 좋은 방법이 있는지 강사님께 여쭤보고 싶습니다.

 

읽어주셔서 감사합니다!

네트워크 MMORPG windows-server

답변 1

1

Rookiss

네 현재 관련 강의를 주말에 진행하고 있는데
GameInstance에다 큐를 배치할 예정입니다.
다만 패킷 큐는 (인게임 패킷만 다루는 큐, 로비에서의 패킷만 다루는 큐 등)와 같이
구분할 이유는 전혀 없고 1개만 있으면 됩니다.
protobuf 연동하는게 조금 정신이 없는데
언리얼 엔진 모듈에 대해 검색을 해보셔야 할겁니다.

그리고 언리얼에서 제공하는 TQueue 등이 기본적으로 LockFree Based라서
굳이 새로 만들 필요 없습니다.

0

박별

감사합니다 강사님! Protobuf 모듈은 build.cs 부분을 적절히 수정하니 쉽게 연동 되었습니다. 혹시 클라이언트에서 큐 말고도 Session 객체(소켓 연결을 포함한 Send 등의 기능이 있는 객체)도 싱글톤 보다는 GameInstance에 배치하여 호출하는 것이 조금 더 괜찮을까요? 마지막으로 패킷큐에 쌓인 패킷은 PlayerController에서 Dequeue하여 사용하는 것이 아름다운지 여쭤보고 싶습니다!

1

Rookiss

Session은 싱글톤보단 객체로 만들어서 배치하는게 좋습니다.
왜냐하면 간혹 클라에서 다중 서버 접속이 필요한 경우도 생기는데요.
(내가 접속하는 서버 말고, 던전 서버는 서버 통합이라 따로 접속을 해야한다던가...)
그럴 때 Session이 여러개 생길 수 있는데 싱글톤 하나로 관리하면 좀 정신이 없는 경우가 생길 수 있습니다.

그런데 이런건 뭐 나중에 고민해도 되고 일단 수단과 방법을 가리지 않고
어떻게든 구현하는 것에 초점을 맞춰보세요

writeLock을 잡을때 꼭 empty 상태여야하는 이유?

0

33

2

Memory Pool에서 오버플로우 질문입니다.

0

71

2

포토폴리오 및 진로 관련하여 고민입니다.

0

126

1

포토폴리오 관련 고민입니다.

0

65

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

85

2

성능 테스트 결과

0

105

2

게임 서버 Stateful, Stateless 진로 고민

0

128

1

WaitOnAddress와 Sleep의 차이 질문

0

84

1

궁금한거 있습니다.

0

84

2

JobTimer 구동 스레드

0

108

2

TryPop() 동작 관련 질문

0

81

1

로드맵 C#서버 C++서버 방향성 질문

0

151

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

73

1

생명주기를 위한 의도적 복사

0

87

2

락프리의 실무에서 사용 질문

0

144

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

103

2

mutex와 sleep 차이점

0

119

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

157

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

97

1

공부법 관련해서

0

184

2

MakeShared 함수 관련

0

114

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

145

2

운영체제관련 질문입니다

0

132

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

119

2