목록언리얼/멀티플레이 (6)
안선생의 개발 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHfAlL/btsz6ytOd3I/APLxJoI7Ud12Bwk4QZKKrK/img.png)
리플리케이션을 공부하던 중 OnComponentBeginOverlap과 입력에 PrintString을 해봤다. 그랬더니 결과는 아래와 같이 나왔다 먼저 클라이언트에서 입력을 해봤다 서버에서 입력해봤다 당연한 결과다 리플리케이션을 안했으니 한번만 실행된다. 그런데 BeginOverlap을 해봤는데 클라이언트 서버 BeginOverlap에서는 복제가 되는것 같다 혹시몰라 PlayMontage도 해봤다. 먼저 입력해보겠다 서버 클라이언트 로컬에서만 실행되는것을 볼 수 있다. RPC를 해줘야 할거같다. BeginOverlap을 해보겠다. 서버 클라이언트 3개의 화면에서 실행되는것을 볼 수 있다. 리플리케이션이 된것같다. 내생각에는 몇몇이벤트와 함수는 언리얼에서 자체적으로 리플리케이션이 된것같다. 이벤트가 특정 ..
RPC란? RPC (Remote Procedure Call) 는 로컬에서 호출되지만 (호출하는 머신과는) 다른 머신에서 원격 실행되는 함수를 말합니다. 이를 사용하여 멀티플레이어 게임에서 서버와 클라이언트 간의 통신이 가능하며, 이를 통해 다양한 게임 이벤트와 상호작용을 구현할 수 있습니다. RPC는 함수를 보내고 유일하게 클라이언트에서 서버한테 정보를 보낼 수 있는 방법이기도 합니다!! RPC 사용하는곳 멀티플레이어 게임: 여러 플레이어가 함께 플레이하는 게임에서 서버와 클라이언트 간에 상호작용이 필요한 경우 사용됩니다. 게임 이벤트 및 상태 동기화: 서버에서 일어난 게임 이벤트나 상태 변경을 클라이언트에 전달하여 게임 상태를 동기화할 때 사용됩니다. 유저 입력 처리: 클라이언트에서 발생한 유저 입력을..
리플리케이션이란? 기본적으로 게임은 서버와 클라이언트로 나뉘며, 서버가 게임 상태의 "권한"을 가집니다. 리플리케이션은 게임 상태의 변경 사항, 플레이어의 액션, 이벤트 등을 서버와 클라이언트 간에 동기화하기 위해 사용됩니다. 리플리케이션은 게임 오브젝트(캐릭터, 아이템, 환경 요소 등)의 상태를 유지하고, 다른 플레이어가 볼 수 있도록 합니다. 예를 들어, 만약 하나의 플레이어가 캐릭터의 위치를 변경하면, 이 정보는 서버를 통해 모든 클라이언트에게 전달되어 다른 플레이어도 그 변경 사항을 볼 수 있습니다. 즉 서버가 모든 권한을 갖게 해 주고 클라이언트랑 동기화해주는 것을 말한다. 하는방법 Replicated 변수 정의 및 설정: 먼저 리플리케이션을 원하는 변수를 클래스 내에 정의하고, 해당 변수의 리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dEFrba/btszUuFapLE/Xa3zuzgsbH21QWrYEqelkk/img.png)
리플리케이션 관련해서 액터에 중요한 프로퍼티가 두 가지 있습니다. Role (롤)과 Remote Role (리모트 롤)입니다. 두 가지 프로퍼티를 통해 알 수 있는 바는 다음과 같습니다: 액터에 대한 오소리티 소유자 액터의 리플리케이션 여부 리플리케이션 모드 Local Role (롤) Role_Authority (권한 역할): 이 액터는 게임 서버에서만 존재하고 제어됩니다. 서버에서 생성되고 서버에서 관리됩니다. 다른 클라이언트들은 이 액터를 움직이거나 수정할 수 없습니다. Role_SimulatedProxy (시뮬레이션된 프록시 역할): 이 액터는 클라이언트 측에서 가상으로 생성됩니다. 클라이언트들이 실제로 볼 수 있는 것은 이 시뮬레이션된 버전입니다. 서버로부터의 업데이트를 시뮬레이션하여 게임 화면에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnf5zW/btszoj6qyt4/ylybjCaUSYhg12bmm5PD50/img.png)
멀티플레이어를 만드는 이유 언리얼 엔진에서 멀티플레이어용으로 프로그래밍한 모든 게임플레이는 싱글 플레이어에서도 작동합니다. 하지만 싱글플레이용으로는 멀티플레이 게임은 작동하지 않습니다. 멀티에서 싱글은 가능하지만 싱글에서 멀티플레이로 전환은 불가능합니다. 프로젝트 후반에 네트워킹을 도입하는 것은 처음부터 계획하는 것보다 리소스가 많이 들고 번거로운 일입니다. 따라서, 멀티플레이어 기능이 절대 필요 없는 프로젝트라는 확신이 없는 한, 항상 멀티플레이어용으로 프로그램하는 것이 좋습니다. 클라이언트-서버 모델 싱글 플레이어 게임이나 로컬 멀티플레이어 게임에서는, 게임이 독립형 게임으로 로컬에서 실행됩니다. 플레이어가 단일 컴퓨터에 입력을 연결하고 해당 로컬 컴퓨터에서 액터와 월드, 각 플레이어의 유저 인터페이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ejWuvC/btszlG0Skfu/SupyYmW0Qe7wxmq7usfuf1/img.png)
매끄럽고 매끄럽지 않은 여행 언리얼 엔진(UE) 에는 원활하게 이동하는 방식 과 원활하지 않게 이동하는 두 가지 주요 방법이 있습니다 . 주요 차이점은 원활한 이동은 비차단 작업인 반면, 비원활한 이동은 차단 호출이라는 것입니다. 클라이언트가 원활하지 않은 이동을 실행하면 클라이언트는 서버와의 연결을 끊었다가 동일한 서버에 다시 연결하여 새 지도를 로드할 준비가 됩니다. Unreal Engine 멀티플레이어 게임에서는 가능하면 원활한 이동을 사용하는 것이 좋습니다. 일반적으로 사용 환경이 더 원활해지며 다시 연결 과정에서 발생할 수 있는 문제를 방지할 수 있습니다. NON-Seamless Travel 클라이언트가 불분명한 이동을 할 때 현재 서버와 연결을 끊었다가 같은 서버로 다시 연결 연결을 끊었다가 ..