* 게임은 클라이언트 - 서버 모델이라는 것을 기반으로 실행된다

*  서버란 게임을 호스팅(운영)하는 역활이며, 거기에 다수의 클라이언트가 연결 가능하다

서버와 클라이언트 관계

 

* 클라이언트와 서버 사이에서 통신 방식은 클라이언트가 서버에 데이터를 전송하면, 서버는 그 데이터 중 일정부분을 다른 클라이언트에 전송한다

* 게임플레이 용도의 클라이언트끼리 서로 통신하는 일은 드물다


 

 

서버가 왕이다

* 게임 규칙 및 체력 변경 등 게임플레이가 돌아가는 방식을 결정하는 데 영향을 주는 무엇이든 서버에서만 일어난다
* 그 후 클라이언트에서 그 사실을 알아야 하는 경우 알려주고 클라이언트에서 갱신한다.
ex) 슈터 게임에서 누가 대미지를 받을 지 서버에서 결정하는 것이 좋다 -> 클라이언트 머신에서 치트 불가능하게


[언리얼 서버 2가지 유형]

1. 리슨서버
- 권위자 역활을 한다
- 동시에 클라이언도 실행한다
- 자신의 컴퓨터에 게임을 호스팅을 하면서 친구를 게임에 초대할 수 있다
- 머신이 전체 게임의 서버 역활을 한다
- 내가 하는 게임을 입력을 하고,  랜더링 됨
- 나도 플레이를 하면, 다 같이 멀티로 플레이 한다

LISTEN SERVER

2. 데디케이티드(전용) 서버
- 다른 클라이언트가 참가하는 전용 서버 역활
- 입력을 받거나 랜더링 되지는 않음
- 서버에서 로컬플레이 하는 유저는 없다
- 최적화가 되어 있어서, 실행 비용이 싸다


[리플리케이션 (중요)]

- 머신 사이를 오가여, 통신하는 데이터와 명령과 그  방법
- 머신사이의 다양한 데이터와 명령 전송 및 그 통신 방식을 말함

* (HP:100) 대미지를 받고, 다른 클라이언트에 (HP:30)으로 바뀌고 전송
* 여기서 HP 값을 리플리케이트 한다라고 한다

* 서버에서 변화를 책정한다.
* 적법한지 체크를 하고 HP를 감소시키고서, 그 값을 다른 클라리언트에 리플리케이트 시킨다

* 리플리케이션 할수 있는 것들(ex)
HP , 액터 존재 여부(스폰), 블루프린트 함수 호출

 


 

에디터에서 멀티 테스트 설정
2인시 테스트 화면

 

* 데디케이드 서버 실행을 체크하고  1인으로 실행하면 백그라운드의 데디케이티드 서버에 연결됨,
* 데디케이티드 서버는 아무것도 랜더링하지 않고, 로컬플레이어 중인 플레이어를 처리하지 않는다

1인 데디케이티드 화면

 

* 테스트에 여러가지 방법이 있는데, 2가지 버전의 바로가기를 만들고 속성-> 끝부분에 아래를 추가한다

* 프로젝트이름, 열고자 하는 맵, ?(부가옵션 넣을 수 있게됨)  listen(리슨서버로 사용) -game(에디터 아닌 게임을 실행)

* 프로젝트이름, 접속 IP 주소, listen(리슨서버로 사용) -game(에디터 아닌 게임을 실행)

위는 서버, 아래는 클라이언트

 

+ Recent posts