inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

게임서버 엔진 섹션을 듣다가 궁금한게 있습니다.

해결된 질문

709

작성자 없음

작성한 질문수 0

1

게임서버 엔진 부분 챕터 부분이 서버의 밑단을 직접 구축해보는 파트인 것으로 알고 있는데

언리얼 엔진에서 클라이언트와 연동을 할 때도 이러한 밑 단을 구축할 방법이 있는 것인지 궁금합니다.

또한 용어에 대해 궁금한 것이 언리얼 엔진에서 리슨서버나 데디서버를 사용한다는 것이 포톤서버와 같은 상용 서버를 사용하는 것인지 궁금합니다. 아니면 본 강의에서 처럼 iocp를 사용하는 개념과 비슷한 개념인지 궁금합니다.

 

감사합니다.

c++ 네트워크 ue-blueprint 게임수학 windows-api

답변 1

3

Rookiss

언리얼 엔진에서 클라이언트와 연동을 할 때도 이러한 밑 단을 구축할 방법이 있는 것인지 궁금합니다.
-> 네니오,말씀하시는 밑단이 곧 언리얼 엔진입니다.
기본적으로 언리얼 엔진은 오픈소스라서 엔진 소스코드를 다 다운로드 받아서
수정할 수 있습니다. 하지만 워낙 난이도가 높아서 대기업의 큰 프로젝트에서나 이렇게 하죠.
엔진 소스를 다루는 직군이 [엔진 프로그래머]입니다.
일반적인 게임 컨텐츠 개발할 때 엔진 소스는 건드리지 않습니다.

또한 용어에 대해 궁금한 것이 언리얼 엔진에서 리슨서버나 데디서버를 사용한다는 것이 포톤서버와 같은 상용 서버를 사용하는 것인지 궁금합니다.
-> 아닙니다. 언리얼 엔진 소스코드에 네트워크 관련 코드가 있어서
자체적으로 서버 코드가 있습니다. 다만 IOCP 방식은 아니고
Select 방식이라 동접의 한계가 있습니다. 애당초 MMO 장르가 아니라
FPS 장르를 타게팅해서 만든 것이기 때문이죠.

리슨 서버는 서버 역할도 하면서 1개의 클라를 보여주기까지 하는
(즉, 친구 5명이서 게임하는데 한명이 방장=서버의 역할도 겸하는) 것이고
데디서버는 서버가 오로지 서버 역할만 하는 상황을 말합니다
(배그는 서버가 게임회사쪽 컴퓨터에서 실행되겠죠? 이게 데디서버입니다)

포톤은 그냥 잘 알려진 서버 프레임워크이고 우리가 IOCP로 만드는 부분에 해당합니다.
다만 작은 규모나 인디에서 사용하지,
실무에서 포톤을 사용하는 경우를 본 적이 없습니다.

1

Rookiss

IOCP 서버는 언리얼 엔진과 별개로 따로 만드는 것이고,
언리얼 엔진에서는 FSocket 등 기본적인 네트워크 통신 소켓 기능은 지원하니
(클라에서 서버로 붙기 위해)
이것을 이용해 기본적인 패킷 연동부터 다 만들어야 합니다.
엄청 힘든 길이기 때문에 MMO 포폴이 아니라면 사실 쉽지 않고
3인 협동 FPS라면 데디 서버를 공부하는게 무조건 이득입니다.
언리얼에서 데디 서버를 사용하면
클라에서 [요 부분은 서버 코드]와 같은 if else로 처리해서
클라와 서버를 한 번에 구현할 수 있습니다.

1

Rookiss

MMO라면 클라와 서버를 따로 만들어서
네트워크 통신을 통해 붙이지만,
언리얼 엔진은 클라 코드로 한 번에
클라+서버 코드를 1+1으로 작성할 수 있게 되어 있습니다.
즉 동일한 코드가 서버에서도, 클라에서도 실행되어
알아서 패킷을 통해 동기화 되는 것이죠.
정말 서버에서만 처리되어야 하는 게임 핵심 규칙
(ex. 배그의 자기장 생성 등)은 서버에서만 실행하라고
if (HasAuthority())
자기장생성();

과 같이 서버 로직만 추가로 넣어서 구현을 하면 됩니다.
자세한 내용은 너무 길어서 더 알아보시길 바랍니다.

문제집은 없나요 수업을 어떻게 들어야 할지 모르겠어요

0

106

2

동적배열 Vector의 push_back 함수에서 조건문 질문

0

74

1

디버깅할때 메모리보는법 단축키가 뭐죠??

0

89

1

113-충돌처리 강의에서 22:26 부근의 SetPos()를 적용해도 충돌되지 않고 뚫고 지나가게 됩니다.

0

87

1

SaveFile에서 크래시 발생하는 분들 체크해보세요

1

70

1

수업자료 확인 부탁드립니다.

0

105

3

explicit을 붙였을 때 빨간줄이 뜨는 이유가 맞는지 궁금합니다.

0

100

0

22강에서 구조체와 포인터로 설명해주셨는데 패딩의 경우는 어떻게 되나요?

0

88

2

리소스 매니저 강의 18분 부근

0

89

1

[Service강의] owner -> shared_ptr

0

80

2

C#에서 생성자 관련 질문

0

83

2

특정 조건에서만 함수를 반환할 때

0

90

2

스택 empty

0

105

2

섹션4 배열실습 질문입니다.

0

132

1

섹션3 '파일분할' 강의 질문입니다.

0

99

1

Defines.h의 DECLARE_SINGLE관련 질문입니다.

0

110

1

세션8 우선순위 큐 pop함수의 Predicate 적용 관련 질문이 있습니다.

0

180

3

섹션9 함수 포인터 관련 질문입니다.

0

137

1

exercise_A 번 문제 해결방법에 대한 질문.

0

150

1

[강의명: virtual 소멸자] 자식 클래스의 소멸자에도 virtual 을 붙이시는 이유가 궁금합니다

0

198

2

Scene과 SceneManager 강의 수강 중 키보드 입력 오류

0

146

1

Window API 강의 수강 중 LARGE_INTEGER 타입 변환 오류

0

198

3

섹션15 스마트 포인터 20:00 질문이요!

0

127

1

55강 수업자료 빌드를 하면 이상합니다.

0

132

1