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