언리얼 엔진5 Advanced - PvP 게임의 완성

타입·2025년 4월 10일
0

언리얼 강의

목록 보기
37/47

네트워크 멀티플레이어 게임의 설계

게임 모드의 특징과 관리하는 정보

오직 서버에서만 존재

  • 게임 모드가 관리하는 정보
    현재 게임에 참여하고 있는 플레이어의 수
    플레이어가 게임에 입장하는 방법과 스폰, 리스폰 규칙
    게임에 관련된 중요한 처리: 대미지 처리, 스코어에 관련된 로직 처리 등등

게임 스테이트의 특징과 관리하는 정보

서버와 모든 클라이언트에 존재
클라이언트는 게임 스테이트를 사용해 현재 게임의 상태를 파악할 수 있음
팀전에서의 팀 스코어를 관리하는데 유용

  • 게임 스테이트가 관리하는 정보
    현재 월드의 시간
    플레이어 스테이트의 배열

플레이어 스테이트의 특징과 관리하는 정보

서버와 모든 클라이언트에 존재
클라이언트는 플레이어 스테이트를 사용해 플레이어의 상태를 파악할 수 있음
플레이어 개인의 스코어 및 다른 사람들과 공유할 플레이어 정보를 관리하는데 유용

  • 플레이어 스테이트가 관리하는 정보
    스코어
    플레이어 이름
    플레이어 Id

PvP 게임의 완성

PvP 게임의 완성을 위해 고려할 요소

PvP 전투 시스템의 보완
죽은 후 캐릭터 랜덤 리스폰 기능의 제작
플레이어 스테이트의 값을 활용한 캐릭터별 메시 로딩
플레이어 스테이트가 제공하는 스코어 기능의 활용
게임 스테이트를 활용한 게임 매칭 상태의 변경
서버 트래블 기능을 활용한 게임 레벨의 변경

실습코드

https://github.com/dnjfs/ArenaBattle_Network/commit/152a3fae48367609a95da63c2a5b0fdec668ecd1

  • 사망 시 리스폰 구현
    캐릭터 초기화 후 랜덤 위치에서 리스폰

  • 캐릭터 메시 로딩
    config 파일에 메시 경로 작성
    서버와 클라이언트에서 PlayerId를 통해 각자 세팅 (PlayerId는 수시로 바뀌니 고정되지 않음)

  • 매치 상태 변경
    게임모드에서 타이머 호출
    시간이 다 되거나 점수를 일정 이상 얻으면 FinishMatch()를 호출하여 매치 상태 변경
    일정 시간 이후 ServerTravel() 함수로 레벨 이동

GameModeBase는 아주 기본적인 기능만 제공되는 클래스
GameMode는 GameModeBase를 상속받은 매칭 관리가 가능한 클래스

  • ServerTravel()
    서버에 접속한 모든 클라이언트의 접속을 유지한 상태에서 새로운 레벨로 이동
profile
주니어 언리얼 프로그래머

0개의 댓글