PlayDrop 게임 서버: Colyseus, MongoDB 및 서버 SDK
PlayDrop 게임을 위한 선택형 호스팅 멀티플레이어입니다. MongoDB 저장소를 쓰는 Colyseus server.js를 업로드하고, 테스트 플레이어로 테스트하고, 친구와 AI 기능에는 선택형 서버 SDK를 사용하세요.
게임 서버는 선택 사항입니다. 게임에서 직접 운영하는 어떤 서버든 호출할 수 있습니다. 원한다면 PlayDrop이 MongoDB 데이터베이스를 갖춘 표준 Colyseus 서버를 게임용으로 호스팅해 드립니다. PlayDrop Connector로 index.html 옆에 server.js로 업로드하거나, PlayDrop Cloud에 만들어 달라고 요청하세요. @playdrop/server 패키지도 선택 사항입니다.
표준 Colyseus 서버 작성하기
import { Room, defineRoom } from "colyseus";
import { MongoClient } from "mongodb";
class GameRoom extends Room {
async onCreate() {
this.mongo = new MongoClient(process.env.PLAYDROP_MONGO_URL);
await this.mongo.connect();
}
onJoin(client) {
// client.auth is the verified PlayDrop player, for example client.auth.userId.
}
async onDispose() { await this.mongo?.close(); }
}
export const rooms = { game: defineRoom(GameRoom) };server.js에서 rooms 맵을 내보내고, 룸 이름을 catalogue.json에 "server": { "rooms": ["game"] } 형식으로 나열하세요. 서버는 PlayDrop이 실행하므로 직접 시작하지 마세요. 데이터는 룸 수명 주기 안에서 PLAYDROP_MONGO_URL을 통해 표준 MongoDB 드라이버로 저장하세요.
호스팅 서버 규칙
- Colyseus 0.17(
colyseus0.17.10,@colyseus/schema4.0.30), MongoDB 드라이버 7.5, Node 22. - 최대 2 MiB의 독립적인 ES 모듈 하나.
colyseus,@colyseus/core,@colyseus/schema,mongodb,@playdrop/server만 import할 수 있으며, 그 밖의 코드는 파일 안에 번들로 포함하세요. - 룸 유형 최대 2개, 룸당 플레이어 8명, 룸당 4시간, 플레이어당 초당 메시지 30개, 메시지당 512 KiB.
- 서버에서는 인터넷에 접근할 수 없습니다. MongoDB와 PlayDrop 서비스에만 연결됩니다.
- 플레이어는 로그인해야 합니다. PlayDrop이 참여 시점에 각 플레이어를 검증하므로
onAuth를 구현하지 마세요. - 게임마다 MongoDB 데이터베이스가 하나씩 제공되며, 버전이 바뀌어도 유지되고 저장 공간 할당량에 포함됩니다. 데이터베이스 자격 증명은 절대 브라우저로 보내지 마세요.
브라우저 연결 및 테스트
브라우저에서는 클라이언트 SDK의 sdk.multiplayer.getConnection()이 서버 주소와 플레이어의 토큰을 반환하며, Colyseus 클라이언트(@colyseus/sdk 0.17)로 참여합니다. 개발 중에는 Colyseus 0.17과 MongoDB 8을 로컬에서 실행하고 로컬 서버에 직접 연결하세요. 호스팅 서버를 테스트하려면 비공개 버전을 업로드한 뒤 https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1을 열고, 두 번째 창에서 player=2로 바꾼 같은 링크를 여세요. 각 창은 서로 다른 테스트 계정으로 플레이합니다. 잘 작동하면 게임 페이지에서 해당 버전을 공개로 전환하세요.
선택형 서버 SDK: 친구 및 AI
@playdrop/server는 playdrop.social(이 게임을 플레이하는 친구와 PlayDrop Chat의 게임 카드)과 playdrop.ai(크리에이터가 비용을 부담하는 텍스트, 이미지, 3D, 동영상, 사운드, 음성, 음악 생성)를 추가합니다. 이 호출은 업로드된 게임에서만 작동하며 로컬 개발 환경에서는 작동하지 않습니다. 비공개로 생성된 미디어는 서버에서 playdrop.ai.tasks.downloadFile로 다운로드하고, 바이트 데이터는 의도한 플레이어에게만 보내세요. 음성 요청은 최대 40단어까지 허용됩니다.