PlayDrop MCP로 내 AI 앱에서 게임 게시하기
AI 에이전트가 MCP로 PlayDrop에 게시하는 방법: 간단한 방식과 패키지 방식, 비공개 테스트, publish_game_version, 업데이트, 제한, 복구.
PlayDrop의 MCP 서버를 사용하면 AI 앱이 사용자의 PlayDrop 계정에 게임을 게시하고, 업데이트를 거쳐도 계속 작동하는 링크를 돌려줄 수 있습니다. 이 가이드는 작업 순서를 안내하며, 단계마다 자세한 내용을 다루는 가이드로 연결됩니다.
만들기 전에
- 코드를 쓰기 전에
get_documentation({topic:"index"})를 호출하고 게임에 쓸 기능의 가이드를 읽으세요. 전체 화면 레이아웃, 저장, 조작을 처음부터 계획하면 나중에 게임을 다시 작성하지 않아도 됩니다. 정확한 메서드 시그니처는sdk-types,server-sdk-types,shared-types주제에서 확인하세요. list_games를 호출하세요. 게임이 이미 있으면 그 게임을 업데이트하고name을 유지해, 링크와 플레이어를 그대로 지키세요.- 방식을 고르세요. PlayDrop SDK를 쓰지 않는 독립 실행형 HTML 파일 하나는 간단한 방식을 사용합니다. SDK 기능, 등록 정보 미디어, 서버 중 하나라도 있는 경우를 포함해 그 밖의 모든 경우는 패키지를 사용합니다.
크리에이터의 소스 프로젝트는 직접 보관하세요. PlayDrop은 빌드 결과물만 받습니다. 소스 백업이 아니며 소스 코드를 돌려줄 수 없습니다.
간단한 방식: upload_game
requestId, 완전한 HTML(최대 10 MiB, UTF-8 기준 10,485,760바이트), 미니 카탈로그를 보내세요. 기존 게임을 업데이트하려면 gameId를 넘기세요. 버전은 자동으로 올라갑니다. 필드는 간단한 HTML 게임을 참고하세요.
패키지 방식: 준비, 업로드, 완료
requestId, expectedCurrentVersion, 그리고 입력 형식 하나를 넣어 prepare_catalogue_upload를 호출하세요.
- 폴더:
catalogue(catalogue.json의 내용)와files. 파일마다 상대 경로가 담긴 설명자가 하나씩 있습니다. 설명자에는 인라인text, 서명된 업로드 설명, 첨부 파일 연결, 또는 보관된 버전의 파일을 다시 쓰는reuse가 들어갑니다. - 로컬 ZIP 또는 .play: 로컬에서 압축을 푼 다음 루트 카탈로그와 폴더 설명자를 보내세요. 도구 호출에 base64로 인코딩한 아카이브 바이트를 절대 넣지 마세요.
- ChatGPT 첨부 파일: 호스트가 확인한 ZIP 또는 .play를 실제
download_url,file_id와 함께archive로 넘기세요. 압축 상태로 최대 20 MiB이며, 루트에 catalogue.json이 있어야 합니다.
서명된 업로드에서는 각 설명자가 path, contentType, sizeBytes, sha256(소문자 16진수 64자), md5Base64를 제공하며, 이 값들은 정확한 바이트로 로컬에서 계산합니다. 반환된 각 URL에 반환된 모든 헤더와 함께 그 바이트를 PUT으로 올린 다음, 같은 requestId로 complete_catalogue_upload를 호출하세요.
ChatGPT에서는 폴더 파일을 위치 순서로 연결한 첨부 파일에서 가져올 수 있습니다.
attachments: [htmlFile, iconFile]
files: [{path:"index.html", attachmentIndex:0}, {path:"listing/icon.png", attachmentIndex:1, role:"LISTING", app:"my-game"}]모든 앱에는 선언된 version, 공개 범위(요청 또는 앱에 지정), 그리고 expectedCurrentVersion에 앱 이름을 키로 한 항목이 필요합니다. 새로 만들면 null, 업데이트하면 list_games의 현재 게시 버전을 넣으세요. 오래된 값은 거부되므로 다른 업로드를 실수로 덮어쓰는 일이 없습니다.
비공개로 테스트한 뒤 출시하기
게임이 SDK나 서버를 사용하거나 사용자가 먼저 해 보고 싶어 하면 visibility: "private"로 업로드하세요. 업로드 결과의 url을 열면 실제 SDK 호스트가 있는 PlayDrop 안에서 바로 그 버전을 플레이할 수 있습니다. 호스팅 서버 기능은 업로드된 버전에서만 실행되므로 이 방법으로 테스트하세요.
잘 작동하면 gameId, version, expectedCurrentVersion, 그리고 사용자가 골랐다면 visibility(public 또는 unlisted)를 넘겨 publish_game_version으로 바로 그 버전을 출시하세요. 테스트한 파일, 등록 정보, 검토 결과를 재사용합니다. 출시하려고 게임을 다시 업로드하지 마세요.
업로드하기 전에 로컬 빌드를 PlayDrop 프레임에서 해 보려면, 로컬 서버가 실행 중인 컴퓨터의 일반 브라우저에서 https://www.playdrop.ai/@<username>/<slug>/dev?url=<URL-encoded local address>를 여세요.
플레이할 수 있는 사람 고르기
visibility는 public, unlisted, private를 받습니다. 따로 선택하지 않은 새 게임에는 크리에이터가 저장한 설정을 사용하세요. 공개 범위를 빼면 upload_game이 그 설정을 적용하고, get_account는 이를 publishing.defaultVisibility로 보여 줍니다. 업데이트할 때는 사용자가 바꾸지 않는 한 list_games의 gameVisibility를 유지하세요. upload_game은 공개 범위를 빼면 자동으로 유지하고, 패키지에서는 이 값을 명시합니다. 일부 공개는 링크가 있는 누구나 플레이할 수 있다는 뜻이며, 친구 목록이 아닙니다. 사용자가 의도한 것보다 더 넓게 게임을 공개하지 마세요. 자세한 내용: 누가 플레이할 수 있는지.
올바른 링크 전달하기
공개 및 일부 공개 게임의 업로드 결과에는 게임의 영구 페이지인 shareUrl이 들어 있습니다. 이 링크를 사용자에게 전달하세요. 비공개 버전은 소유자용 해당 버전 링크인 url을 반환합니다. 패키지 업로드 결과는 항목별로 나열되며, 나중 항목이 실패해도 완료된 항목은 게시된 상태로 남습니다.
게임 업데이트하기
list_games와 현재 버전을 읽고, name을 유지하고, 전체 스냅샷을 보내세요. 빠뜨린 필드는 새 버전에서 사라지므로, 넣으려는 모든 파일과 모든 메타데이터를 포함해야 합니다. 빠뜨린 카탈로그 항목은 삭제되지 않습니다. 변경하려는 버전의 정확한 카탈로그는 조정값 상태까지 포함해 get_game_version으로 읽으세요.
제한
- 간단한 방식: 최대 10 MiB의 HTML 파일 하나.
- 패키지: 폴더 파일 설명자 512개 또는 아카이브 항목 512개(catalogue.json과 디렉터리 포함), 파일당 50 MiB, 압축 해제 기준 총 200 MiB, 카탈로그 JSON 1 MiB.
- 아카이브: 안전한 상대 경로만 허용됩니다. 중복 경로, 심볼릭 링크, 암호화된 아카이브, 분할 아카이브, ZIP64 아카이브는 거부됩니다.
- 준비된 업로드는 30분 뒤에 만료됩니다.
오류와 재시도
오류에는 error, message, retryable, nextAction, docsUrl, documentationTopic이 들어 있습니다. nextAction을 따르세요. 응답을 받지 못했다면 같은 requestId로 똑같은 내용을 다시 시도하세요. 내용이 바뀌면 새 ID가 필요합니다. 오류와 복구를 참고하세요.
재현할 수 있는 문제나 헷갈리는 단계는 토큰이나 서명된 URL을 빼고 send_feedback으로 알려 주세요.