GameInstance : 게임 시작부터 종료할때까지 지속적으로 단 1개만 존재, 어디에서나 공유 가능하다.

- 어떤 클라이언트나 접근이 가능

- 모든 클라이언트에게 필요한 정보를 저장 및 제공할 때 사용

GameMode : 레벨이 로드되면서부터 게임 종료시까지 단 1개만 존재

- 게임 룰 : 참여 인원수, 최고점수, 게임 시작 또는 종료 조건

- 서버측 코드에서만 접근가능하다.

GameState : GameMode가 인스턴스 생성, 1개만 존재

- 서버, 클라이언트 측에서 접근가능

- 클라이언트에게 서버측 정보를 전달할 때 사용

- 전체 플레이어수, 전체 PlayerState 정보에 접근가능


게임 메뉴맵 -> 로비 맵 -> 게임맵 / 맵들이 로드 될 때마다 각각의 GameMode가 실행된다.


PlayerController : 플레이어 입력을 통해 캐릭터을 조종할 수 있도록한다.

- 서버측에서는 모든 PC에 접근 가능

- 클라이언트 측에서는 현재 캐릭턱의 PC만 접근가능

PlayerState : 한 플레이어의 게임 상태정보를 가지고 있다.

- 모든 클라이언트가 다른 PlayerState에 접근할 때 사용

- 현재 PlayerState의 주인이 아니면 데이터 갱신 불가

- PlayerController의 단점을 극복할 수 있다. 어디서나 접근 가능하니까

Pawn : 플레이어를 대신할 액터(액터,폰,개릭터)

- 서버측에서는 모든 Pawn에 접근할 수 있다. 


1. 플레이어가 로그인을 하면 본인이 게임을 진행 할 로비를 만들것인지 참여할것인지 선택한다.

< GameInstance 클레스 1. 로비 만들기, 2. 로비 찾기, 3. 로비 연결>


2. 로비 게임 모드(LobbyGameMode)


3. 게임이 진행되는 ArenaGameMode


'언리얼4 > 웹서버 연동 멀티 FPS 게임(로비 기능)' 카테고리의 다른 글

6. Widgets  (0) 2019.02.28
5. PlayerCharacter  (0) 2019.02.28
4. PlayerController  (0) 2019.02.28
2. 웹서버(DB) 연동 방법 JSON  (0) 2019.02.28
1. 웹서버(PHP, DB)  (0) 2019.02.28

1. 언리얼 에디터에서는 JSON을 직접 지원하지 않으므로 마켓플레이스에서 VaRest 플러그인을 다운받아야 쉽게 사용할수 있다. 

<VaRest 플러그인 설정>


2. 언리얼 에디터에서 json으로 로그인 하기위해 로그인 기능을 가진 CPP Actor 플루프린트를 만든다.  만든 CPP Actor에 로그인 기능을 가진 함수를 만들기 위해 아래와 같은 설정을 해주어야 한다.

참고자료 : https://wiki.unrealengine.com/UE4.10_How_To_Make_HTTP_GET_Request_in_C%2B%2B



3. 위와 같이 설정했으면 잘 되는지 검사


 해보자.


웹 서버는 미국에 서버를 두고 있는 AWARDSPACE 라는 웹서버를 사용하였다. 

주소 :  https://www.awardspace.com/


1. 언리얼 에디터에서 웹서버 PHP로 아이디와 패스워드를 전달하면 PHP에서 DB에 있는 플레이어 정보를 가져와 비교하여 로그인 여부를 확인한다.


< DB 플레이어 로그인 PHP >


2. 언리얼 에디터상의 게임이 종료되면 언리얼에 저장된 변수(정보)들이 웹서버 PHP로 전달되고 DB에 저장된다.


< DB 플레이어 정보 저장 PHP >


3. DB 플레이어 목록에는 3명이 입력된 상태이다.(3명 로그인)

< DB 플레이어 명단 >

 

 리플리게이션 함수는 playercontroller가 소유한 액터에만 정의한다.


리플리케이션 함수의 호출은?

멀티캐스트, 런 온 오닝 클라이언트 함수의 호출은 반드시 서버측에서 호출

런 온 서버 함수의 호출은 서버측이나 클라이언트 측에서 호출



'언리얼4 > 기능' 카테고리의 다른 글

언리얼4 네트워크  (0) 2019.02.25

- Server / Client 시스템

- Listen Server /  Dedicated Server(전용서버: 클라이언트 포함 안함)

