inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Tuyển tập phát triển game MMORPG bằng C++ và Unreal] Phần 4: Máy chủ game

언리얼 클라이언트 네트워크 구현시 액터의 라이프사이클

736

graphite

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

0

안녕하세요 루키스님

언리얼쪽에 클라이언트 네트워크 시스템을 구죽해놓았는데 마지막 관문이 풀리지 않아 질문드립니다.

확장성을 고려해 TCP 연결을 subsystem에서 중앙관리해서 여러 서버의 TCP연결을 가능하게 하려고 합니다.

일단 구현은 Subsystem에서 FTickableGameObject를 상속받아서 subsystem에서 Tick을 할수 있게 했는데요,

이렇게 하니 Tick함수에서 Recv한 패킷을 뺴오는 갱신 주기를 각각의 TCP연결마다 따로 설정할 수 없는 부분이 있습니다.

그래서 subsystem에 Actor를 각각 달아서 갱신주기를 따로 설정할수 있지 않을까 구상했는데,

액터는 레벨이 바뀔때 Actor의 생명주기가 끝나버리는 문제점이 있는데, Subsystem이 관리하고 있는 Actor가 레벨이 바뀌어도 살아남게하는 방법이 있을까요?

network MMORPG windows-server

Câu trả lời 1

0

graphite

불금과 주말동안 열심히 달려보았지만

딱 제가 원하는 그림의 기능은 찾을 수 없었습니다.

FTickableGameObject를 상속하여 Tick기능을 구현한 UObject를 GameInstance나 Subsystem에 달아서 생명주기를 연장할수는 었었지만, 따로 Tick주기를 설정할 수가 없어서 프레임단위로 실행되기 때문에, 그냥 중앙에서 리스트로 관리하는거와 별반 차이가 없었습니다.

Tick주기를 설정할 수 있는 기능은 Actor에서 부터 가능하더군요.

Persistemt Level에 달아서 Actor의 생명주기를 연장 할 순 있겠지만, 월드 파티션이 나뉘어진 맵에선 뜨지 않는데다가, 플러그인 형태로 만들어 사용자가 따로 설정하지 않고 쓸수있게 하는게 목표라 유니티의 DontDestoryOnload처럼 제 입맛에 딱 맞는 기능을 찾아서 만드는데는 제약사항이 있네요.

일단 건진건 UTickableWorldSubsystem으로 World에서 관리하는 Tick기능을 쉽게 구현할수 있다는거 하나 정도, 결국 제자리걸음입니다

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

0

57

2

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

0

99

1

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

0

54

1

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

0

77

2

성능 테스트 결과

0

98

2

게임 서버 Stateful, Stateless 진로 고민

0

115

1

WaitOnAddress와 Sleep의 차이 질문

0

79

1

궁금한거 있습니다.

0

79

2

JobTimer 구동 스레드

0

103

2

TryPop() 동작 관련 질문

0

78

1

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

0

142

2

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

0

70

1

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

0

81

2

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

0

137

2

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

0

98

2

mutex와 sleep 차이점

0

114

1

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

0

149

2

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

0

92

1

공부법 관련해서

0

179

2

MakeShared 함수 관련

0

111

1

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

0

140

2

운영체제관련 질문입니다

0

127

1

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

0

114

2

메모리 풀 질문있습니다.

0

120

1