A Hat in Time Guide

A Hat in Time 모딩: 첫번째 레벨 만들어보기 (작성 중) for A Hat in Time

A Hat in Time 모딩: 첫번째 레벨 만들어보기 (작성 중)

Overview

이 가이드는 레벨을 만들어보기 위해 에디터를 켰지만 “이런 팩넥 뭘 어떻게 해야하는거지” 하고 있는 분을 위해 작성되었습니다.이 가이드를 통해 간단한 시간 균열을 만들어 봅시다.

시작 하기 전에…

아직 작성 중입니다.
남는 시간이 없어서 가이드 작성을 못하고 있습니다…
  • 이 가이드는 해당 가이드를 기반으로 하여 작성되었습니다. 번역을 허가해주신 원저자 분에게 감사드립니다.
  • 모딩 작업 중 세이브 파일이 의도치 않게 꼬이게 될 수 있기에 세이브 파일을 백업해두시는 것을 추천드립니다.
    세이브 파일은 (게임 설치 경로)HatinTimeHatinTimeGameSaveData에 저장됩니다.

  • 에디터는 아직 불안정하며 아무런 이유없이 튕길 수 있습니다. 자주 저장하는 습관을 들이세요.

모드 만들기

모드를 만들기 전, 우선 모딩을 하기 위해 반드시 받아야 하는 모딩 툴을 받아야합니다.
모딩 툴은 스팀 라이브러리를 통해 찾아볼 수 있습니다.

모딩 툴을 설치한 뒤 실행하게 되면 모드 매니저 창이 열립니다.
모드 매니저 창은 다음과 같은 모습을 하고 있습니다. (사진에 표시되어 있는 모드는 제외합니다.)

(사진을 클릭하여 더 자세한 설명을 볼 수 있습니다.)

New Mod 버튼을 누르게 되면 오른쪽 사진과 같은 메뉴가 나오게 되는데, 이곳에서 모드 정보를 작성할 수 있습니다. (사진을 클릭하여 더 자세한 설명을 볼 수 있습니다.)

원하는 대로 내용을 작성하세요. 다만 태그는 지금은 수정할 수 없지만, 나중에 수정이 가능해집니다.
작성이 모두 끝났으면 Save Changes 버튼을 눌러 저장하세요.

주의할 점:

  • 모드 폴더의 이름은 다른 모드 폴더와 이름이 겹쳐선 안됩니다.
  • 아이콘의 이미지는 128 x 128, 512 x 512, 1024 x 1024 같은 2의 제곱의 해상도를 가지고, 용량이 1MB 미만인 이미지만 가능합니다

A Hat in Time 에디터

주의할 점

  • 모딩 작업 중 세이브 파일이 의도치 않게 꼬이게 될 수 있기에 세이브 파일을 백업해두시는 것을 추천드립니다.
    세이브 파일은 (게임 설치 경로)HatinTimeHatinTimeGameSaveData에 저장됩니다.

  • 에디터는 아직 불안정하며 아무런 이유없이 튕길 수 있습니다. 자주 저장하는 습관을 들이세요.

모든 정보를 입력했으면 Launch Editor 버튼을 눌러 에디터를 시작합니다.
게임의 모든 리소스를 로드하므로 시간이 걸릴 수 있습니다.

로딩이 완료되면 환영 메시지컨텐츠 브라우저, 그리고 메인 화면을 볼 수 있습니다.
(사진을 클릭하여 더 자세한 설명을 볼 수 있습니다.)
우리가 주로 사용할 메인화면은 다음과 같이 나누어집니다.

  • 툴바
    • 각종 브러시와 도구들이 정리되어 있습니다.
    • 지금은 이미 정의되어 있는 오브젝트를 사용해서 레벨을 만들 것이므로 지금은 필요하지 않습니다.
  • 뷰포트
    • 현제 작업중인 레벨을 볼 수 있는 곳입니다.
    • 뷰포트를 오른쪽 클릭 한 채로 W,A,S,D 키, 마우스를 이용하여 주위를 둘러볼 수 있습니다.
  • 뷰포트 바
    • 레벨을 만들 때 가장 많이 쓰이는 도구들이 정리되어 있습니다.
    • 2줄로 나누어져 있습니다.
    • 이번 가이드에서 많이 사용할 구역입니다.
  • 상태 표시기
  • 그리드 스냅 설정 및 자동 저장 설정

