블루프린트에서 액터 리플리케이트

블루프린트에서 액터의 Replicates, 리플리케이트 체크박스를 사용하는 방법 안내입니다.

Windows
MacOS
Linux

여기서는 서버와 클라이언트 머신 사이에서 액터의 Replicates, 리플리케이트 옵션을 사용하여 액터가 나타나도록 (또는 나타나지 않도록) 하는 법을 보여드립니다. 인용된 두 가지 예제 중, Replicating Actors 예제는 액터에 리플리케이트 설정을 하는 법과, 그렇게 설정한 액터와 안한 액터 사이의 차이점을 보여드립니다. 두 번째 예제는 Switch Has Authority (스크립트를 실행하는 것이 서버인지 클라이언트인지 검사하는) 노드를 사용하여 액터가 나타나는 위치를 조절하고 동적으로 스폰하는 법을 보여줍니다.

액터 리플리케이트하기

이 예제에서는 시작용 콘텐츠 포함 블루프린트 삼인칭 템플릿 을 사용합니다.

액터에 리플리케이트 설정하는 방법과 리플리케이트 되는 액터와 되지 않는 액터 사이의 차이점은 다음과 같습니다.

  1. Game/StarterContent/Blueprints 폴더 안의 Blueprint_Effect_Fire우클릭 한 다음 복제 를 선택합니다.

    HowTo1.png

  2. 전 단계를 반복하여 블루프린트 사본을 하나 더 만듭니다.

  3. 사본 중 하나의 이름을 Fire_NoReplicate 로, 다른 하나의 이름을 Fire_Replicate 로 변경합니다.

    HowTo2.png

  4. Fire_NoReplicate 블루프린트를 열고 classDefaults_button.png 버튼을 눌러 디테일 패널에서 Net Load on Client 체크를 해제합니다.

    HowTo3.png

    이 옵션 체크를 해제하면, 클라이언트에서는 맵이 로드될 때 액터가 자동으로 로드되지 않습니다. 리플리케이트 역시도 체크되어 있지 않기 때문에, 이 액터는 클라이언트 머신에서는 스폰된다 할지라도 나타나지 않습니다.

  5. 블루프린트를 컴파일, 저장 후 닫은 뒤 Fire_Replicate 블루프린트를 엽니다.

  6. classDefaults_button.png 버튼을 클릭하고 디테일 패널에서 Replicates (리플리케이트) 옵션을 체크합니다.

    HowTo4.png

    리플리케이트 를 체크하면, 이 액터가 클라이언트 머신에 리플리케이트 가능함을 나타냅니다. Net Load on Client 역시도 체크해 두면, 맵 로드시 액터도 자동으로 로드되어 클라이언트 머신에 표시됩니다. 리플리케이트 옵션이 쓰이는 곳은, 맵 로드 시점이 아니라 게임플레이 도중 일정 시점에 이 액터를 스폰하고자 한다면, 리플리케이트 옵션을 켜 두어야 액터를 스폰하라 했을 때 클라이언트 머신에서도 리플리케이트된 사본이 스폰됩니다.

  7. 블루프린트를 컴파일, 저장 후 닫습니다.

  8. 콘텐츠 브라우저 에서 Fire_NoReplicate 블루프린트를 레벨에 끌어 놓습니다.

    HowTo5.png

  9. 콘텐츠 브라우저 에서 Fire_Replicate 블루프린트를 레벨에 끌어 놓습니다.

    HowTo6.png

  10. 플레이 버튼 옆의 아래 화살표를 클릭한 다음 플레이어 수 옵션을 2 로 변경합니다.

    HowTo8.png

  11. 플레이 버튼을 클릭하여 에디터에서 플레이합니다.

    HowTo9.png

    에디터에서 플레이하여 새 클라이언트 창이 열릴 때, Fire_NoReplicate 블루프린트가 서버에는 나타나지만 클라이언트에는 나타나지 않는 것을 볼 수 있습니다. 하지만 Fire_Replicate 블루프린트는 위와 같이 서버와 클라이언트 양쪽에 나타납니다.

리플리케이티드 액터 동적으로 스폰하기

이 예제는 위의 액터 리플리케이트하기 예제에서 이어집니다.

