아이템 생성

이제 맞춤 제작법과 도면을 생성했으니, 맞춤 아이템을 만들어 보겠습니다. 이번 튜토리얼에서는 'Doc 아이템’이라는 이름의 아이템을 만들 것입니다. 이 아이템은 평면 TV처럼 보일 것입니다.

아이템을 위한 폴더 생성

새티스팩토리의 아이템(및 유체)은 FGItemDescriptor들로 설명되며, 이들은 외관과 속성에 대한 정보를 포함합니다. 이들은 종종 아이콘을 정의하는 텍스처, 메쉬 및 세계 내 외관을 정의하는 재료와 함께 제공됩니다.

조직을 유지하기 위해 아이템 관련 파일을 함께 보관할 폴더를 생성하겠습니다.

언리얼 에디터의 콘텐츠 브라우저로 이동합니다. 모드의 루트 폴더(DocMod 콘텐츠 로 표시됨)로 이동하여 우클릭 후 '새 폴더’를 선택합니다. 새 폴더의 이름을 "Items"로 지정하여 지금까지의 조직 패턴을 유지합니다.

같은 과정을 반복하여 DocItem 이라는 폴더를 생성합니다.

블루프린트 클래스 생성

먼저, FGItemDescriptor를 생성하겠습니다.

콘텐츠 브라우저의 DocItem 폴더 내에서 우클릭 후 블루프린트 클래스를 생성하고 FGItemDescriptor를 부모 클래스로 사용합니다. 이름은 Coffee Stain의 명명 규칙에 따라 Desc_DocItem 으로 지정하겠습니다("Desc"는 디스크립터, 설명자를 의미합니다).

이미지

아이템 설명

새로운 디스크립터를 두 번 클릭하여 열면 클래스 속성의 기본 설정이 표시됩니다. 표시되지 않는 경우, 툴바에서 "클래스 기본값" 버튼을 클릭하면 세부 정보 브라우저에 나타납니다.

각 속성을 살펴보고 아이템의 속성을 설정해 보겠습니다. 입력란의 왼쪽에 마우스를 올리면 그 목적을 설명하는 툴팁이 표시됩니다(게임 헤더에서 가져옴).

  • M Display Name

    게임 내 아이템의 이름으로, 툴팁에 표시되며 도감에서 호출됩니다.
    이를 "Doc 아이템"으로 설정하겠습니다.

  • M Description

    아이템에 대한 설명으로, 툴팁과 도감에 표시됩니다.
    우리의 경우 "이것은 Doc 모드의 시작 아이템입니다."라는 텍스트를 사용하겠습니다.

  • M Abbreviated Display Name

    이름의 축약형으로, 5자 이하로 유지하는 것이 좋습니다. 사용자가 '사용자 인터페이스 > 아이템 약어' 게임 설정에서 약어 이름을 활성화하면, 이 텍스트는 아이템 아이콘의 왼쪽 상단 모서리에 흰색으로 검은 윤곽선으로 표시됩니다. 기본 게임에서는 일반적으로 구별하기 어려운 아이템(예: 원석 및 주괴)에 대해서만 설정됩니다.
    이를 비워두거나 "DocI"를 사용할 수 있습니다.

  • M Stack Size

    새티스팩토리는 하드코딩된 아이템 묶음 크기를 가지고 있습니다. 아이템은 1(One), 50(Small), 100(Medium), 200(Big), 500(Huge)개 또는 50,000(Fluid, 50리터)까지 묶을 수 있습니다.
    적절하다고 생각되는 것을 선택해 보십시오.

  • M Can be Discarded

    아이템을 인벤토리의 쓰레기통 슬롯을 사용하여 버릴 수 있는지 여부입니다. A.W.E.S.O.M.E. 싱크 설정은 다른 시스템을 통해 처리됩니다.
    이를 체크 해제하여 아이템을 쓰레기통에 버릴 수 없도록 합니다. FICSIT은 낭비하지 않습니다!

  • M Remember Pick Up

    게임이 플레이어가 이 아이템을 소유한 적이 있는지를 추적할지 결정합니다. 기본 게임에서는 원석과 같은 아이템에 대해 사용되며, 이는 석영 M.A.M. 트리를 잠금 해제하고 수집 시 ADA 음성 대사를 작동합니다.
    이 튜토리얼에서는 해당 기능을 다루지 않으므로 체크하지 않겠습니다.

  • M Energy Value

    이 아이템이 발전기나 차량에서 연소될 때 방출해야 하는 에너지(MWs, 즉 MJ, 메가줄)의 양을 설명합니다. 기본 아이템의 연료 값은 위키에서 확인할 수 있습니다. 아이템이 바이오 연료로 분류되려면 서브클래스로 FGItemDescriptorBiomass 를 사용해야 합니다.
    우리의 Doc 아이템은 연료 아이템이 아니므로 발전기에서 연소될 수 없도록 0.0으로 설정하겠습니다.

  • M Radioactive Decay

    0보다 큰 값으로 설정하면 아이템이 플레이어에게 방사선 피해를 줍니다. 이 입력란의 에디터 툴팁은 잘못되었습니다. 값은 0보다 큰 모든 값이 될 수 있습니다. 예를 들어, 플루토늄 폐기물(기본 게임에서 가장 강력함)은 200을 사용하고, 포장된 우라늄 전지(가장 약함)는 0.5를 사용합니다.
    테스트 중 안전을 위해 이를 0으로 설정하겠습니다

  • M Form

    유효하지 않음, 고체, 액체, 가스, 열 중 이 아이템의 유형을 정의합니다.
    우리의 새로운 아이템은 테스트의 용이성을 위해 고체로 설정하겠습니다.

