Trò chơi
Mô-đun trò chơi cung cấp các chức năng liên quan đến trò chơi. Sau khi đọc phần liên quan đến động cơ trò chơi của bạn trên trang Giới thiệu JOGOS_SDK, bạn có thể sử dụng các chức năng liên quan như sau:
window.JOGOS_SDK.game;Nếu bạn cần hoàn thành các thao tác cấu hình như điều chỉnh ngôn ngữ bản địa hóa, điều chỉnh thiết bị và hiệu chuẩn thời gian trong giai đoạn khởi tạo, bạn có thể chuyển đến trang liên quan Khởi tạo (SysInfo) để xem định nghĩa tham số chi tiết và phương pháp cấu hình.
Tạm dừng / Tiếp tục trò chơi
Khi trò chơi bị gián đoạn (kết thúc màn chơi, tạm dừng trò chơi, v.v.), bạn phải gọi phương thức tạm dừng trò chơi để thông báo cho chúng tôi rằng trò chơi đã bị tạm dừng. Đừng quên gọi phương thức tiếp tục trò chơi để thông báo cho chúng tôi rằng trò chơi đã tiếp tục khi trò chơi được khôi phục hoặc tiếp tục (khôi phục, hồi sinh, vào màn tiếp theo, v.v.). SDK sẽ tự động xử lý việc tạm dừng và tiếp tục khi phát quảng cáo, không cần gọi lặp lại.
// Thông báo cho chúng tôi rằng trò chơi đã bị tạm dừng
await window.JOGOS_SDK.game.pause();
// Thông báo cho chúng tôi rằng trò chơi đã tiếp tục sau tạm dừng
await window.JOGOS_SDK.game.continuePlay();Bắt đầu / Kết thúc tải trò chơi
Khi trò chơi của bạn bắt đầu tải, bạn phải gọi phương thức bắt đầu tải để thông báo cho chúng tôi rằng trò chơi bắt đầu tải. Sau khi tải hoàn tất, đừng quên gọi phương thức kết thúc tải để thông báo cho chúng tôi rằng trò chơi đã tải xong.
// Thông báo cho chúng tôi rằng trò chơi bắt đầu tải
await window.JOGOS_SDK.game.loadingStart();
// Thông báo cho chúng tôi rằng trò chơi đã tải xong
await window.JOGOS_SDK.game.loadingEnd();Khi trò chơi bắt đầu tải, bạn phải gọi phương thức bắt đầu tải để thông báo cho chúng tôi rằng trò chơi bắt đầu tải. Sau khi tải hoàn tất, bạn phải gọi phương thức kết thúc tải để thông báo cho chúng tôi rằng trò chơi đã tải xong.
// Thông báo cho chúng tôi rằng trò chơi đã bị tạm dừng
await window.JOGOS_SDK.game.pause();
// Thông báo cho chúng tôi rằng trò chơi đã tiếp tục
await window.JOGOS_SDK.game.continuePlay();Thời gian vui vẻ
Bạn có thể gọi phương thức này khi người chơi đạt được một thành tựu nào đó (đánh bại Boss, đạt điểm cao, v.v.). Sau khi gọi phương thức này thành công, sẽ kích hoạt hành động 庆祝 trên trang web (ví dụ: phóng một số mảnh giấy màu). Không cần gọi phương thức này khi hoàn thành màn chơi hoặc nhận được phần thưởng.
// Kích hoạt thời gian vui vẻ trong trò chơi
await window.JOGOS_SDK.game.happytime();Tính năng Bạn bè và Trò chuyện
Chúng tôi đã tích hợp mô-đun chức năng xã hội chuẩn hóa, bao gồm quản lý quan hệ bạn bè và dịch vụ trò chuyện thời gian thực. Nếu trò chơi của bạn hỗ trợ lối chơi tương tác nhiều người, bạn có thể kết nối nhanh chóng thông qua API nhẹ để thực hiện: đồng bộ hóa danh sách bạn bè trên đám mây, mời thành lập đội một cú nhấp, hội thoại riêng tư và các tình huống xã hội cốt lõi khác. Hỗ trợ nhà phát triển xây dựng hệ sinh thái xã hội nhập vai trong trò chơi một cách hiệu quả với chi phí phát triển cực thấp.
- Khi sử dụng, nhà phát triển cần truyền UserId tương ứng của người chơi ở phía nền tảng làm tham số.
Kiểm tra quan hệ bạn bè
Kiểm tra xem người chơi được chỉ định có phải là bạn của người dùng hiện tại hay không.
/**
* Kiểm tra người chơi được chỉ định có phải là bạn của tôi không
* @param {Array<number>} userIds Tập hợp ID người chơi
* @returns {Promise<Object>} { [userId: number]: boolean } Đối tượng cặp khóa-giá trị
*/
window.JOGOS_SDK.game.isMyFriends = async function(userIds) {
// Triển khai nội bộ
}Giải thích logic tương tác bạn bè
Nhà phát triển cần tự triển khai logic hiển thị nút dựa trên mối quan hệ bạn bè:
- Xác định trạng thái nút: Sử dụng giao diện
isMyFriendsđể kiểm tra xem người chơi được chỉ định có phải là bạn hay không. - Logic hiển thị nút:
- Nếu là bạn: Hiển thị nút "Conversation", sau khi nhấp sẽ gọi
openChatDialogđể bắt đầu trò chuyện. - Nếu không phải bạn: Hiển thị nút "Add Friend", sau khi nhấp sẽ gọi
sendFriendRequestđể gửi yêu cầu kết bạn.
- Nếu là bạn: Hiển thị nút "Conversation", sau khi nhấp sẽ gọi
- Triển khai nút: Kiểu giao diện người dùng (UI), vị trí và hiệu ứng tương tác của nút đều do nhà phát triển trò chơi tự triển khai.
Mã ví dụ
// Ví dụ triển khai nút tương tác bạn bè
async function setupFriendButton(userId, buttonElement) {
try {
// 1. Kiểm tra mối quan hệ bạn bè
const friendStatus = await window.JOGOS_SDK.game.isMyFriends([userId]);
const isFriend = friendStatus[userId];
// 2. Thiết lập nút dựa trên mối quan hệ bạn bè
if (isFriend) {
// Hiển thị nút trò chuyện
buttonElement.textContent = "Conversation";
buttonElement.onclick = async () => {
const success = await window.JOGOS_SDK.game.openChatDialog(userId);
if (!success) {
alert("Không thể mở cửa sổ trò chuyện, vui lòng đảm bảo đang trong môi trường nền tảng chính thức");
}
};
} else {
// Hiển thị nút thêm bạn
buttonElement.textContent = "Add Friend";
buttonElement.onclick = async () => {
const success = await window.JOGOS_SDK.game.sendFriendRequest(userId);
if (success) {
alert("Yêu cầu kết bạn đã được gửi");
} else {
alert("Gửi yêu cầu kết bạn thất bại");
}
};
}
// 3. Thêm logic chống nhấp quá thường xuyên
let lastClickTime = 0;
const originalClick = buttonElement.onclick;
buttonElement.onclick = function() {
const now = Date.now();
if (now - lastClickTime < 3000) {
console.log("Nhấp quá thường xuyên, vui lòng thử lại sau");
return;
}
lastClickTime = now;
originalClick.call(this);
};
} catch (error) {
console.error("Thiết lập nút bạn bè thất bại:", error);
}
}Thêm bạn bè
Gửi yêu cầu kết bạn đến người chơi được chỉ định.
/**
* Gửi yêu cầu kết bạn đến người chơi được chỉ định
* @param {number} userId ID người chơi mục tiêu
* @returns {Promise<boolean>} Gửi thành công hay không
*/
window.JOGOS_SDK.game.sendFriendRequest = async function(userId) {
// Triển khai nội bộ
}Bắt đầu trò chuyện
Mở cửa sổ trò chuyện với bạn bè được chỉ định.
/**
* Mở cửa sổ trò chuyện với người chơi được chỉ định
* @param {number} userId ID người chơi mục tiêu
* @returns {Promise<boolean>} Mở thành công hay không
*/
window.JOGOS_SDK.game.openChatDialog = async function(userId) {
// Triển khai nội bộ
}Xử lý ranh giới:
- Khi nhúng vào nền tảng không chính thức, trả về thất bại và hiển thị thông báo: "Chức năng trò chuyện bạn bè chỉ được cung cấp trên nền tảng chính thức".
- Nút không thể nhấp lại trong vòng 3 giây sau khi nhấp.
Giao diện khởi tạo sẽ trả về tham số trường lời mời
- Giao diện khởi tạo trò chơi đã thêm các tham số tùy chỉnh để mời tham gia trò chơi, chẳng hạn như ID phòng, mã mời, v.v. Nhà phát triển có thể mang theo các tham số này khi chia sẻ liên kết mời. Khi người chơi được mời vào trò chơi thông qua liên kết, SDK sẽ chuyển các tham số cho nhà phát triển để kéo người chơi vào phòng tương ứng.
// Truyền tham số phòng khi khởi tạo trò chơi (ví dụ)
const gameConfig = {
inviteArgs: 'ABC123', // Trường tùy chỉnh (ví dụ: mã mời/ID phòng)
// Các cấu hình trò chơi khác...
};
// Truyền tham số khi khởi tạo SDK
window.JOGOS_SDK.init({
gameId: 'your_game_id',
customParams: JSON.stringify(gameConfig)
});Mở cửa sổ mời bạn bè
- Khi người dùng đang ở vị trí có thể tham gia trò chơi mới trong trò chơi, tính năng này hỗ trợ bạn đặt nút "Chia sẻ lời mời" trong cảnh trò chơi:
- Nhấp vào nút có thể mở một cửa sổ bật lên chứa liên kết mời, hỗ trợ chọn bạn bè để gửi lời mời.

