GameMode게임모드는 전체적인 진행을 담당하는 액터로 서버와 비슷한 느낌이다 게임 모드를 서버의 접속과정과 함께 알아보자서버 컴퓨터에서 데디 서버 실행 파일을 실행하면Open Level 명령어와 Listen 명령어가 수행된다이때 열린 레벨의 월드 세팅에 게임모드에 대한 정보가 있다해당 게임모드를 생성하고 또 그 게임모드에 PlayerController, PlayerState, … 정보가 있다이러한 정보들을 가지고 각각 해당 액터들을 만들어낸다 게임 모드 액터는 Server에만 존재하고 복제도 되지 않기에각 클라 PC에는 게임모드 액터가 없으며 접근 시 nullptr이 반환된다그래서 게임모드에 접근하려면Server RPC 함수 내에서 접근하거나,서버에서 수행되는 함수 내에서 HasAuthority() ..
함수 내부에서의 구분BeginPlay(), Tick(), EndPlay()와 같은 이벤트 함수 혹은NetMulticast 함수는 Owning Client, Server, Other Client 모두에서 호출이 된다그렇기에 특정 PC에서 로직이 실행되도록 구현하기 위해서는 아래의 함수들을 활용해야 한다 - HasAuthority()서버인 경우에 true를 반환한다Listen 서버의 경우에는 true일 때, 서버 or 방장 클라이다Standalone 모드에서는 항상 true가 반환된다if (HasAuthority() == true){ // Server}else{ // Owning Client or Other Client} - IsLocallyControlled()현재 액터(ex. 폰)를 현재 클라이언트에서 ..
Replicates 속성단순히 RPC 키워드를 작성해서 로직을 잘 작성하더라도복제를 원하는 액터의 Replicates 속성을 true로 바꿔줘야Server의 액터 상태가 클라들에도 복제가 된다ASLandMine::ASLandMine(){ ... bReplicates = true;} Server RPC의 실행 흐름 예시1. Owner Client에서 특정 키를 누름2. 해당 키를 누른 Owner Client의 캐릭터 클래스의 키 바인드 함수 호출3. 서버로 보내는 패킷에 Server RPC 함수의 정보도 Serialize 해서 전송4. 서버에서는 패킷을 Deserialize 후 Owner Client의 캐릭터 클래스 Server RPC 함수 수행5. 서버에서 특정 액터가 스폰6. 해당 액터의 bReplic..
RPC 키워드 사용법- RPC 키워드Server, Client, NetMulticast 키워드를 통해 수행될 위치를 정해줄 수 있다그리고 추가적으로 Reliable/Unreliable 키워드와 WithValidation 키워드를 이용해옵션을 설정할 수 있다 - Reliable기본값은 Unreliable이다RPC가 Remote Machine에서 확실히 실행되게하려면 Reliable을 작성해야한다이펙트나 사운드의 경우는 일부 씹혀도 되기 때문에 Unreliable을 작성하는 경우가 많다물리나 스폰의 경우에는 반드시 수행되어야 하기에 Reliable을 작성하는 것이 일반적이다 - WithValidationRPC는 패킷의 전달이 발생하게 된다이러한 과정을 만약 검증하지 않으면 위변조 가능성이 있다그래서 With..
RPC 개념RPC 함수는 A라는 PC가 호출하고, B라는 PC에서 수행되어지도록 하는 함수이다총 경우의 수는 아래와 같다1. Owning Client (호출) → Owning Client (수행) (사실상 자기 자신)2. Server (호출) → Server (수행) (사실상 자기 자신)3. Owning Client (호출) → Server (수행)4. Server (호출) → Owning Client (수행)5. Server (호출) → 모든 곳 (수행) 위 경우의 수를 제외한 나머지 경우는 모두 불가능하다특히, Other Client에서의 호출은 어불성설이며 불가능하다 RPC 키워드- Owning Client (호출) → Server (수행)Server 키워드를 통해서 RPC를 할 수 있다 - Ser..
멀티 플레이 환경 설정Number of Players를 통해 클라이언트 창 개수 (플레이어 수)를 설정할 수 있다Net Modes > Play as Client를 설정하면 데디케이티드 서버로 실행한다Editor Preferences > Play > Multiplayer Options 혹은위에 보이는 고급 세팅을 통해 멀티플레이어 관련 설정을 추가적으로 할 수 있다 Launch separate Server:체크를 하면, 서버 창이 따로 띄워진다체크하지 않으면, 에디터 화면이 클라이자 서버로 실행된다Play Net Mode:모드에 따라 리슨 서버, 데디 서버, … 등 설정할 수 있다Run Under One Process:체크를 하면, 같은 프로세스 내의 에셋을 공유하기 때문에확실한 멀티플레이 환경이라고 보기..