액체 및 가스 유형 설명자는 특별한 동작을 가지고 있다는 점에 유의하십시오.

아이템이 액체 또는 가스 형태로 정의되면, 1000단위(리터)의 아이템이 1세제곱미터의 유체로 표시되는 형식으로 전환됩니다. 따라서 유체는 묶음 크기를 Fluid 로 설정하여 50세제곱미터까지 쌓을 수 있도록 해야 합니다. 다른 모든 묶음 크기 옵션은 1세제곱미터 미만의 소수량을 초래하여 사용자에게 혼란을 줄 수 있습니다.

  • M Conveyor Mesh

    모든 아이템은 세계에 나타날 때 3차원 표현을 가집니다. 아이템을 바닥에 떨어뜨리거나 컨베이어에 표시될 때 이곳에서 지정한 메쉬를 사용합니다.
    이를 올바르게 렌더링하기 위해 몇 가지 추가 단계가 필요하므로 페이지 아래쪽에서 더 자세히 다룰 것입니다.

  • M Color 1

    파이프에서 유체의 색상을 제어합니다.
    이 아이템은 액체나 가스가 아니므로 이 속성을 변경할 필요가 없습니다.

  • M Color 2

    파이프에서 기체에 의해 사용되는 두 번째 색상을 제어합니다.
    이 아이템은 기체가 아니므로 이 속성을 변경할 필요가 없습니다.

  • M Compatible Item Descriptors

    이 아이템과 관련된 아이템 설명자의 배열으로, 예를 들어 무기가 사용할 수 있는 탄약입니다. 이 아이템의 툴팁에 표시됩니다.
    우리의 Doc 아이템은 이 논리가 필요하지 않으므로 이 목록에 설명자를 추가할 필요가 없습니다.

  • M Small Icon

    인벤토리, 기계 슬롯 등에서 사용될 이미지 텍스처입니다. 일반 아이템의 경우 권장 크기는 64px이며, 빌드 건 아이템의 경우 256px입니다.
    여기 사용할 이미지가 준비되어 있습니다. 콘텐츠 브라우저 창에서 임포트 를 통해 가져올 수 있습니다.

  • M Big Icon

    작은 아이콘과 동일한 개념이지만, 전광판과 같은 장소에 표시하기 위해 더 높은 해상도를 가질 수 있습니다. 일반 아이템의 경우 권장 크기는 256px이며, 빌드 건 아이템의 경우 512px입니다.
    단순성을 위해 이전에 사용한 것과 동일한 이미지를 사용하겠습니다.

자신의 모델을 사용할 때는 아이콘 생성 튜토리얼을 따라 게임 내 아이콘처럼 보이는 아이콘을 반자동으로 렌더링할 수 있습니다.

  • M Category

    아이템을 범주로 그룹화하여 제작법 목록에서 표시되는 위치에 영향을 미칩니다.
    기본 게임에서 제공하는 범주 Cat_Other 로 설정하겠습니다. 범주가 없는 아이템은 특정 GUI에서 이름으로 검색하지 않는 한 표시되지 않습니다.

  • M Sub Categories

    빌드 건에서 사용되는 추가 정렬 범주입니다.
    기본 빈 배열로 두겠습니다.

  • M Quick Switch Group

    빠른 전환 할당 키를 눌렀을 때 다른 건물이 표시되는 것을 제어하는 선택적 참조입니다.
    아이템을 만들고 있으므로 None으로 두겠습니다.

  • M Menu Priority

    범주 내에서 아이템이 표시되는 순서를 제어합니다.
    기본값인 0.0 을 유지하겠습니다.

세계에서의 아이템 외형

계속하기 전에, 컴파일하고 저장하는 것을 잊지 마십시오!

아이템이 컨베이어에 표시되거나 세계에 떨어질 때 기본 평면 흰색 큐브로 표시되지 않도록 하려면 컨베이어 메쉬를 지정해야 합니다.

