언리얼엔진5/[Part3] 이득우의 언리얼 프로그래밍

[이득우의 언리얼 프로그래밍 Part3 필기] 2. 게임 모드와 로그인

Rocketbabydolls 2024. 4. 24. 11:36

Standalone

  • 네트워크 연결 X , 모든 플레이어가 로컬 플레이어.
  • 멀티플레이어를 고려하지 않고 막 짜면 멀티플레이어 전환 시 코드 사용 불가하다.

 

Client

  • 서버 측 로직을 실행 않고 서버에게 받은 콘텐츠를 보여주는 프록시

 

Listen Server

  • 게임이 서버의 역할을 가지고 있음
  • 로컬 플레이어를 서버에 직접 배치

 

Dedicated Server

  • 원격 클라이언트의 연결을 허용하지만 로컬 플레이어가 없음
  • MMORPG 등에 사용
  • 신뢰할 수 있는 고성능 서버가 필요한 게임에 사용

 

게임 서비스 시작

 

리슨 서버의 게임 서비스

 

게임 서비스 준비

스탠드얼론 게임 시작 -> 게임모드 생성 -> 플레이어 컨트롤러 0 생성

 

게임 서비스 시작

리슨서버로 게임 서비스 시작 -> 로비 생성 등등 서버 시작 -> 다른 클라이언트가 접속 요청(거부 가능) -> 받아들였을 시 플레이어 컨트롤러1 생성 -> 클라이언트 측에 플레이어 컨트롤러 1(자기 자신)  복제

 

 

게임 모드의 주요 함수

 

 

 

 

게임 스테이트

 

 

로그

 

위의 스크린샷을 통해 아래 내용을 확인할 수 있다.

 

리슨서버에는 게임모드가 있지만 클라이언트에는 게임모드가 없음.

-> 게임 스테이트 사용(서버 클라이언트 모두 존재)

게임모드 -> 게임스테이트 명령

게임스테이트가 월드에 속한 모든 플레이어에게 BeginPlay 실행하라고 명령 (게임스테이트가 복제될 때)

 

HandleBeginPlay

 

위의 HandleBeginPlay 는 게임모드가 startplay 를 지시하면 gamestate 에게 명령을 내려 월드의 모든 액터들에게 BeginPlay 호출하라고 명령을 내린다. (리슨 서버에서는 서버에서만 실행 - 로컬의 로직이기 때문)

 

 

OnRep_RepliacatedHasBegunPlay

 

위 함수는 서버에서 bReplicatedHasBegunPlay 변경이 감지가 되면 클라이언트가 신호를 받아 함수가 호출되어 BeginPlay 를 실행한다.