우선 이번 가이드에서 주로 사용할 뷰포트 바에 대해서 자세히 알아보겠습니다.

뷰포트 바의 두번째 줄의 도구들로 뷰포트의 타입을 설정할 수 있습니다.
(사진을 클릭하여 더 자세한 설명을 볼 수 있습니다.)

  • 뷰포트 타입 버튼을 누르면 뷰포트의 타입을 바꿀 수 있습니다. (3D 화면, 각 축에서 바라보는 화면)
  • 그 옆에 있는 버튼을 누르면 뷰포트에서 실시간으로 애니메이션을 재생할 수 있습니다.
  • 미리보기 설정 그룹에 있는 버튼을 누르면 미리보기 모드를 변경할 수 있습니다.
    (브러시 보기, 와이어프레임, 조명 없음, 조명, 세부 조명, 조명만 보기, 충돌판정 보기)
    보통 조명없음 모드를 사용하지만, 다른 모드를 사용해도 상관 없습니다.
  • 그 외 다양한 도구들도 있지만, 지금 필요한 도구들은 이것들 뿐입니다.

그 윗 줄에 있는 도구들은 우리가 더 자주 사용할 도구들입니다.
(사진을 클릭하여 더 자세한 설명을 볼 수 있습니다.)

  • 저장, 불러오기, 즐겨찾기, 실행 취소, 되돌리기 버튼은 설명하지 않겠습니다.
  • 커서 모드 변경 그룹에 있는 버튼들은 정말 중요하고도 유용한 버튼들입니다.
    버튼 이름
    특징
    선택 모드 버튼
    원하는 오브젝트를 선택할 때 사용합니다.
    좌표 모드 버튼
    기본적으로 활성화 되어 있으며 오브젝트의 위치를 이동시킬 때 사용합니다.
    각도 모드 버튼
    오브젝트의 각도를 설정할 때 사용합니다.
    크기 조절 모드 버튼 2개
    • 오브젝트의 크기를 비율에 맞춰 조절합니다.
    • 특정 축 방향으로 크기를 조절합니다.
  • 커서 기준 변경 메뉴는 커서의 중심을 설정하는 메뉴입니다.

    커서 모드
    특징
    로컬
    오브젝트의 각도를 중심으로 커서가 회전합니다.
    월드
    오브젝트가 회전해도 커서는 회전하지 않습니다.

  • 액터 검색 버튼을 사용하여 레벨 내 특정 액터(오브젝트)를 검색할 수 있습니다.
  • 컨텐츠 브라우저 열기 버튼은 말 그대로 컨텐츠 브라우저 창을 엽니다.
  • 키즈멧 에디터 열기 버튼도 말 그대로 키즈멧 에디터 창을 엽니다.
    이 기능은 움직이는 오브젝트를 만들거나 특정 기능을 구현하는데 사용됩니다.
  • 마티네 에디터 열기 버튼도 말 그대로 마티네 에디터 창을 엽니다.
    이 기능은 움직이는 오브젝트를 만들 때 사용됩니다.

또한 이 옆에는 빌드, 미리 플레이 같은 도구들이 정리되어 있습니다.
(사진을 클릭하여 더 자세한 설명을 볼 수 있습니다.)

  • 빌드 그룹에 있는 버튼들을 사용하여 레벨의 조명효과, 파트(시작 지점) 등을 빌드할 수 있습니다.
    모두 빌드하는 버튼을 사용하는 것을 추천합니다.
  • 미리 플레이 해보기 버튼을 누르면 새 창을 열어 작업중인 레벨을 한 번 플레이 할 수 있습니다.

왼쪽 아래에는 상태 표시기가 있습니다. 특정 문제가 발생할 경우 아이콘 옆에 느낌표가 표시됩니다.

  • 조명 아이콘은 조명 효과에 문제가 없는지를 나타냅니다.
    느낌표가 표시될 경우 조명 효과를 다시 빌드해야 합니다.
  • 도로 모양의 아이콘은 AI의 이동 경로에 문제가 없는지, 스폰 포인트 같은 액트(파트)에 문제가 없는지를 나타냅니다.
  • 선물상자 모양의 아이콘은 패키지가 유효한지 나타냅니다. 이번 가이드에서는 신경쓰지 않아도 됩니다.

컨텐츠 브라우저

A Hat in time은 모델, 음악, 모션 등 여러가지 컨텐츠로 구성되어 있습니다.
우리는 에디터에서 제공하는 컨텐츠 브라우저라는 인터페이스를 통해 이런 컨텐츠를 레벨에 배치할 수 있습니다.