기존 아이템의 메쉬를 재사용하거나 자신만의 메쉬를 만들 수 있습니다. 이번 튜토리얼의 목적을 위해, 덜 평범한 설정 과정을 보여드리기 위해 맞춤 메쉬를 사용하겠습니다.

예제 모델과 텍스처가 준비되어 있으며, 여기에서 다운로드할 수 있습니다. 메쉬와 텍스처를 가져오는 과정에는 몇 가지 추가 세부 사항이 있습니다.

메쉬 가져오기

먼저, 임포트 를 통해 DocItem 폴더에 메쉬(.fbx 파일)를 가져옵니다. 메쉬만 선택하고, 팝업되는 대화 상자에 주의합니다. 대부분의 기본 설정은 괜찮지만, 머티리얼 섹션으로 스크롤하여 다음을 확인하십시오.

  • '위치 검색’은 All Assets 로 설정

  • '머티리얼 임포트 메서드’는 Do Not Create Material 로 설정

  • '텍스처 임포트’는 체크 해제

이 대화 상자를 마치려면 프롬프트에서 임포트 옵션을 선택합니다.

애셋의 이름을 Coffee Stain의 명명 규칙에 따라 SM_DocItem 으로 변경해야 합니다. SM은 Static Mesh(정적 메쉬)를 의미합니다.

이미지

머티리얼 인스턴스 생성

모델과 함께 텍스처를 가져오지 않기로 선택한 이유는 언리얼의 머티리얼 인스턴스 시스템을 활용하여 게임 성능을 개선하기 위함입니다.

콘텐츠 브라우저에서 우클릭 후 머티리얼 > 머티리얼 인스턴스 를 눌러 고급 애셋을 생성합니다. 이름은 커피 스테인의 명명 규칙에 따라 MI_DocItem 으로 하겠습니다. MI는 머티리얼 인스턴스, MM은 마스터 머티리얼을 의미합니다.

이 새로운 애셋을 열어 세부 정보 패널에서 부모 입력란을 검색하여 MM_FactoryBaked 애셋을 설정합니다. 그 후 애셋을 저장합니다.

이 기본 게임에서 제공하는 마스터 머티리얼은 대규모로 컨베이어 아이템을 렌더링할 때 게임 성능을 저하시키지 않도록 최적화 논리를 포함하고 있습니다. 우리는 기본 그리드 대신 다른 텍스처를 사용할 수 있도록 머티리얼 매개변수에 자신의 텍스처를 연결할 수 있습니다.

아이템 메쉬가 베이크된 머티리얼과 호환되지 않는 동적 속성을 가지고 있다면, 자신만의 마스터 머티리얼을 생성하고 대신 사용할 수 있습니다. 머티리얼 세부 정보에서 '인스턴스 정적 메쉬와 함께 사용’이 체크되어 있는지 확인하십시오. 그렇지 않으면 벨트에서 월드 그리드 머티리얼로 렌더링됩니다.

텍스처 가져오기

이제 이전 다운로드에서 3개의 텍스처를 가져옵니다. 언리얼이 텍스처를 올바르게 처리하도록 해야 하며, 그렇지 않으면 아이템이 게임 내에서 올바르게 보이지 않을 것입니다.

콘텐츠 브라우저로 돌아가서 다운로드한 3개의 이미지 파일을 가져옵니다.

이 이미지는 아마도 여러분이 익숙한 일반 이미지 파일처럼 보이지 않을 것입니다. 그 이유는 각 4개(빨강, 초록, 파랑, 알파) 이미지 색상 채널에 특별한 정보를 저장하기 때문입니다. 이의 작동 방식은 이 튜토리얼의 범위를 벗어나므로, 모델링 섹션에서 더 많은 정보를 찾을 수 있습니다.

가져온 Tex_Doc-Item_MREO 텍스처를 열고, 디테일 패널의 텍스처 범주에서 sRGB 를 체크 해제하고, Compression Settings를 Masks (no sRGB) 로 설정합니다. 이는 각 색상 채널의 특별한 데이터 때문이며, 언리얼이 이를 일반 이미지처럼 처리하지 않도록 하기 위함입니다. 마스터 머티리얼 페이지에서 무슨 일이 일어나고 있는지에 대한 더 많은 세부 정보를 확인할 수 있습니다. 그 후 애셋을 저장합니다.

이미지

텍스처를 머티리얼 인스턴스에 할당

다음으로, 이 텍스처를 머티리얼 인스턴스의 매개변수에 할당해야 합니다.