서버/클라이언트에서 리플리케이션 을 사용하여 게임플레이 도중 액터를 동적으로 스폰하는 법은 다음과 같습니다.

  1. 레벨 뷰포트에서, Fire_ReplicateFire_NoReplicate 액터를 레벨에서 삭제합니다.

  2. 모드 메뉴에서 모든 클래스 아래 타깃 포인트 를 두 개 끌어 레벨에 놓습니다.

    Switch1.png

  3. 타깃 포인트 하나의 이름을 No_Replicate 로, 다른 하나를 Replicate 로 변경하고, 월드 아웃라이너 에서 둘 다 선택합니다.

    Switch2.png

  4. 메인 툴바의 블루프린트 메뉴에서 레벨 블루프린트 를 엽니다.

    GHT1_1.png

  5. 레벨 블루프린트 에서 그래프에 우클릭 한 다음 2 개의 선택된 액터에 대한 레퍼런스 생성 옵션을 선택합니다.

    Switch4.png

  6. 그래프에 다시 한 번 우클릭 한 다음 Event Begin Play 노드를 검색 추가합니다.

    Switch5.png

    Event Begin Play 노드를 사용하여 게임이 시작되면 스폰시키고 있기는 하지만, 게임플레이 도중 레벨에 액터를 스폰시키려면 다른 것을 사용해도 됩니다. 키 프레스 이벤트가 될 수도 있고, 액터 스폰을 호출하는 다른 유형의 다이내믹 이벤트가 될 수도 있습니다.

  7. 그래프에 우클릭 한 다음 Spawn Actor from Class 노드를 검색 추가하고 ClassFire_Replicate 로 설정합니다.

  8. 전 단계를 반복하여 Spawn Actor from Class 노드를 하나 더 만든 다음 Class 를 Fire_NoReplicate 로 설정합니다.

  9. 노드를 아래와 같이 연결합니다.

    Switch6.png

  10. 파랑 Replicate 노드를 끌어놓고 Get Actor Transform 노드를 검색 추가합니다.

  11. Get Actor Transform 노드를 Spawn Actor from Class 노드의 Spawn Transform 핀에 연결합니다.

  12. 파랑 No_Replicate 노드에 대해 전의 두 단계를 반복합니다 (결과는 아래와 같을 것입니다).

    Switch7.png

    다음으로 Switch Has Authority (다른 말로 Authority Guard) 노드를 추가하여 스크립트를 실행한 곳이 Authority (서버)인지 Remote Machine (클라이언트)인지 확인합니다. 전형적으로 Authority 로 설정하여 플레이어의 생명력 감소나 점수 배분과 같은 게임플레이 중요 스크립트 실행은 서버에서만 가능하도록 합니다. 클라이언트에서 이와 비슷한 스크립트를 통한 치트 방지를 위해서입니다.

  13. Event Begin Play 노드를 끌어놓고 Switch Has Authority 노드를 추가합니다.

    Switch9.png

    Authority 가 자동으로 기본값이 되어 첫 Spawn Actor from Class 노드에 연결될 것입니다.

  14. 레벨 블루프린트컴파일 하고 닫은 다음 에디터에서 플레이합니다.

    Switch10.png

    서버에서 스크립트를 실행했으므로, 서버에서는 양쪽 화염 이펙트가 나타나는 반면 클라이언트에서는 리플리케이트 설정을 한 것만 나타납니다. 서버나 클라이언트 중 하나에서만 스폰시키고자할 때 유용하며, 보다 중요한 점은, Switch Has Authority 노드 뒤에 오는 스크립트를 (앞서 말한대로) 서버나 클라이언트에서 실행시킨다는 점입니다.

  15. 레벨 블루프린트 로 돌아가 Remote 핀을 끌어놓고 아래와 같이 연결합니다.

    Switch11.png

  16. 레벨 블루프린트컴파일 한 다음 닫고 에디터에서 플레이합니다.

    Switch12.png

    이제 Switch Has AuthorityRemote 로 설정되어 있기에, 그 뒤의 스크립트가 서버 아닌 클라이언트에서만 실행되는 것을 볼 수 있을 것입니다. 예를 들어 플레이어가 대미지를 입을 때 적용되는 화면 이펙트같은 것이 있다 치면, Authority Guard 로 Remote 를 사용하면 그 이펙트가 스크립트를 실행하는 원격 클라이언트에서만 스폰되도록 할 수 있습니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