패키지, 패치, 모드 내보내기

사용 사례

때때로 게임을 배포한 후에 기능을 추가하고 싶습니다.

이런 예시로는...

  • 다운로드 가능한 콘텐츠(DLC): 자신의 게임에 기능과 콘텐츠를 추가하는 기능.
  • 패치: 배포된 제품에 존재하는 버그를 고치는 기능.
  • 모드: 다른 사람들에게 게임의 콘텐츠를 만드는 기능을 허가함.

이 도구는 개발자가 초기 출시 단계를 넘어 확장하는 것을 도와줍니다.

PCK 파일의 개요

Godot는 리소스 팩이라는 기능을 통해 이를 허용합니다 (.pck 확장자명을 가진 PCK 파일).

이점:

  • 증가하는 업데이트/패치
  • DLC 제공
  • 모드 지원 제공
  • 모드에 필요한 소스 코드 공개 없음
  • 더 많은 모듈형 프로젝트 구조
  • 사용자는 게임 전체를 교체할 필요가 없음

파일을 사용하는 첫번째는 프로젝트를 내보내고 플레이어에게 전달하는 것입니다. 그 뒤, 나중에 기능이나 콘텐츠를 추가하려 한다면, 단지 PCK 파일을 통해 사용자에게 업데이트를 전달하면 됩니다.

PCK 파일은 보통 다음을 포함하지만, 제한은 없습니다:

  • 스크립트
  • 셰이더
  • 모델
  • 텍스처
  • 음향 효과
  • 음악
  • 게임으로 가져오기 적당한 다른 애셋

PCK 파일은 원래 게임이 런타임에 불러오는 완전히 다른 Godot 프로젝트가 될 수도 있습니다.

PCK 파일 생성하기

프로젝트의 모든 리소스를 하나의 PCK 파일에 포장하기(pack) 위해선 프로젝트를 열고 프로젝트/내보내기로 가고 “PCK/Zip 내보내기”를 클릭합니다. 또한 내보내기 템플릿이 선택되어 있는지 확인해야 합니다.

../../../_images/export_pck.png

다른 방법은 명령줄에서 내보내기가 있습니다. 출력 파일은 PCK나 ZIP 파일 확장자명으로 끝나고, 그 뒤 내보내기 처리는 선택한 플랫폼에 맞는 타입의 파일로 빌드할 것입니다.

주석

누군가는 게임에 모드를 지원하고 싶을 것이고, 그러려면 사용자는 내보낸 파일과 비슷한 파일을 만들어야 합니다. 기존 게임이 PCK의 리소스를 위한 특정 구조를, 그리고/또는 스크립트를 위한 특정 인터페이스를 예상한다고 가정한다면...

  1. 개발자는 예상되는 구조/ 인터페이스의 문서를 공개해야 하며, 모드 제작자들이 Godot 엔진을 설치한다고 생각해야 합니다, 그리고 모드 제작자들도 게임의 모드 콘텐츠를 제작할 때 문서에 정의된 API를 준수할 것입니다 (따라서 잘 될 것입니다). 그런 다음 사용자는 Godot에 내장된 내보내기 도구로 위와 같은 PCK 파일을 만듭니다.
  2. 개발자는 Godot로 정확한 API 콘텐츠를 프로젝트에 추가하기 위한 GUI 도구를 빌드합니다. Godot 도구는 도구를 쓰는 엔진의 빌드에서 실행되거나 엔진 또는 게임 파일에 액세스할 수 있어야 합니다. 그런 다음 도구는 Godot 실행 파일을 사용하여 명령행에서 OS.execute()로 PCK 파일을 내보냅니다. (보안을 위해) 게임에는 도구 빌드를 사용하지 않으면서 모딩 도구에는 도구 사용 엔진 빌드를 사용하는 것으로 이해하면 됩니다.

런타임에 PCK 파일 열기

PCK 파일을 가져오기 위해, 한마디만 하겠습니다. 가져오기가 실패한다면 오류나 예외 사항은 없습니다. 대신 확인할 수 있는 코드를 만들어야 할 것입니다. 다음 예제는 게임 디렉토리에 “mod.pck”으로 보이는 파일을 실행하는 것입니다. PCK 파일은 루트에 “mod_scene.tscn”라는 테스트 씬을 갖고 있습니다.

func _your_function():
    ProjectSettings.load_resource_pack("res://mod.pck")
    # Now one can use the assets as if they had them in the project from the start
    var imported_scene = load("res://mod_scene.tscn")
private void YourFunction()
{
    ProjectSettings.LoadResourcePack("res://mod.pck");
    // Now one can use the assets as if they had them in the project from the start
    var importedScene = (PackedScene)ResourceLoader.Load("res://mod_scene.tscn");
}

경고

이미 동일한 파일 경로/이름을 가진 파일을 가진 프로젝트로 파일을 가져온다면, 가져온 것으로 바꿀 것입니다. 이는 DLC나 모드를 만들 때 주의해야 하는 점입니다 (모드를 특정 모드 하위 폴더로 분리하는 도구로 쉽게 해결됩니다). 하지만, 이것 또한 게임의 패치를 만드는 방식이기도 합니다. 이런 종류의 PCK 파일은 이전에 불러온 PCK 파일의 콘텐츠를 고칠 수 있습니다.

요약

이 튜토리얼에서는 게임에 모드, 패치 또는 DLC를 추가하기가 얼마나 쉬운 지에 대해 설명합니다. 가장 중요한 것은 게임의 미래 콘텐츠를 배포하기 위해 어떻게 계획을 짜고 이를 위해 어떻게 워크플로를 개발하는 것입니다. Godot는 개발자가 추구하는 방향에 관계없이 작업을 부드럽게 만들어줍니다.