inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

10강 캐릭터 공격 구현 개선

서버와 클라이언트 클래스 분리

147

eovywjr1

작성한 질문수 1

0

안녕하세요

서버와 클라이언트 로직이 함께 있어서 가독성이 떨어지는 부분이 있는 것 같은데요.

서버와 클라이언트 로직을 분리하기 위해 클래스를 분리하는 방법을 사용해도 괜찮을까요?

감사합니다.

unreal-engine 네트워크 언리얼-c++

답변 2

0

이득우

클래스 분리라 함은 어떤 것을 의미할까요? C++에는 C#의 partial 개념이 없어서 상속을 쓰는데, 이 경우 별도의 액터로 인식될 것으로 보여집니다.

0

eovywjr1

넵 Client 클래스 Server 클래스를 분리하는 것을 질문드렸습니다.

분리하면 별도의 액터로 인식돼어 리플리케이션이 불가능한 대신 가독성의 이점은 있을 것 같아서요

0

이득우

리플리케이션은 언리얼 멀티플레이의 핵심이라 이를 뺀다는건 권장하기가 어렵네요.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. eovywjr1님.

서버와 클라이언트의 로직이 함께 있을 때 가독성이 떨어질 수 있는 문제는 많은 개발자들이 겪는 어려움입니다. 서버와 클라이언트 로직을 분리함으로써 코드의 이해도를 높이고 유지보수하기 쉽게 만드는 것은 매우 중요합니다. 이를 위해 다양한 방법이 있지만, 클래스 분리를 통해 해결할 수 있습니다. 다음은 몇 가지 권장 사항입니다:

  1. 역할 기반으로 클래스를 분리: 서버와 클라이언트의 역할이 명확히 나뉘어 있으면, 각 역할에 따른 클래스를 별도로 정의하는 것이 좋습니다. 서버 관련 로직은 전용 서버 클래스에, 클라이언트 관련 로직은 전용 클라이언트 클래스에 작성하세요.

  2. 인터페이스 사용하기: 공통된 기능이 필요한 경우, 인터페이스를 정의하여 여러 클래스에서 구현할 수 있도록 합니다. 이는 코드를 더욱 구조적으로 만들고 가독성을 높일 수 있습니다.

  3. 디자인 패턴 활용: 예를 들어, 전략 패턴이나 페이커드 패턴을 사용하여 코드가 확장 가능하고 구조적으로 유지될 수 있도록 하세요. 이러한 패턴들은 로직의 변경이 필요할 때 전체 구조를 뒤집지 않고도 수정할 수 있는 유연함을 제공합니다.

유사한 문제의 해결 방법에 대한 토론은 언리얼 데디케이트 서버와 리슨서버 호환성에 대한 질문에서도 확인하실 수 있습니다. 이 링크에서 관련 내용을 참고하시면 문제 해결에 많은 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

5.6버전 Networking Insights 실행안됨 문제에 관하여

0

29

1

8강 중간, 분수대의 SetOwner 에 대해 궁금합니다.

0

77

2

플레이어(Actor) 로 (리슨)서버에서 생성 되나요?

0

99

2

2강) HandleBeginPlay 의 역활이 궁금합니다.

-1

72

2

3강 중간, 모드 로그로 찍을 시 스탠드얼론이 안찍힙니다.

1

76

2

CompressedFlag 질문

0

58

2

10강까지 머리 위 체력바가 표시가 안됩니다.

0

109

3

10강까지 머리 위 체력바가 표시가 안됩니다.

0

95

2

16:44 부분에서 질문이 있습니다.

0

104

2

12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.

0

121

2

github 3-5 파트 프로젝트에서 컴파일 에러가 발생합니다.

0

116

3

언리얼 인사이트 5.6버전 networking insights 가 뜨지 않습니다.

0

164

3

Insight 사용이 안되어서 문의 드립니다!

0

130

2

하위 레벨...?? High Level 말씀하신거죠..??

0

147

1

CompressedFlags를 이용한 InputThrottle, InputSteering 전달 방법 질문

0

191

1

조건식 프로퍼티 리플리케이션 질문

0

144

2

ArenaBattle에 Log추가하는 곳에 에러가 나타나 질문 드립니다.

0

160

2

7강에서 DORM_Initial 안됨

0

128

3

안녕하세요 강의 내용 정리에 관련해서 질문있어요

0

131

2

캐릭터 클래스의 mesh 관련

0

132

2

3파트 6강 분수대 로테이트에 문제가 생겼습니다.

0

131

3

클라이언트의 오너십 설정에 대해서 궁금합니다.

0

201

3

프로퍼티 리플리케이트 동기화 보장 개념.

0

225

2

결국엔 액터 기본함수들은 어디든 똑같이 일단 실행되는건가요?

0

93

2