강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

충실한 전복님의 프로필 이미지
충실한 전복

작성한 질문수

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

3강 커넥션과 오너십

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

작성

·

23

0

강의를 계속 듣고 보니 저는 (리슨)서버 의 경우 필요한 객체만 생성되는 줄 알았으나

 

마지막 Owner 에 대한 내용도 보니 결국 서버에서 플레이어 캐릭터 액터 도 생성 및 초기화 하고 이를 다시 클라이언트에서 Owner 가 설정되기 전이긴 하나 다시 생성 후 컴포넌트 초기화 , 오너 설정 등이 이루어지는데요.

(리슨)서버의 경우 플레이어-접속된 클라이언트의 객체 모두 생성 후 다시 이를 클라이언트에게 전달 , 클라이언트에서는 서버에서 받은 객체 정보를 바탕으로 다시 플레이어 캐릭터 생성 및 오너 설정

즉 서버는 모두 생성한다. 그리고 접속되어 진 클라이언트 플레이어 액터 객체는 모두 서버에 의해 클라에서 생성되며 OnRep_Owner, PostNetInit 등을 통해 서버의 PossessedBy 와 동일한 일을 진행한다

이렇게 이해해도 될까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 충실한 전복님.

리슨 서버와 클라이언트의 오브젝트 생성 및 동기화에 대해 질문 주셨네요. 언리얼 엔진에서의 리슨 서버는 클라이언트 역할을 동시에 수행하는 서버를 의미하며, 모든 플레이어의 액터 객체는 먼저 서버에서 생성됩니다. 다음의 과정으로 이해하시면 도움이 될 것입니다:

  1. 서버에서 객체 생성: 서버는 모든 플레이어의 캐릭터 및 관련 객체(예: PlayerController, Pawn 등)를 생성하고 초기화합니다. 이때, 각 객체에는 고유한 오너십이 설정됩니다.

  2. 클라이언트에 객체 전송: 생성된 객체 정보는 서버에서 각 클라이언트로 전송되며, 클라이언트는 이 정보를 받아 자신만의 객체 복제본(replicate)을 생성합니다.

  3. 동기화 및 초기화: 클라이언트는 OnRep_Owner와 같은 리플리케이션 관련 콜백 함수를 통해 객체의 오너십 정보를 동기화합니다. 이러한 과정은 PostNetInit 함수를 통해 초기화 단계가 완료되며, 서버에서 수행한 PossessedBy와 동일한 처리를 클라이언트도 행합니다.

  4. 오너십 및 상호작용: 클라이언트와 서버 간 액터의 오너십은 서버에서 결정되며, 이를 기반으로 클라이언트의 상호작용이 이루어지는 구조입니다. 클라이언트는 서버의 객체 상태에 맞춰 자신의 객체를 동기화하여 게임플레이를 원활히 유지합니다.

관련해서 더 자세히 이해하실 수 있는 기존 답변을 추천드립니다:

이 링크들은 언리얼 엔진의 네트워크 객체 관리와 관련하여 보다 상세한 설명을 제공하고 있으니 참고해 보세요.

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

충실한 전복님의 프로필 이미지
충실한 전복

작성한 질문수

질문하기