컨텐츠 브라우저는 총 5가지의 패널로 이루어져 있습니다.
(문서 패널은 사실상 사용하지 않음으로 포함하지 않았습니다.)

  • 컨텐츠 브라우저 패널
    기본적으로 활성화 되어있는 패널입니다.

    게임 내 리소스, 자신이 직접 만든 커스텀 리소스를 찾아볼 수 있습니다.
    리소스의 종류에 대해서는 가이드를 진행하면서 알아보도록 하겠습니다.

  • 액터 클래스 패널
    레벨에 스프링을 설치했을 때, 플레이 했을 때 예상과는 다르게 스프링이 작동하지 않는 경우가 있습니다.

    왜냐하면 스프링은 그냥 모델이 아닌, 액터라고 알려진 오브젝트이기 때문입니다.

    액터는 특정 동작을 하도록 프로그래밍되어 있으며, 특정 값 (예시: 플레이어가 날라가는 정도)을 수정할 수 있도록 구성되어 있는 오브젝트 입니다.

    이러한 액터는 액터 클래스 패널을 통해 검색하고, 레벨에 설치할 수 있습니다.

  • 레벨 패널
    레벨 패널에서는 자신이 작업중인 레벨의 목록을 볼 수 있습니다.
    보통 여러 레벨을 나눠 하나의 챕터로 구성할 때 사용합니다.
    이번 가이드에서는 사용하지 않습니다.

  • 씬 패널
    씬 패널에서는 현제 레벨에 배치된 오브젝트의 목록을 볼 수 있습니다.

    뷰포트에서 선택하기 어려운 오브젝트를 선택하거나, 검색하고, 속성 창을 열지 않고 오브젝트의 속성을 변경하는데 사용할 수 있습니다.

  • 레이어 패널
    레이어 패널을 사용하면 여러 오브젝트를 하나의 레이어에 통합시켜 관리할 수 있습니다.

    오브젝트가 많을 때 사용하면 작업을 더 편리하게 할 수 있습니다.

다양한 패널에 대한 자세한 내용은 추후 작성할 가이드에서 다루겠습니다.

레벨 만들기

이제 에디터의 기본적인 사용 방법은 알아보았으므로 이제 직접 레벨을 만들어 보겠습니다.
우선 플레이어가 스폰될 시작 지점부터 만들겠습니다.

블록 배치하기

레벨은 보통 움직이지 않는 물체로 구성되어 있습니다.
이를 스태틱 메시(Static mesh) 라고 하며 컨텐츠 브라우저에서 스태틱 메시로 필터링 하면 찾아볼 수 있습니다.

컨텐츠 브라우저에서 “secret”을 검색하면 파란 시간 균열에서 사용되는 메시를 찾아볼 수 있습니다.
컨텐츠 브라우저에서 꺼내고 싶은 스태틱 메시를 클릭하고 뷰포트로 드래그 하면 레벨에 배치할 수 있습니다.

또한 뷰포트에서 오브젝트를 클릭한 채로 커서를 바꾸어 크기, 각도 등을 바꿀 수 있습니다.

이렇게 하면 대부분의 레벨을 만들 수 있습니다. 하지만 돌아가는 기어같은 오브젝트가 없다면 레벨을 진행하는데 있어 재미를 느낄 수 없을 것입니다.
이 가이드의 후반부에서 움직이는 오브젝트를 만드는 방법에 대해 알아보겠지만, 우선 레벨을 만드는데 중요한 것들부터 알아보겠습니다.

플레이어 시작 지점 만들기

이제 미리 플레이 해보기 버튼을 눌러 레벨을 플레이 해보고 싶을 것 입니다. 하지만 버튼을 누르게 되면 시작 지점을 찾을 수 없다는 메시지만 뜨며 플레이는 되지 않습니다.
이는 게임에서 플레이어의 시작 지점을 찾을 수 없어 일어나는 현상으로 레벨에 시작 지점을 배치하면 이 문제를 해결할 수 있습니다.

플레이어의 시작 지점을 설정하기 위해선 Hat_PlayerStart 라는 액터를 사용해야 합니다.
이 액트는 플레이어의 시작 지점을 설정하는 액트이며, 나중에는 채크포인트를 만들때 사용되기도 합니다.

