Tài liệu Steamworks
Lớp phủ Steam

Tổng quan

Lớp phủ Steam là một phần của giao diện người dùng trên Steam có thể được kích hoạt trên nền bất cứ trò chơi nào khởi động qua Steam. Nó cho phép người dùng truy cập danh sách bạn bè, trình duyệt web, trò chuyện, và mua sắm DLC trong trò chơi.

Người dùng có thể truy cập vào lớp phủ với tổ hợp nút mặc định SHIFT+TAB trong khi chơi, nhưng có thể thay đổi trong hộp thoại Steam->Thiết lập.

Yêu cầu

Trò chơi của bạn không cần phải làm gì đặc biệt để lớp phủ hoạt động, nó sẽ tự động hook vào bất kì trò chơi khởi động từ Steam! Trong quá trình phát triển và chạy trò chơi của bạn với debugger, lớp phủ sẽ nạp khi nào bạn gọi hàm SteamAPI_Init. Vì thế bạn sẽ cần đảm bảo gọi hàm SteamAPI_Init trước khi khởi động thiết bị OpenGL/D3D, nếu không sẽ không hook vào quá trình tạo thiết bị.

Lớp phủ hỗ trợ các trò chơi có sử dụng DirectX 7 - 12, OpenGL, Metal, và Vulkan. Lớp phủ sẽ không hoạt động với các trò chơi dựng raster bằng phần mềm.

macOS: Tính năng hỗ trợ lớp phủ cho phiên bản 10.15 (Catalina) yêu cầu thêm quyền lợi vào thiết lập bản build. Chi tiết ở trang nền tảng.
LƯU Ý: Lớp phủ tự động bị vô hiệu hóa đối với loại ứng dụng 'Phần mềm'. Nếu cần bật lớp phủ, bạn có thể làm như sau:
  • Hãy đảm bảo tài khoản Steam có quyền Sửa metadata ứng dụng
  • Đi từ trang đáp của ứng dụng tới > Chỉnh sửa thiết lập Steamworks > thẻ Cài đặt > Cài đặt tổng quan
  • Chọn ô Bật lớp phủ Steam cho ứng dụng
  • Xuất cài đặt

Kích hoạt lớp phủ từ ứng dụng

Có một bộ các hàm trong API Steamworks cho phép bạn trực tiếp truy cập để kích hoạt lớp phủ trò chơi.

Giao tiếp từ lớp phủ đến trò chơi

Các tín hiệu sau (callback) được Steam gửi tới trò chơi, dựa vào hành động của người dùng trong lớp phủ:
  • GameOverlayActivated_t
    Xuất khi lớp phủ trò chơi bật hoặc tắt. Trò chơi có thể dùng tín hiệu để tạm ngừng hoặc tiếp tục các trò chơi một người.
  • GameServerChangeRequested_t
    Xuất khi người dùng chọn tham gia phiên chơi của bạn bè, chứa thông tin chi tiết về máy chủ trò chơi.
  • GameLobbyJoinRequested_t
    Xuất khi người dùng chọn tham gia phiên chơi của bạn bè, chứa thông tin chi tiết về phòng chờ.

Hỏi đáp thường gặp

LƯU Ý: Bạn có thể tìm thêm câu trả lời ở trang hỗ trợ khách hàng như chủ đề này: Lớp phủ cộng đồng Steam không bật.

Hỏi: Tại sao lớp phủ Steam làm ứng dụng của tôi bị ngắt đột ngột?

Đáp: Lớp phủ Steam được dùng trong hàng nghìn trò chơi, vì thế nên đã được kiểm nghiệm kỹ lưỡng và ít khi là nguyên nhân gây ngắt đột ngột. Tuy nhiên, cách lớp phủ tích hợp vào trò chơi thường làm lộ rò rỉ bộ nhớ hoặc hỏng bộ nhớ khi sử dụng API dựng hình, nhưng không nhất thiết ảnh hưởng đến quá trình chơi.

Để chẩn đoán nguyên do ngắt đột ngột lớp phủ với DirectX chẳng hạn, ta hãy thử xác định D3D bị hỏng ra sao bằng cách dùng runtime debug D3D và bật tất cả cấp độ nội dung đầu ra (thông tin/cảnh báo/báo lỗi/lưu ý). Cách làm này có thể đưa ra một vài gợi ý cho tài nguyên D3D không còn sử dụng. Nếu không tìm thấy gì theo cách đó, có thể có vấn đề hỏng bộ nhớ tổng quát hơn. Nếu sự cố này luôn xảy ra khi tắt máy, thì có lẽ vấn đề nằm ở lệnh tắt máy khi trò chơi không thoát gọn gàng.

Nếu sau khi debug mà ứng dụng vẫn ngắt đột ngột trong lớp phủ, xin thông báo cho chúng tôi trong nhóm phát triển Steamworks.

Hỏi: Tại sao lớp phủ Steam không xuất hiện trong ứng dụng của tôi?

Đáp: Trước tiên, hãy đảm bảo bạn đáp ứng Yêu cầu trên. Nếu đáp ứng được yêu cầu mà lớp phủ vẫn chưa hiển thị, hãy kiểm tra chắc chắn bạn đang mở ứng dụng thông qua phần mềm Steam, trực tiếp từ danh sách sảnh chờ/danh sách khởi động nhanh, hoặc bằng lệnh call SteamAPI_RestartAppIfNecessary.

Hỏi: Trò chơi của tôi dùng D3D12 trên Windows 7, và lớp phủ Steam không hoạt động. Tại sao?

Đáp: Vui lòng tham khảo tài liệu Microsoft để biết cách thêm lớp phủ Steam vào.