Tài liệu Steamworks
Dịch vụ kho đồ Steam
Dịch vụ kho đồ Steam là bộ các tính năng cho phép trò chơi kích hoạt kho đồ cố định của người chơi mà không phải chạy các máy chủ đặc biệt để quản lý người dùng hay vật phẩm.

Xin để lại góp ý hoặc đặt câu hỏi trên trang thảo luận kho đồ Steam trong nhóm nhà phát triển Steamworks.

Mô tả

Dịch vụ kho đồ có thể dùng được theo hai cách - không cần máy chủ hoặc với một máy chủ tin cậy biết được trạng thái của trò chơi.

Không có máy chủ, client trò chơi có thể giao tiếp trực tiếp với dịch vụ Steam để lấy nội dung từ kho đồ của người dùng, tiêu thụ và trao đổi vật phẩm, và nhận vật phẩm mới được trao theo giờ chơi. Người dùng cũng có thể mua vật phẩm trực tiếp từ cửa hàng vật phẩm, hoặc trao đổi trên chợ cộng đồng Steam.

Tuy nhiên, do không thể tin tưởng client (và key trong một client luôn có thể bị trộm bởi kẻ tấn công) bạn không thể trao cho người dùng các vật phẩm cụ thể theo cách này. Thay vào đó, bạn chọn một số vật phẩm có thể rơi, và điều chỉnh tỉ lệ rơi. Vào thời điểm phù hợp, client trò chơi sẽ kích hoạt ISteamInventory::TriggerItemDrop. Máy chủ Steam quản lý giờ chơi và tỉ lệ rơi cho từng người chơi. Các API này được gọi bằng "Client API Key" nội bộ, được giả định như không thể tin tưởng.

Nếu bạn tham gia vào máy chủ tin cậy thì có thể dùng key Steam API đặc quyền trên máy chủ đó và trao vật phẩm cụ thể trong các tình huống phù hợp. Quan trọng phải nhớ là bạn không thể tin tưởng client của chính mình nên chỉ làm thế này khi máy chủ làm master cho trạng thái của trò chơi.

Cuối cùng, kết hợp với dịch vụ kho đồ, bạn có thể bán một vật phẩm đơn lẻ hoặc cả giỏ hàng, trong trò chơi hoặc qua cửa hàng dựa trên nền tảng web.

Xem bài thuyết trình bên dưới từ Steam Dev Days 2016 để biết tổng quan cách triển khai, chi tiết về các vấn đề cụ thể mà dịch vụ kho đồ có thể xử lý cho nhà phát triển, cũng như cách đối tác đã và đang dùng hệ thống để phục vụ khách hàng.

https://www.youtube.com/watch?v=jDfhPTSOLis

Tổng quan về cách triển khai

  1. Tạo định nghĩa vật phẩm
    Bạn sẽ cần bắt đầu bằng cách tạo và tải lên một số định nghĩa vật phẩm (ItemDefs).
    Mô tả cho bộ vật phẩm có thể xuất hiện trong trò chơi. Bạn không cần dùng các định nghĩa trong trò chơi nhưng Steam cần dữ liệu này để hiện chính xác kho đồ. Để tạo ItemDefs, đến mục kho đồ Steam trong thiết lập Steamworks của bạn. Dùng liên kết này để đến: https://partner.steamgames.com/apps/inventoryservice/
  2. Bật dịch vụ kho đồ
    Khi đã có định nghĩa vật phẩm, bật dịch vụ kho đồ bằng cách đánh dấu "Bật dịch vụ kho đồ" trên trang bạn tải lên định nghĩa vật phẩm. Lưu ý rằng nếu độ hiển thị của vật phẩm là riêng tư trong thiết lập hệ thống kinh tế Steam, chỉ có các tài khoản trong nhóm đối tác Steamworks của bạn mới có thể truy cập vật phẩm trong trò chơi.
  3. Đặt Asset Server Key
    Đầu tiên tạo một key API Publisher Web API cho ứng dụng của bạn (hướng dẫn: Tạo khóa API Web nhà phát hành) và đặt nó vào trường Asset Server Key (Mã máy chủ tài nguyên) trong thiết lập hệ thống kinh tế Steam.
  4. Tải về kho đồ người dùng
    Cho client trò chơi của bạn tải về kho đồ của người dùng bằng cách gọi ISteamInventory::GetAllItems.
    Nên thường xuyên gọi trong trường hợp người dùng đã thêm vật phẩm qua việc trao đổi hoặc mua vào.
    Tùy vào trò chơi của bạn, kiểm tra vào đầu mỗi trận đấu hoặc màn chơi có thể phù hợp.
  5. Trao vật phẩm thử nghiệm
    Dùng ISteamInventory::GenerateItems để thêm các vật phẩm cụ thể vào tài khoản của người chơi hiện tại với mục đích phát triển.
  6. Cho người dùng đồ rơi dựa theo thời gian chơi (không bắt buộc)
    Vào thời điểm phù hợp (thông thường vào cuối trận đấu/giai đoạn) gọi ISteamInventory::TriggerItemDrop để xem người dùng có nhận được đồ rơi mới hay không.
  7. Bán vật phẩm (không bắt buộc)
    Định nghĩa giá trong itemdef để thêm hỗ trợ cho giao dịch phụ. Sau đó bạn có thể cho mọi người mua chúng theo nhiều cách khác nhau:

API

Tìm tài liệu API kho đồ Steam tại đây: ISteamInventory

API web

Tài liệu API Web cho kho đồ Steam hiện có tại đây: IInventoryService

Hàm web

Đây là các trang web đã được sắp xếp để bạn chuyển hướng người dùng tới:
  • ItemCart - Được dùng để gửi một giỏ đầy hàng để mua qua Steam.
  • BuyItem - Có thể dùng để mua một vật phẩm đơn lẻ qua Steam.