티스토리 뷰

서론

 언리얼 엔진4의 서버는 간단하면서도 매우 복잡한 구조로 이루어져 있다. 서버를 프로젝트에 적용하기 위해서는 많은 노력이 필요하다. 기본적으로 언리얼에서 제공하는 수많은 도큐먼트들을 정독해야만 한다. 무작정 코드를 따라하더라도 원하는대로 동작하지 않을 수 있고, 문제가 발생한 경우 이를 알아차리기란 어렵다. 이번 포스트의 목표는 공식 도큐먼트를 읽기 전에 언리얼 서버의 기본 구조를 감으로나마 익히게 해주는 것이다. 이를 읽고 많은 도움이 되었으면 한다.

본론

서버와 클라이언트의 관계

 가장 먼저 이해해야하는 것은 서버와 클라이언트의 관계라 말할 수 있다. 언리얼에서 서버는 절대 권력의 존재이다. 서버에서 일어나는 일들은 모든 클라이언트가 따라한다. 즉 클라이언트는 오직 서버에서 일어나는 일들을 따라할 뿐이다.

 반대로 클라이언트에서 일어나는 일들은 오직 해당하는 클라이언트에서만 변화가 일어날뿐 다른 클라이언트와 서버에서는 아무런 변화가 없다. 그렇다면 왜 언리얼은 이런 구조를 갖추었을까?

 클라이언트는 서버와 다르게 유저가 프로그램에 직접 접근이 가능하기 때문에 클라이언트가 해킹될 가능성이 있다. 만일 어떤 클라이언트에서 다른 사용자의 캐릭터를 마음대로 죽일 수 있다면 해당 유저는 영문도 모르게 자신의 캐릭터가 죽는 것을 보게될 것이다. 

클라이언트의 권한

 위 글을 읽고나면 어떻게 유저가 캐릭터를 조종하는지 의문이 들 것이다. 유저가 캐릭터를 조종하는 것은 유저의 클라이언트에 요청하는 것인데, 위의 이야기대로라면 서버에서는 아무런 동작도 일어나지 않을것이기 때문이다.

 언리얼은 클라이언트에게 아주 약간의 권한을 준다. 오직 클라이언트가 조종하고 있는 액터에 대해서만 명령할 수 있도록 해준다. 덕분에 움직이거나 공격하는 동작들이 모든 클라이언트에서 볼 수 있게 된다. 예시를 들어보자.

공격 애니메이션 재생 흐름

 

  1. 유저가 키보드나 마우스로 공격 요청
  2. 클라이언트는 서버에 공격 요청
    1. 클라이언트가 권한이 있으므로 서버 요청 가능
    2. 클라이언트가 권한이 없는 경우 서버 요청 불가능
  3.  서버는 모든 클라이언트에 공격 애니메이션을 재생하라고 요청

 위 방법을 통하지 않고서는 모든 클라이언트에 공격 명령을 전달할 방법이 없다. 클라이언트는 모든 클라이언트에 직접 접근할 수 없기 때문에 항상 서버를 통해서 전달해야만 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함