- Listen Server 시스템을 통해 네트워크 개념 학습

- Server(Authority : 변경권한) : 서버가 클라이언트에게 변경권한을 준다.

- Replication(복제) : 서버에서 클라이언트로 복제

- RPC(Remote Procedure Call, 원격함수 호출)


 

Replication(복제)에는 3가지 복제가 있다.

- Actor : 액터가 서버에서 스폰되면 클라이언트에도 복제된다.

- Variable : 변수의 값이 서버에서 변경되면 클라이언트에도 복제된다.(Replicated, RepNotify)

- Function : Run on Server, Multicast, Run on Owning Client

- Run on Server : 호출된 함수가 서버에서 실행됨(클라이언트가 호출)

- Multicast : 서버가 호출해야하고 서버와 모든 클라이언트에서 실행됨

- Run on Owning Client : 서버가 호출해야하고 특정 클라이언트에서만 실행됨(1개에서만!!)


 

GameInstance : 게임 시작부터 종료할때까지 지속적으로 단 1개만 존재, 어디에서나 공유 가능하다.

- 어떤 클라이언트나 접근이 가능

- 모든 클라이언트에게 필요한 정보를 저장 및 제공할 때 사용

GameMode : 레벨이 로드되면서부터 게임 종료시까지 단 1개만 존재

- 게임 룰 : 참여 인원수, 최고점수, 게임 시작 또는 종료 조건

- 서버측 코드에서만 접근가능하다.

GameState : GameMode가 인스턴스 생성, 1개만 존재

- 서버, 클라이언트 측에서 접근가능

- 클라이언트에게 서버측 정보를 전달할 때 사용

- 전체 플레이어수, 전체 PlayerState 정보에 접근가능


 

PlayerController : 플레이어 입력을 통해 캐릭터을 조종할 수 있도록한다.

- 서버측에서는 모든 PC에 접근 가능

- 클라이언트 측에서는 현재 캐릭턱의 PC만 접근가능

PlayerState : 한 플레이어의 게임 상태정보를 가지고 있다.

- 모든 클라이언트가 다른 PlayerState에 접근할 때 사용

- 현재 PlayerState의 주인이 아니면 데이터 갱신 불가

- PlayerController의 단점을 극복할 수 있다. 어디서나 접근 가능하니까

Pawn : 플레이어를 대신할 액터(액터,폰,개릭터)

- 서버측에서는 모든 Pawn에 접근할 수 있다. 


GameMode의 개념 및 한계

GameMode(서버로직)에서 클라이언트 로직 실행

-게임룰 위주의 서버로직

-OnPostLogin 이벤트(PlayerController 접근 가능)

-GameModo(서버로직)에서 클라이언트 로직 실행

-맵이 로드될 때 맵에 등록된 GameMode 실행


게임 메뉴맵 - 로비 맵 - 게임맵 / 맵들이 로드될때마다 각각의 GameMode가 실행된다.


배포 : 

1. 프로그램 작성 완료

2. 서버로 실행[프로그램 이름^맵이름?리슨 -게임], 클라이언트 실행(프로그램 이름^아이피주소 -게임)

3. 클라이언트가 자동으로 서버를 찾아서 연결(LAN, Internet)

4. 세션(Session) : 서버 등록, 게임 찾기, 게임 연결, 게임 해제


 

ServerTravel시 맵간 데이터 유지


SaveGame을 이용하여 다시 사용할 데이터를 파일에 저장

다음 레벨에서 사용할 데이터를 파일에서 읽어 온다.


SaveGame 생성,변수선언

Create SaveGame Object, SaveGameToSlot,

Does ExistSaveGame, Load SavaGameFromSlot



'언리얼4 > 기능' 카테고리의 다른 글

Function 리플리케이션 시 발생하는 오작동 문제  (0) 2019.02.25

<참고자료 1-1>


<참고자료 1-2>


<참고자료 1-3>




<참고자료 2>


<참고자료 3>


<참고자료 4>


<참고자료 5>


<참고자료 6>


<참고자료 7>


<참고자료 8>

'언리얼4 > 프로젝트(RPG)' 카테고리의 다른 글

게임 영상  (1) 2019.02.28
HP,MP 리젠 System  (0) 2019.02.25
HP,MP,EXP 및 Level 설정  (0) 2019.02.25
Damage System  (0) 2019.02.25
기본공격(콤보 및 마우스 방향 바라보기)  (0) 2019.02.25

+ Recent posts