해당 액트를 배치하기 위해서 액터 클래스 패널을 연 뒤, 해당 액트를 찾고, 블록을 배치한 것 처럼 클릭해서 원하는 곳에 드래그 하면 됩니다.
하지만 그냥 배치만 해선 안됩니다. 반드시 파트 빌드 버튼을 눌러 파트를 빌드 해주세요.
그리고 플레이 버튼을 누르게 되면… 드디어 레벨을 플레이 할 수 있게 됩니다!

참고로 플레이어가 스폰될 때 바라볼 방향은 Hat_PlayerStart 액터에 표시되는 화살표를 기준으로 결정됩니다. 이 점 유의해주세요.

시간 조각 배치하기

시간 조각이 없는 시간 균열은 시간 균열이라고 할 수 없습니다.
시간 조각을 배치하기 위해선 Hat_TimeObject 액터 중 레벨에 맞는 것을 골라 Hat_PlayerStart 액터를 배치 할 때 한 것 처럼 배치하세요.

레벨 설정

“View” → “World Properties”를 클릭하면 레벨 속성 창이 열립니다. 이 창에서는 레벨에 적용되는 다양한 속성을 설정할 수 있습니다.

피사계 심도(DoF)

시간 균열에서는 플레이어에서 멀리 있는 곳이 흐려지는 효과가 적용됩니다.
이 효과를 “피사계 심도”라고 부르며 렌더링 탭의 포스트 프로세스 설정에서 이를 활성화 하거나 비활성화 할 수 있습니다.

World Info

World Info 탭 에서는 맵의 배경음악 및 다양한 레벨 속성을 변경할 수 있습니다.
월드 정보를 만들려면 My Map Info 속성 옆에 있는 파란색 화살표를 클릭하고 Hat_MapInfo를 선택하면 됩니다.
월드 정보가 만들어지게 되면 배경음악이나 챕터 정보등의 속성을 수정할 수 있는 탭이 추가됩니다.

배경음악

배경음악은 레벨 내 조건에 따라 배경음악을 처리하는 “Music Tree”라는 것을 사용합니다.
레벨에 배경음악을 추가하는 방법은 세가지 방법이 있습니다.

  • 이미 게임에 존재하는 Music Tree를 사용하거나 배경음악 Sound Cue를 사용하기
  • 직접 Music Tree를 만들어 사용하기

우리는 파란 시간 균열 레벨을 만들고 있으므로 배경음악 Sound Cue를 사용하겠습니다.

컨텐츠 브라우저를 연 뒤, 필터링 목록에서 Sound Cues를 선택하고 Clock_Towers_Beneath_The_Sea를 검색하면 파란 시간 균열의 배경음악을 찾을 수 있습니다.
이를 클릭하고 Music 탭에서 Music Tree 속성에 있는 초록색 화살표를 클릭하면 배경음악을 삽입할 수 있습니다.

Player 탭

Player 탭 에서는 레벨에서 플레이어가 어떻게 행동해야 하는지 결정 할 수 있습니다.

형식
특징
Is Vanessa Manor
바네사 여왕의 저택 처럼 플레이어가 가면만 사용할 수 있도록 설정합니다.
Is Time Rift
일시 정지 메뉴에서 플레이어가 파란 시간 균열에 있다고 표시됩니다.
Is Purple Time Rift
일시 정지 메뉴에서 플레이어가 보라색 시간 균열에 있다고 표시됩니다.

시각 효과

Visuals 탭 에서는 레벨의 시각 효과를 설정할 수 있습니다.

Zone Info

Zone Info 탭 에서는 플레이어가 레벨에서 떨어질 경우 어느 높이에서 피해를 입히고 레벨로 복귀시킬지 설정할 수 있습니다.
기본 값으로 설정할 경우 다시 레벨로 복귀할 때 까지 몆 분이 걸리므로 -1000 또는 레벨에 맞는 값으로 설정하세요.

Visuals

Visuals 탭 에서는 미리 준비된 비주얼 템플릿으로 레벨의 배경을 설정할 수 있습니다.

움직이는 오브젝트 만들기

이제 레벨을 만드는 기초적인 내용은 모두 알아봤습니다. 이제 움직이는 오브젝트를 만드는 방법에 대
해 알아봅시다.

우선 이 가이드에서는 기어를 이용해서 움직이는 오브젝트를 만들어 보겠습니다. 기어가 아닌 다른 오브젝트도 가능합니다.

