강의

멘토링

커뮤니티

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

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

작성한 질문수

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

2강 게임 모드와 로그인

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

작성

·

20

0

마지막에 로그를 찍어보니

서버 역활을 하는 객체에는 HandleBeginPlay 로그가 출력되었으나

 

클라 역활을 하는 객체에는 OnRep_ReplicatedHasBegunPlay 로그가 출력되었습니다.

 

현재는 리슨서버로 진행되니 서버-클라 모두 HandleBeginPlay 가 호출될 줄 알았지만 클라에서는 출력되지 않습니다.

 

강의 내용처럼 HandleBeginPlay 는 서버 (로컬)에만 호출되니 클라에서는 호출 될 일이 없으며

 

클라에서는 OnRep_ReplicatedHasBegunPlay 만 호출되나 이것도 bReplicatedHasBegunPlay 값에 의해 호출 될수도 있고 안될 수도 있다 이렇게 이해해도 되나요?

다만 bReplicatedHasBegunPlay 는 그렇가면 게임이 시작 이후에는 무조건 true 가 될테니 시작 이후에 접속되면 무조건 bReplicatedHasBegunPlay 가 호출 될 것이고
시작 이전에 호출 되면 bReplicatedHasBegunPlay 호출이 안될 것이다

이렇게 이해해도 될까요?

답변 1

0

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

언리얼 엔진에서의 HandleBeginPlayOnRep_ReplicatedHasBegunPlay 함수의 역할에 대한 이해를 돕기 위해 이 두 개념을 설명드리겠습니다.

  1. HandleBeginPlay:

    • HandleBeginPlay는 서버에서 게임이 시작될 때 호출되는 함수입니다. 주로 게임 모드와 같은 서버 전용 오브젝트에서 실행됩니다. 로컬 서브에서도 실행될 수는 있지만, 클라이언트에서는 이 함수가 호출되지 않습니다.
  2. OnRep_ReplicatedHasBegunPlay:

    • 클라이언트에서는 게임 시작 상태를 리플리케이트하기 위해 OnRep_ReplicatedHasBegunPlay가 사용됩니다. 클라이언트의 개체들은 이 메서드를 통해 서버에서의 게임 시작 여부를 수신하게 됩니다.
    • 대개 게임이 시작되면서 bReplicatedHasBegunPlaytrue로 설정됩니다. 새로운 클라이언트가 시작 후에 서버에 접속된다면 이 값이 true로 되어 클라이언트에서도 OnRep_ReplicatedHasBegunPlay가 호출됩니다.

결론적으로, 언급하신 대로 게임이 이미 시작된 이후클라이언트가 서버에 접속한다면 OnRep_ReplicatedHasBegunPlay가 호출될 가능성이 높습니다. 반면 게임 시작 전에 클라이언트가 접속된다면 해당 함수는 호출되지 않을 것입니다. 이는 게임이 이미 시작되었는지를 확인하고 클라이언트의 상태를 동기화하는 데 사용됩니다.

관련된 정보를 좀 더 상세히 알고 싶다면 아래의 링크를 참고해 보세요.

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

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

작성한 질문수

질문하기