다시 MI_DocItem 애셋을 열어 디테일 패널에서 "파라미터 그룹" 제목의 "Textures" 하위 섹션을 찾아 이 세 개의 체크박스를 모두 체크하여 값을 재정의할 수 있도록 합니다:

  • Albedo 란에 Tex_Doc-Item_AB 를 선택합니다.

  • Normal 란에 Tex_Doc-Item_N 을 선택합니다.

  • Reflection Map 란에 Tex_Doc-Item_MREO 를 선택합니다.

다음으로, AO 섹션을 찾아 UseAO 상자를 체크합니다.

Emissive 섹션에서 UseEmissive 상자를 체크합니다.

"Global Static Switch Parameter Values" 섹션에서 bUseLegacyPaintTextures 상자를 체크합니다.

미리보기 뷰포트의 오른쪽 하단 모서리에서 평면 아이콘을 클릭하여 구가 아닌 평면에서 재료를 미리 볼 수 있습니다. 모든 작업을 올바르게 수행했다면 아래 이미지가 보여야 합니다. 왼쪽 상단의 뷰포트에 경고가 나타나지 않아야 합니다. 그 후 애셋을 저장합니다.

이미지

이 과정은 언리얼이 수행하는 방식에 매우 표준적이므로, 혼란스러울 경우 표준 언리얼 튜토리얼이 도움이 될 것입니다. 애셋이 만들어진 방식 때문에 머티리얼에 대해 매우 구체적인 설정이 있습니다. 나중에 모델러와 협력하여 애셋을 만들게 된다면, 그들에게 메인 머티리얼 페이지의 링크를 보내면 어떤 변경을 해야 하는지 알 수 있습니다. 필요한 경우 디스코드에서 질문할 수 있습니다. 지금은 위 이미지를 참조하여 설정을 따르십시오.

머티리얼 인스턴스를 메쉬에 할당

이제 머티리얼 인스턴스를 설정했으므로, 메쉬가 이를 사용하도록 지정할 시간입니다.

콘텐츠 브라우저로 돌아가서 SM_DocItem 메쉬를 다시 엽니다. 디테일 패널에서 머티리얼 슬롯 옵션을 찾습니다. 우리의 예제 메쉬에는 슬롯이 하나만 있지만, 다른 메쉬에서는 더 많을 수 있습니다. 슬롯의 MI_DocItem 애셋을 검색하여 설정합니다. 그 후 애셋을 저장합니다.

이미지

맞춤 메쉬를 만들고 설정하는 것은 많은 작업이 될 수 있습니다. 앞으로 생성할 아이템에 대해 맞춤 메쉬를 사용하고 싶지 않다면, 기본 게임 아이템의 무명 메쉬를 재사용하는 것을 고려하십시오. 예를 들어, 허브 부품과 같은 아이템을 사용하여 기본 흰색 큐브로 두지 마십시오.

메쉬를 아이템 디스크립터에 할당

메쉬를 설정했지만, 이제 아이템 디스크립터에게 이 메쉬를 사용하도록 지정해야 합니다.

Desc_DocItem 디스크립터로 돌아가서 M Conveyor Mesh 란의 값을 SM_DocItem 애셋으로 설정합니다. 그 후 애셋을 저장합니다.

아이템을 사용 가능하게 만들기

계속하기 전에, 컴파일하고 저장하는 것을 잊지 마십시오!

이제부터는 컴파일 및 저장을 잊지 말라는 말을 그만하겠지만, 여전히 중요합니다. 절대 까먹지 마십시오!

아이템을 생성했지만, 게임 내에서 얻기 전에 한 가지 더 단계가 필요합니다.

성능 측면에서, 아이템은 일반적으로 다른 무언가가 등록하지 않는 한 새티스팩토리에서 사용할 수 없습니다. 아이템을 제작법에서 사용하도록 하여 이를 해결할 수 있습니다. 편리하게도, 우리는 일반적으로 플레이어가 정상적으로 얻을 수 있도록 아이템을 제작법에서 사용할 계획을 세웠습니다! 이전에 만든 제작법의 생산을 이 새로운 아이템으로 변경하거나, 연습을 원한다면 새로운 제작법을 생성하십시오.

이제 완료되었습니다! 플러그인을 알파킷하여 게임에서 멋진 새 아이템을 확인하십시오. 알파킷 사용 방법에 대한 정보는 프로젝트 설정 페이지에서 확인할 수 있습니다.

문제가 발생하면, 디스코드에서 도움을 요청하십시오.

다음 단계

만들고자 하는 모드의 종류에 따라, 이것이 시작하는 데 필요한 모든 정보일 수 있습니다! 업로드할 준비가 된 모드를 만들면, 모드 출시 지침을 따라 내보내고 다른 사람들이 사용할 수 있도록 업로드해 보십시오.

장식용 건물이나 GUI가 있는 매우 기본적인 기계를 만들고 싶다면, 이 튜토리얼 시리즈를 계속 진행하십시오.