데블스캠프2018/언리얼_입문자를_위한_프로젝트_아키텍쳐소개 (rev. 1.3)
Intro ¶
- Unreal 프로젝트 진행시 어떤걸 고려해야하는지 알려주는 세션
- 실습을 하는 세션은 아님
- 다양한 언어를 지원
언리얼 장점 ¶
- 다양한 기능 지원
- 꾸준한 관리
- 잘 정리된 문서
- 많은 튜토리얼
언리얼 단점 ¶
- 기능 제공을 위한 구조 강요
- 오픈 소스이나 오픈되지 못한 사용자
- 유니티에 비해서 사용자들이 프로젝트나 강의를 오픈하는 편이 아님
- 얕은 수준의 예시 프로젝트
- 무거운 에디터
본론 ¶
- 언리얼에서 제공하는 멀티플레이 게임 제작시 기본제공 기능에 대해서 Araboja
GameInstance ¶
- 서버에만 존재
- 게임 플레이에 필요한 오브젝트 등
- 플레이어 정보
- 매 턴마다 변경되는 정보를 각 객체에 전달
PlayerCharacter ¶
- 서버와 클라이언트 모두 소유
- 플레이어가 실질적으로 조작하는 케릭터
- 플레이어와의 모든 상호작용이 구현
PlayerController ¶
- 서버와 1명의 클라이언트가 소유
- 플레이어 한 명을 나타냄
- 서버에서 클라이언트 조작시 이 객체를 사용
Q&A ¶
- 관제탑 모형이라 보면 된다.
- 클라이언트 끼리는 데이터 공유가 불가능
- 케릭터의 행동들이 서버에 동기화 되기 때문에 딜레이 발생
- 보통 FPS에서 총을 발사했을 때 물체에 닫기 전에 이미 연산을 끝내는 방식으로 연산.
- 맵(레벨)은 서버와 모든 클라이언트에 존재.
예시 ¶
- 게임 중간에 플레이어가 나갔다면?
- playerCharacter에서 메뉴 생성
- Exit버튼을 누르면 Gamemode에서 해당 character가 나갔다고 처리
- 개발자 재량에 따라 Controller를 제거할 수도 State를 제거할 수도 있다
- GameInstance에서 RegisteringPlayer를 제거
구조의 장점 ¶
- 한 번 익숙해지면 이후 크게 변화x
- 사용자의 무단 정보 수정에 영향 없음
- 서비스 확장에 용이
- 재생산성과 유지보수의 용이함을 강제
- 성능보장