로그인 실패 화면


로그인 성공 화면



로비 생성 및 로비 찾기, 캐릭터 선택



게임 준비




카운트 다운



게임 시작



게임 결과


DB 결과




1. 로그인 화면


2. 메인 화면


방 찾기를 통해 선택한 로비이름을 클릭할 경우

해당 방 번호가 GameInstance로 넘어가고 해당 로비로 들어가게 된다.(게임 인스턴스와 게임 모드를 다루는 카테고리로 가면 확인가능하다.)

3. 캐릭터 선택

선택한 색상 번호가 PlayerController로 넘어간다.

4. 게임 준비 단계

 다른 플레이어들이 게임 준비가 다 되면 동시에 카운드 다운 숫자가 화면에 출력하도록 구현

5. Player HUD

플레이어 점수, HP, 탄환 수 표시

6. 게임 결과

 게임 종료 버튼을 누르면 현재 플레이어가 가지고 있는 정보(변수)들을 JSON을 통해 웹서버(DB)에 전달한다.


플레이어 캐릭터 색생은 Red, Green, Blue 3가지로 구현하였다.


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

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

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

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

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

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

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


게임 승패에 영향을 주는 변수는 서버에서 변경해주어야 한다. 만약 클라이언트에서 변경하도록 구현하면 나쁜 의도를 가진 플레이어가 이를 악용하여 여러 정보를 변경하여 게임에 좋지 못한 영향을 준다.


<캐릭터 생상 지정 및 캐릭터 정보 구조체>


<캐릭터 기능>

1. LobbyPlayerController

- 로그인 화면 위젯

- Charactor 선택 위젯

- ArenaGameMode로 선택한 캐릭터 번호 넘겨주기(다른 플레이어와 캐릭터 겹치는거 방지)

- 게임 준비 완료시 동시에 다른 플레이어 화면에 카운트다운 숫자  


<LobbyPlayerController>


2. ArenaPlayerController

- main 위젯

- 게임 결과 위젯


<ArenaPlayerController>

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. 위와 같이 설정했으면 잘 되는지 검사


 해보자.


+ Recent posts