전체 글 (282) 썸네일형 리스트형 Unreal Network - Possess 동기화 & Spectator Pawn 언리얼에서 PlayerController 의 Possess 는 서버에서 호출되면서 언리얼 엔진의 리플리케이션 시스템이 적용되어 있어 playercontroller 와 Pawn 의 변경 내용을 자동으로 동기화한다. 1. 사망 시 애니메이션에서 노티파이로 OnDie 실행. 죽은 클라이언트의 Mesh 를 숨기면서 DieProcess() 실행2. MainUI 의 Retry 버튼을 활성화 3. Retry 버튼을 누르면 관찰자 모드를 실행 4. ServerRPC 로 서버에서 Possess 를 진행 즉, 사망한 객체는 서버에게 Possess 스위칭을 요청한다.여기서 사망한 객체의 소유자 (playercontroller) 가 서버에게 Possess 신청하는 것이고 Possess 와 같은 함수는 리플리케이션이 보장되.. Unreal Network - Pistol, Fire, Dead 동기화 RPC 를 사용한 네트워크 동기화 권총 부착 or 해제를 서버 - 클라이언트's 동기화 1. F키를 눌러 TakePistol 호출 시 ServerRPC 로 서버에 요청2. ServerRPC 함수에서 총을 가지고 있지 않다면 가장 가깝게 있는 권총을 선택3. 안가지고 있으면 가장 가까운 권총을 서버에서 Multicast Attach 실행. 모든 클라에게 해당 캐릭터의 총 장착을 동기화가지고 있으면 현재 권총을 서버에서 Multicast Detach 실행. 모든 클라에게 해당 캐릭터의 총 해제를 동기화 총 쏘기 및 재장전 동기화 1. 라인 트레이스로 Hit 결과 값을 ServerRPC_Fire 에게 전달하면서 서버에게 Fire 동기화 요청2. 서버에서 MulticastRPC_Fire 로 모든 클라이언트에.. Reliable 와 TCP 프로토콜의 차이점 Reliable 와 TCP 둘 다 신뢰성을 보장하지만 실제 동작하는 계층과 방식에 확연한 차이가 있다. 먼저 Reliable 과 RPC 같은 경우 애플리케이션 계층에서 동작한다. 이러한 Reliable 은 RPC의 호출에 대한 신뢰성을 보장한다. 즉, 패킷의 손실을 잠지 및 재전송 시도를 하는 TCP와 비슷한 역할을 수행한다. 다만, Reliable 은 게임 로직 수준에서의 함수 등의 호출 성공 여부를 보장하는 것까지가 역할이다. 다시 말하면 Reliable 의 신뢰성 보장은 프로세스 내에서 그 중에서도 객체나 함수 호출에 대한 신뢰성 보장이다. TCP는 전송 계층에서 사용되는 프로토콜로 전송 여부를 3핸드세이킹 방식으로 연결 확인 후 통신하도록 만든다.이때, 패킷 손실, 순서가 바뀌는 문제도 자동으로 .. TCP/UDP 프로토콜 TCP (Transmission Control Protocol)TCP 는 네트워크 통신에서 연결 지향적이면서 신뢰성을 보장하는 프로토콜이다. OSI 7계층 기준으로 전송 계층에서 사용하는 프로토콜이다. 3-way handshake 방식을 이용한 연결 성립 방식 3-way handshake3-way handshake 는 TCP 의 연결 과정에서 사용하는 절차이다. 송신자와 수신자가 데이터 전송을 시작 전에 서로가 연결되어 있는지 확인하는 과정이다. TCP의 연결 지향적 프로토콜의 신뢰성을 보장한다.1. SYN 클라 -> 서버로 연결 요청클라가 서버에 TCP 연결을 요청하는 패킷을 보내는 것.SYN 플래그가 있어 연결 요청임을 알 수 있다. 플래그에는 시퀀스 번호를 포함한다.2. SYN-ACK서버 -> .. 네트워크 ( OSI 7 계층, TCP/IP 4 계층 프로토콜 ) 네트워크 란?컴퓨터 혹은 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신 체계 네트워크의 대표적인 기능들애플리케이션 목적에 맞는 통신 방법 제공신뢰할 수 있는 데이터 전송 방법 제공네트워크 간의 최적의 통신 경로 결정목적지로 데이터 전송노드 사이의 데이터 전송 네트워크 프로토콜통신 기능이 제대로 동작하기 위해 통신 참여자들 사이에 약속된 통신 규약위의 네트워크 기능과 역할이 많아 하나의 프로토콜로 정의하기 어렵다.**모듈화** 를 통해 기능 별로 분리해서 관리한다. OSI model( 7 layers )네트워크가 수행하는 역할(기능) 별로 계층적 구조를 가지게 만들어 범용적인 네트워크 구조를 만드는 것.*TCP/IP* 스택 ( 4 layer )은 인터넷에 특화된.. 24-11-22 네트워크 큐브 생성 동기화 각각의 플레이어들이 큐브를 생성하고 이것을 동기화하자 만든 클래스의 가장 중요 부분 : 게임 모드에서 상태 변경 >> 서버에서만 변경되는것, 변경된 변수의 동기화가 별도로 필요 큐브 생성 및 동기화 로직 서버에서 멀티캐스트를 호출하는 형식이다. ChangeTurn 이 실행되는데 이 함수를 게임모드가 가지고 있다. 그런데 게임모드는 서버만 가지고 있기 때문에 CanMakeCube 라는 bool 변수는 서버에서만 변경되는 것.모든 클라가 이 변경점을 알 수 있도록 동기화 되어야한다. 변수를 동기화해서 변수 값이 업데이트 될 때 마다 동기화가 모든 클라에게서 동기화가 진행된다. 24-11-21 언리얼 네트워크 캐릭터 동기화 캐릭터 간에 동기화플레이어들의 움직임을 동기화 및 공격 시 데미지 연산 동기화 Multicast 는 서버가 호출해야 모든 클라에게 전달된다. 피스톨을 줍는 행위 자체를 서버에게 전달한다.서버는 해당 클라가 총의 소유 여부에 따라 부착 / 해제를 Multicast 로 모든 클라에게 전달한다. MainUI 가 Local 에만 보인다. ( 총을 주운 클라만 )IsLocallyControlled 함수를 사용해서 로컬만 본인의 MainUI 를 가지고 있다. 로컬은 MainUI를 사용하지만 로컬이 아닌 클라는 머리 위에 HPBar 를 생성한다. 총을 쏘는 행위는 모든 클라가 확인해야한다 ( 동기화 )총 쏘는 행위를 Server 에게 알려주고 Multicast 를 호출하여 모든 클라가 총을 쏘는 행위를 동기화.. 24-11-20 언리얼 네트워크 - 색상 동기화와 RPC RPC - 함수를 이용한 동기화 ( 이벤트와 같이 특정 한 번에 사용되어질 때 많이 사용 )리플리케이트 - 변수를 동기화 ( 빈번하게 변환되는 값들은 리플리케이트 ) 리플리케이트를 이용한 색상 동기화 굳이 시간까지 동기화가 필요가 없다. 서버만 시간을 쓰고 색상은 동기화하자 일단 리플리케이트 방식 함수를 이용한 생각 동기화 OnRep 함수는 클라이언트 입장에서만 동기화가 필요할 시에 호출된다. CPP 기준이다. 블루프린트에서는 OnRep 이 서버에서도 불려진다. 서버가 클라이언트의 함수를 호출 요청하면 클라이언트RPC클라이언트가 서버의 함수를 호출 요청하면 서버RPCMultiCastRPC 모든 클라이언트에게 신호를 보낼 때 모든 클라가 특정 함수를 호출한다. RPC를 이용한 크기 변경 언리얼의.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 36 다음