- Liên kết mời sẽ mang theo các tham số tùy chỉnh (chẳng hạn như ID phòng/mã mời, v.v.). Khi người chơi được mời nhấp vào liên kết để vào trò chơi, nhà phát triển có thể phân tích cú pháp các tham số và kéo người chơi vào phòng tương ứng.
- Nhấp vào nút "Invite friend" trong cảnh trò chơi để mở thanh danh sách bạn bè ở cạnh bên, gửi tin nhắn mời cho bạn bè, hỗ trợ tham gia trò chơi qua liên kết hoặc mời trực tiếp.
/**
* Mở cửa sổ lời mời
* @param {Object} inviteArgs Đối tượng tham số lời mời
* @param {string} inviteArgs.inviteArgs Tham số lời mời tùy chỉnh (bắt buộc, ví dụ: ID phòng hoặc mã mời)
* @param {string} [inviteArgs.customData] Dữ liệu tùy chỉnh (sẽ được chuyển tiếp cho người được mời)
* @param {number} [inviteArgs.expireTime] Dấu thời gian hết hạn của liên kết mời (mili giây)
*/
window.JOGOS_SDK.game.openInviteDialog = function(inviteArgs) {
// Xác thực tham số
if (!inviteArgs || !inviteArgs.inviteArgs) {
throw new Error('Missing required parameter: inviteArgs');
}
// Triển khai nội bộ:
// 1. Tạo liên kết mời với tham số
// 2. Mở cửa sổ bật lên lời mời (bao gồm danh sách bạn bè và tùy chọn chia sẻ)
// 3. Xử lý gọi lại kết quả lời mời
};