DLC(다운로드할 수 있는 컨텐츠) 및 기타 추가 사항

특정 시점에서 기본 설치 외에 온라인 스토어를 통해 가져오는 DLC(다운로드할 수 있는 컨텐츠)와 같은 추가 컨텐츠로 게임을 향상하길 원할 수 있습니다. Stingray에서는 패치를 제공해 기존 게임 컨텐츠를 업데이트하는 방식과 매우 유사하게 이 작업을 할 수 있습니다.

Stingray에서는 DLC와 일반 게임 컨텐츠 간의 원칙에 차이가 없습니다. 표준 Stingray 도구를 사용하여 DLC용 새 컨텐츠를 구축한 다음 새 패키지로 정리하고, 이러한 패키지를 번들로 컴파일합니다. 이러한 번들을 사용자들에게 게임 패치로 배포하면 기존 게임 데이터 번들과 함께 새 번들이 설치됩니다.

패치를 설치하는 모든 사용자가 번들 데이터를 받게 되지만 게임 배포자는 일반적으로 자격을 구매한 인증 사용자만 데이터를 사용할 수 있도록 만들길 원합니다. 대개 아래에 나온 Lua 게임플레이 코드에서 이 작업을 하게 됩니다.

따라서 사용자가 온라인 서비스로부터 DLC를 구매하면 자산 스토어에서 사용자는 일반적으로 전체 DLC 컨텐츠가 아니라 게임플레이 코드에서 패치에 설치된 DLC 컨텐츠를 플레이어에게 표시할지 여부를 결정하는 데 사용하는 계정 설정이나 자격을 받게 됩니다.

패치 시스템에 대한 배경 정보는 게임 패치도 참조하십시오.

단계 1: DLC 컨텐츠 생성

DLC용 컨텐츠를 생성하려면 유닛, 수준, 스크립트 등의 새 컨텐츠를 생성할 때처럼 Stingray 도구에서 작업합니다. 이 새 컨텐츠를 생성하는 하나 이상의 .package 리소스에 넣습니다. 자세한 내용은 리소스 패키지 정의를 참조하십시오.

단계 2: 게임플레이 코드 업데이트

DLC 패키지는 다른 모든 리소스 패키지와 같으므로 동일한 방법으로 게임에 로드할 수 있습니다. 예:

local dlc = stingray.Application.resource_package("packages/test_dlc")
stingray.ResourcePackage.load(dlc)
stingray.ResourcePackage.flush(dlc)

패키지 로드 및 언로드도 참조하십시오.

하지만 일반적으로 먼저 컨텐츠 액세스를 위한 플레이어의 인증을 확인해야 합니다. 예를 들어, 이 코드는 플레이어가 지정된 ID로 앱을 Steam에서 구매하고 설치했는지 여부를 확인합니다.

if stingray.Steam.is_installed(test_dlc_app_id)
    local dlc = stingray.Application.resource_package("packages/test_dlc")
    stingray.ResourcePackage.load(dlc)
    ...
end

단계 3: 패치 생성 및 배포

일단 DLC 패키지를 포함하여 게임 프로젝트를 빌드하고 번들링하면 새 게임 패치를 생성해야 합니다. 이 새 패치에는 추가된 컨텐츠를 위해 생성한 각 새 패키지에 대한 패치 번들이 포함됩니다.

새 DLC를 지원하도록 다른 패키지의 게임플레이 리소스를 업데이트해야 하는 경우 이 패치는 기타 기존 컨텐츠 패키지의 패치 번들이 하나 이상 연관될 수도 있습니다. 예를 들어 새 스크립트 호출을 추가해 위에서처럼 DLC 패키지를 로드 및 언로드해야 하는 경우가 있습니다.

게임의 패치 생성 방법에 대한 자세한 내용은 게임 패치를 참조하십시오.

비번들 모드에서 DLC 번들 사용

컴파일되었지만 번들링되지 않은 데이터로부터 게임을 실행하는 경우 다음과 같은 오류가 생길 수 있습니다.

Package not loaded: packages/test_dlc

비번들 모드에서 실행하려면 boot.package 파일에 새 DLC 패키지에 대한 참조를 추가해야 합니다. 자세한 내용은 런타임 시 컨텐츠 로드 및 언로드를 참조하십시오.