U E D R , A S I H C RSS

데블스캠프2018/언리얼_입문자를_위한_프로젝트_아키텍쳐소개

Intro

  • Unreal 프로젝트 진행시 어떤걸 고려해야하는지 알려주는 세션
  • 실습을 하는 세션은 아님
  • 언리얼은 다양한 언어를 지원

진행

언리얼 장점

  • 다양한 기능 지원
  • 꾸준한 관리
  • 잘 정리된 문서
  • 많은 튜토리얼

언리얼 단점

  • 기능 제공을 위한 구조 강요
  • 오픈 소스이나 오픈되지 못한 사용자
    • 유니티에 비해서 사용자들이 프로젝트나 강의를 오픈하는 편이 아님
  • 얕은 수준의 예시 프로젝트
  • 무거운 에디터

본론

  • 언리얼에서 제공하는 멀티플레이 게임 제작시 기본제공 기능에 대해서 Araboja

GameInstance

  • 서버에만 존재
  • 게임 플레이에 필요한 오브젝트 등
  • 플레이어 정보
  • 매 턴마다 변경되는 정보를 각 객체에 전달

GameMode

  • 서버에만 존재
  • 게임을 진행하는 객체
  • 등등

GameState

  • 서버와모든 클라이언트에 존재

PlayerCharacter

  • 서버와 클라이언트 모두 소유
    • 데이터는 서버와 해당 클라이언트만 공유 중
  • 플레이어가 실질적으로 조작하는 케릭터
  • 플레이어와의 모든 상호작용이 구현

PlayerController

  • 서버와 1명의 클라이언트가 소유
  • 플레이어 한 명을 나타냄
  • 서버에서 클라이언트 조작시 이 객체를 사용

PlayerState

  • 공백이 부족해서 적지 못했습니다. 갸르르

Q&A

  • 관제탑 모형이라 보면 된다.
  • 클라이언트 끼리는 데이터 공유가 불가능
  • 케릭터의 행동들이 서버에 동기화 되기 때문에 딜레이 발생
  • 보통 FPS에서 총을 발사했을 때 물체에 닫기 전에 이미 연산을 끝내는 방식으로 연산.
  • 맵(레벨)은 서버와 모든 클라이언트에 존재.

예시

  • 게임 중간에 플레이어가 나갔다면?
    • playerCharacter에서 메뉴 생성
    • Exit버튼을 누르면 Gamemode에서 해당 character가 나갔다고 처리
    • 개발자 재량에 따라 Controller를 제거할 수도 State를 제거할 수도 있다
    • GameInstance에서 RegisteringPlayer를 제거

구조의 장점

  • 한 번 익숙해지면 이후 크게 변화x
  • 사용자의 무단 정보 수정에 영향 없음
  • 서비스 확장에 용이
    • 대신 개발비용이 많이 듬
  • 재생산성과 유지보수의 용이함을 강제
  • 성능보장

정리

  • 솔직히 이해하기 힘들 것 같습니다
  • 시험공부 때문에 만들면서 좀 까먹..
  • 나름 관심 있는 사람들에게 도움이 되었다 생각합니다
    • 일단 한글문서가 별로 없고
    • 대부분의 튜토리얼이 이런 부분을 다루지는 않습니다.
  • 나중에 시작하기 앞서 이런 내용이 있었다는 것을 기억해주시면 감사하겠습니다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:19
Processing time 0.0199 sec