DLC 컨텐츠의 데이터베이스 생성

Stingray는 게임에 대해 생성하고 설치하는 DLC 번들을 추적 및 식별하는 데 사용할 수 있는 선택적 메커니즘을 제공합니다. DLC 패키지를 생성할 때 이 시스템을 사용하면 런타임 Lua 스크립트가 현재 게임에 설치된 모든 DLC 번들에 대한 정보를 검색할 수 있습니다.

이는 DLC 모듈에 대한 정보를 게임플레이 스크립트에 하드 코딩하지 않으려는 경우 유용합니다. 이렇게 하면 새로 다운로드 가능한 컨텐츠를 추가할 때마다 메인 게임 코드를 패치할 필요가 없습니다.

이 시스템은 게임 패치DLC(다운로드할 수 있는 컨텐츠) 및 기타 추가 사항에 설명된 기본 패칭 및 DLC 시스템에 빌드합니다. 아래 단계를 시작하기 전에 이러한 항목에 설명된 기본 프로세스를 이해하기 바랍니다.

단계 1: .dlc 리소스 생성

DLC 모듈에 생성하는 각 .package 리소스에 대해 프로젝트 소스 디렉토리의 어딘가에 .dlc 리소스를 생성합니다. 이 파일이 모듈에 대한 정보를 포함하는 SJSON 리소스입니다.

예:

name = "Continuing Adventures"
package = "packages/continuing_adventures"

게임 프로젝트를 빌드할 때 .dlc 리소스는 dlc 하위 폴더의 별도 번들에 쓰여집니다.

단계 2: Lua의 DLC 정보에 액세스

stingray.DLC 오브젝트에 의해 노출되는 함수를 사용하여 게임 데이터 폴더의 DLC 데이터를 스캔합니다. 예:

-- start scanning the game data for DLC information...
stingray.DLC.scan_for_dlc()
...

-- when the scan has completed...
-- (note that this may not be in the same frame the scan was launched.)
if stingray.DLC.scan_done() then
    -- get the information found by the scan...
    local res = stingray.DLC.scan_result()
    for _,entry in ipairs(res) do
        local name = entry.name
        local package = entry.package
        ...
        -- evaluate whether any of the packages need to be loaded.
        -- if a package needs to be loaded, pass its package value in
        -- a call to stingray.Application.resource_package() and load
        -- the package.패키지 로드 및 언로드도 참조하십시오.
    end
end

DLC.scan_result() 함수는 테이블 목록을 반환하고 각 테이블에는 설정한 .dlc 리소스 중 하나에 기록된 이름 및 패키지가 포함됩니다.

단계 3: DLC 번들을 패치에 추가

새 DLC 컨텐츠 번들을 포함하도록 패치를 만드는 경우 새 .dlc 리소스 파일에 해당하는 DLC 구성 번들도 포함시켜야 합니다. 이 번들은 dlc 디렉토리에 있습니다.

DLC 디렉터리에 이미 하나 이상의 다른 번들이 있으며 패치에 어떤 것을 포함해야 하는지 확실하지 않은 경우 ID Lookup 도구를 사용하여 어떤 번들이 리소스에 해당하는지를 확인할 수 있습니다. 컴파일된 리소스 이름 정보를 참조하십시오.

또는 Stingray 엔진 Deployer를 통해 게임을 번들링했다면 Compiler Server 창의 출력을 통해 조회하여 .dlc 리소스에 할당할 이름을 찾을 수 있습니다.

DLC당 여러 패키지 사용

.dlc 리소스 파일은 하나의 패키지 리소스만 등록할 수 있습니다. 단일 DLC 모듈의 컨텐츠를 여러 번들에 거쳐 나누려면 다음 중 하나의 방법을 사용할 수 있습니다.