방금 배치한 기어는 스태틱 메시입니다. 스태틱 메시의 경우 움직이게 설정할 수 없으므로 오브젝트의 종류를 무버 (Mover)로 변경해야 합니다.

우선 기어를 선택하고 우클릭 한 뒤, 메뉴에서 Convert -> Convert StaticMeshActor To Mover를 클릭합니다.

스태틱 메시를 무버로 변경할 경우 엔진에서는 오브젝트의 충돌 판정을 없에버립니다.
플레이어가 기어를 뚫고 떨어지면 안되기 때문에 충돌 판정을 다시 설정 해줘야 합니다.

기어를 선택하고 우클릭 한 뒤, 메뉴에서 (오브젝트 이름) Properties…를 클릭하여 오브젝트 속성 창을 엽니다.

그 후 Collision 탭으로 이동한 뒤 Collision TypeBlock All로 설정합니다.

언리얼 3에서는 오브젝트를 회전시키거나 움직이게 하려면, 오브젝트가 어떻게 움직이도록 설정하는 마티네 (Matinee)를 사용해야 합니다.

마티네는 키즈멧 함수의 일종이므로 키즈멧 에디터로 들어가서 설정해야 합니다.
(키즈멧에 대해서는 추후 가이드를 작성할 예정입니다.)

우선 키즈멧 에디터를 연 뒤, 함수 검색 버튼을 눌러 Level Loaded, Matinee를 검색하여 함수를 아래와 같이 꺼낸 뒤 연결합니다.

우선 기어가 반복적으로 회전해야 하므로 마티네를 선택 한 뒤 키즈멧 에디터의 오른쪽 아래에 있는 속성 창에서 “Looping”을 채크합니다.

이제 마티네를 더블 클릭하면 마티네 에디터가 열립니다. 이 곳에서 오브젝트를 움직일 수 있도록 설정할 수 있습니다.

마티네에서는 움직이게 할 오브젝트들을 그룹으로 나누어 관리합니다.
새 그룹을 만들기 위해서는 움직이게 할 오브젝트를 선택한 상태에서 마티네 에디터의 그룹 영역을 우클릭 한 뒤 “Add New Empty Group”을 클릭하면 됩니다.

그룹의 이름은 아무렇게 지어도 상관없으나, 어떤 오브젝트인지 알 수 있도록 짓는 것이 좋습니다.

이제 실제 오브젝트를 움직이게 만들기 위해 그룹에 트랙을 만들어야 합니다.
새로 만든 그룹을 우클릭 하고 “Add New Movement Track”을 클릭합니다.

그 후 만들어진 Movement 트랙을 우클릭 한 뒤 “Split translation and rotation”을 클릭하면 됩니다.

이제 오브젝트를 움직이도록 하기 위해 키 프레임을 추가 하겠습니다.
새 키 프레임을 추가하려면 수정하려는 Translation(이동) 또는 Rotation(회전) 축을 클릭한 다음 커서를 움직여 키 프레임을 추가할 위치에 놓은 다음 새 키 프레임 추가 버튼을 누릅니다.

이제 프레임을 추가했으니 움직일 정도나 보간 모드를 설정해줄 차례입니다. 프레임을 선택한 뒤 우클릭하면 다음과 같은 메뉴가 나옵니다.

이름
설명
Interp Mode
두개의 키 프레임이 서로 연결되는 방식을 지정합니다.

이름
설명
Curve
다음 프레임으로 이동할 때 감속 또는 가속됩니다.
Linear
다음 프레임으로 이동할 때 동일한 속도로 이동합니다.
Constant
보간이 적용되지 않습니다.
Set Time
키 프레임이 있는 시간을 더 세밀하게 수정 할 수 있습니다.
Set Value
오브젝트가 회전, 이동할 정도를 수정 할 수 있습니다.

이번 예제의 경우 약 2.5초 씩 360도 씩 회전하는 것으로 만들겠습니다.
우선 2.5초에 키 프레임을 하나 만듭니다. 그 후 빨간색 끝 지점을 2.5초로 이동시킵니다.
그 다음 기어가 멋대로 감속하는 것을 막기 위해 시작 프레임과 끝 프레임의 Interp Mode를 Linear로 설정한 뒤 값을 360으로 설정합니다.

이렇게 하면 기어가 원하는 대로 돌아가기 시작할 것 입니다. 마티네를 이용하면 기어 말고도 다양한 오브젝트들을 만들 수 있습니다.

체크포인트 만들기

(작성 중)

SteamSolo.com