언리얼엔진5/[Part3] 이득우의 언리얼 프로그래밍
[이득우의 언리얼 프로그래밍 Part3 필기] 2. 게임 모드와 로그인
Rocketbabydolls
2024. 4. 24. 11:36
Standalone
- 네트워크 연결 X , 모든 플레이어가 로컬 플레이어.
- 멀티플레이어를 고려하지 않고 막 짜면 멀티플레이어 전환 시 코드 사용 불가하다.
Client
- 서버 측 로직을 실행 않고 서버에게 받은 콘텐츠를 보여주는 프록시
Listen Server
- 게임이 서버의 역할을 가지고 있음
- 로컬 플레이어를 서버에 직접 배치
Dedicated Server
- 원격 클라이언트의 연결을 허용하지만 로컬 플레이어가 없음
- MMORPG 등에 사용
- 신뢰할 수 있는 고성능 서버가 필요한 게임에 사용
리슨 서버의 게임 서비스
게임 서비스 준비
스탠드얼론 게임 시작 -> 게임모드 생성 -> 플레이어 컨트롤러 0 생성
게임 서비스 시작
리슨서버로 게임 서비스 시작 -> 로비 생성 등등 서버 시작 -> 다른 클라이언트가 접속 요청(거부 가능) -> 받아들였을 시 플레이어 컨트롤러1 생성 -> 클라이언트 측에 플레이어 컨트롤러 1(자기 자신) 복제
위의 스크린샷을 통해 아래 내용을 확인할 수 있다.
리슨서버에는 게임모드가 있지만 클라이언트에는 게임모드가 없음.
-> 게임 스테이트 사용(서버 클라이언트 모두 존재)
게임모드 -> 게임스테이트 명령
게임스테이트가 월드에 속한 모든 플레이어에게 BeginPlay 실행하라고 명령 (게임스테이트가 복제될 때)
위의 HandleBeginPlay 는 게임모드가 startplay 를 지시하면 gamestate 에게 명령을 내려 월드의 모든 액터들에게 BeginPlay 호출하라고 명령을 내린다. (리슨 서버에서는 서버에서만 실행 - 로컬의 로직이기 때문)
위 함수는 서버에서 bReplicatedHasBegunPlay 변경이 감지가 되면 클라이언트가 신호를 받아 함수가 호출되어 BeginPlay 를 실행한다.