PlayDrop logoPlayDrop Studio
TạoTrao đổi lượt chơiKiếmHọcConnectorTài nguyênCộng đồngHỗ trợ
PlayDrop logoPlayDrop Studio
TạoTrao đổi lượt chơiKiếmHọcConnectorTài nguyênCộng đồngHỗ trợ
Đăng nhập
Máy chủ game thời gian thực
Tài liệu

Bắt đầu tại đây

Tổng quanGame đầu tiên của bạnGame PlayDropFAQ

Tạo với Cloud

Tạo với CloudGói & lượt tạo

Kết nối ứng dụng AI của bạn

Tất cả connectorClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Xuất bản và chia sẻ

Xuất bản từ ứng dụng AIGame HTML đơn giảnĐóng gói và .playXuất bản và nhậpTệp gameChế độ hiển thị và tiếp cậnHình ảnh và video giới thiệuThể loại và thẻBản địa hóaGame Instant

Trải nghiệm chơi game

Tải, tạm dừng và âm thanhToàn màn hình và vùng an toànLưu đám mâyNhóm chơi cục bộ và tay cầm

Chơi cùng nhau

Chia sẻ, bạn bè và lời mờiBảng xếp hạngThành tíchNhóm chơi trực tuyến và thoạiMáy chủ game thời gian thực

Kiếm tiền

Kiếm tiềnCredit & phần thưởng

Tài nguyên

Tài nguyên gameTạo tài nguyên bằng AIĐịnh dạng tùy chỉnh và sáng tạo của người chơi

Tài liệu tham khảo

SDK clientSDK servercatalogue.jsonLỗi và cách khôi phụcKhắc phục sự cố
Tài liệuMáy chủ game thời gian thực
Chơi cùng nhau

Máy chủ game thời gian thực trên PlayDrop: Colyseus và MongoDB

Chạy máy chủ Colyseus 0.17 được lưu trữ kèm cơ sở dữ liệu MongoDB cho game, kết nối từ trình duyệt bằng SDK, thử với hai người chơi và nắm rõ giới hạn.

PlayDrop có thể lưu trữ phần máy chủ của game bạn: một máy chủ Colyseus chuẩn với cơ sở dữ liệu MongoDB riêng, người chơi đã được xác minh và không có hạ tầng nào bạn phải vận hành. Hãy dùng nó cho các trận đấu thời gian thực, game theo lượt, thế giới dùng chung và mọi thứ mà người chơi không được phép gian lận. Máy chủ là tùy chọn; game của bạn cũng có thể gọi một máy chủ do bạn tự lưu trữ.

Viết máy chủ

Export một đối tượng ánh xạ rooms từ một module ES. PlayDrop khởi động máy chủ; đừng gọi listen() hay định nghĩa onAuth, vì PlayDrop xác minh từng người chơi trước onJoin.

js
import { Room, defineRoom } from "colyseus";
import { MongoClient } from "mongodb";

class GameRoom extends Room {
  maxClients = 8;
  async onCreate() {
    this.mongo = new MongoClient(process.env.PLAYDROP_MONGO_URL);
    await this.mongo.connect();
    this.onMessage("move", (client, move) => this.applyMove(client.auth.userId, move));
  }
  onJoin(client) {
    // client.auth is the verified PlayDrop player: userId, username, appRole, isTestPlayer…
  }
  async onDispose() { await this.mongo?.close(); }
}

export const rooms = { game: defineRoom(GameRoom) };

Kết nối tới MongoDB bên trong vòng đời của phòng, không bao giờ ở phạm vi module: PLAYDROP_MONGO_URL chỉ tồn tại lúc chạy. Hãy tạo chỉ mục cho các truy vấn của bạn.

Khai báo máy chủ

Gộp máy chủ vào một tệp và trỏ catalogue tới tệp đó:

json
{ "server": { "entry": "server/index.mjs", "rooms": ["game"] } }

Tải nó lên trong một gói; cách tải HTML đơn giản không mang theo được máy chủ.

