Game Studio
Liên kế mạng xã hội

Game Studio


Hướng dẫn sử dụng Apple “on-demand resources” plugin

Corona Labs vừa vui mừng thông báo rằng họ đã ra mắt on-demand resources (ODR) plugin để hỗ trợ cho các ứng dụng tvOS của Apple TV mới. Cũng giống như khái niệm về các các tập tin mở rộng trên Android (nhưng chức năng hoàn toàn khác nhau), ODR cho phép bạn chỉ định những bộ phận/asset của ứng dụng mà có thể được download khi cần thiết. Điều này đặc biệt quan trọng đối với Apple TV bởi vì Apple đã giới hạn kích thước tối đa của ứng dụng tvOS là 200 MB và họ không cung cấp bộ nhớ cục bộ để lưu trữ dữ liệu. Thay vào đó, họ muốn các nhà phát triển sử dụng ODR để quản lý các assets.
 
Thiết lập
Giống như bất kỳ plugin nào khác bạn sử dụng, bắt đầu bằng các bao gồm nó trong build.settings của project:
settings =
{
    plugins =
    {
        ["plugin.onDemandResources"] =
        {
            publisherId = "com.coronalabs",
            supportedPlatforms = { tvos=true }
        },
    },    
}
 
Xác định các resources
Để ODR có thể hoạt động, bạn phải chỉ định các tập tin hoặc các thư mục khác bằng các “tags” bên trong tvos → bảng onDemandResources của build.settings. Mỗi một mục là một bảng chứa 2 cặp key-value bắt buộc: tên thẻ (tag) và các tập tin/thư mục nó đề cập đến (resource):
settings =
{
    tvos =
    {
        onDemandResources =
        {
            { tag="introMusic", resource="intro.mp4", type="prefetch" },
            { tag="imgTutorial", resource="img/tutorial", type="install" },
            { tag="imgL2", resource="img/level2" },
        },
    },
}
 
Ngoài ra, bạn có thể chỉ định một mức độ ưu tiên download cho mỗi thẻ. Điều này được thực hiện thông qua type key với một trong các giá trị sau:
  • "install" - Sử dụng cho các tập tin quan trọng mà bắt buộc phải có khi ứng dụng khởi chạy. Những resources này được download cùng lúc với ứng dụng, tuy nhiên chúng không đi kèm trong gói ứng dụng như các resources khác.
  • "prefetch" - Những resources này sẽ bắt đầu được download trong nền sau khi ứng dụng hoàn tất việc download.
  • Không có type - Đây là những resources bạn lấy khi bạn cần chúng.
Bất kể giá trị của type là gì, bạn cần request rõ ràng các tag trước khi bạn có thể sử dụng nó.
 
Requesting nội dung
Để download một tập tin/thư mục resource khi cần thiết, ví dụ đối với assets cho level 2 sau khi người chơi hoàn thành level đầu tiên, chỉ cần gọi hàm onDemandResources.request(). Điều này có thể được coi là chức năng "cốt lõi" của plugin, vì nó là bắt buộc trước khi bạn có thể truy cập vào ODR.
-- Require the plugin
local odr = require( "plugin.onDemandResources" )

-- On-demand resources listener function
local function odrListener( event )

if not ( event.isError ) then
print( "Resources for tag '" .. event.tag .. "' downloaded" )
else
print( "ERROR: errorCode = " .. tostring(event.errorCode) )
end
end

-- Request image resources cho level 2
odr.request( "imgL2", true, odrListener )
Một trong những khía cạnh quan trọng nhất của on onDemandResources.request() là tham số thứ 2: một giá trị boolean là true hoặc false. Thiết lập true (hoặc bỏ qua nó, vì true là mặc định) để nói cho Corona bắt đầu download các resources ngay lập tức.
 
Nếu bạn thiết lập tham số này là flase, Corona chỉ đơn giản là kiểm tra nếu như các resources này đã được download:
 
Ghi chú quan trọng
  • Tất cả ODR có thể bị loại bỏ bởi hệ điều hành nếu nó cần không gian, vì vậy dù resources của bạn là install hay prefetch, chúng cần phải được kiểm tra tính khả dụng trước khi bạn cố gắng sử dụng chúng. Nếu chúng không tồn tại, bạn sẽ cần phải request/download chúng một lần nữa.
    • Download một resources lớn rất mất thời gian, vì vậy bạn có thể xem xét thêm nhiều tag với kích thước tổng thể nhỏ hơn. Apple khuyến nghị giữ resources được tag dưới 64 MB. Kích thước tối đa cho một tag là 512 MB.
  • Bạn phải sử dụng một dịch vụ như TestFlight của Apple để test ODR. Bởi đây là cách thức duy nhất để Apple có thể cung cấp các resources từ các server của họ.
Kết luận
ODR có thể là cần thiết để phát triển trò chơi và các ứng dụng tvOS, và plugin Corona của cung cấp các giao diện cần thiết cho các máy chủ của Apple. Để tìm hiểu thêm, vui lòng xem tài liệu tại đây.
Xem thêm:

Apple

plugin