Quy tắc của môi trường chạy do PlayDrop vận hành

  • Colyseus 0.17 (colyseus 0.17.10, @colyseus/schema 4.0.30), driver MongoDB 7.5, trên Node.js 24.22.1.
  • Một module ES khép kín tối đa 2 MiB. Nó chỉ được import colyseus, @colyseus/core, @colyseus/schema, mongodb và @playdrop/server; hãy gộp mọi thứ khác vào tệp.
  • Tối đa 2 loại phòng, 8 người chơi mỗi phòng, 4 giờ mỗi phòng, 30 tin nhắn mỗi giây cho mỗi người chơi và 512 KiB mỗi tin nhắn.
  • Không có truy cập internet: chỉ có thể truy cập MongoDB và các dịch vụ của PlayDrop.
  • Người chơi phải đăng nhập.
  • Một cơ sở dữ liệu cho mỗi game, được giữ qua các phiên bản và tính vào dung lượng của nhà sáng tạo. Không bao giờ gửi địa chỉ hay thông tin xác thực của nó đến trình duyệt.

Kết nối từ trình duyệt

js
const sdk = await playdrop.init();
const room = await sdk.multiplayer.join("game");
room.onStateChange((state) => render(state));
room.send("move", { x: 1 });

join xử lý chỗ ngồi của nhóm chơi PlayDrop và việc đăng nhập; xem nhóm chơi trực tuyến. Để kiểm soát ở mức thấp hơn, sdk.multiplayer.getConnection() trả về { endpoint, token, expiresAt } cho client Colyseus chính thức lấy từ sdk.libs.colyseus.load().

SDK server

@playdrop/server thêm các lệnh gọi nền tảng đáng tin cậy: bạn bè và thẻ game (playdrop.social), xác minh giao dịch mua (playdrop.shop), tạo nội dung bằng AI do nhà sáng tạo trả phí (playdrop.ai) và thoại phòng (playdrop.multiplayer.forRoom). Chúng chỉ chạy trên game đã tải lên. Xem tài liệu tham khảo SDK server.

Thử nghiệm

Trong lúc phát triển, hãy chạy Colyseus 0.17 và MongoDB cục bộ và kết nối client cục bộ tới máy chủ cục bộ của bạn. Để thử máy chủ được lưu trữ, hãy tải lên một phiên bản riêng tư và mở https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1, rồi mở cùng liên kết đó với player=2 trong cửa sổ thứ hai. Mỗi cửa sổ chơi như một người chơi thử riêng của bạn. Khi mọi thứ hoạt động, hãy xuất bản phiên bản đã thử bằng publish_game_version.

Hãy thiết kế cho trường hợp mất kết nối: cơ chế kết nối lại của Colyseus giữ chỗ trong một thời gian ngắn, và trạng thái của phòng nên cho phép người chơi quay lại tiếp tục chơi.

Hướng dẫn liên quan

  • Nhóm chơi trực tuyến và thoạiCho bạn bè chơi cùng nhau trực tuyến: khai báo quy mô nhóm chơi, mở cửa sổ nhóm chơi của PlayDrop, vào phòng đã giữ chỗ bằng sdk.multiplayer.join, điều khiển thoại phòng.
  • SDK serverTài liệu tham khảo máy chủ game do PlayDrop lưu trữ: quy tắc môi trường chạy, PlayDropPlayer đã xác minh, và các API máy chủ social, shop, ai, multiplayer.
  • Đóng gói và .playSắp xếp thư mục game đã dựng, tệp ZIP hoặc .play có catalogue.json ở thư mục gốc, khai báo media giới thiệu, máy chủ, rồi tải lên bằng prepare_catalogue_upload.
TrướcNhóm chơi trực tuyến và trò chuyện thoại trong game PlayDropTiếpĐánh giá, ủng hộ, giao dịch mua trong game và quảng cáo trên PlayDrop
Xem Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Trong trang này

Viết máy chủKhai báo máy chủQuy tắc của môi trường chạy do PlayDrop vận hànhKết nối từ trình duyệtSDK serverThử nghiệm
Xem Markdown