เผยแพร่เกมจากแอป AI ของคุณด้วย PlayDrop MCP
วิธีที่เอเจนต์ AI เผยแพร่ไปยัง PlayDrop ผ่าน MCP: เส้นทางแบบง่ายและแบบแพ็กเกจ การทดสอบแบบส่วนตัว publish_game_version การอัปเดต ขีดจำกัด และการกู้คืน
เซิร์ฟเวอร์ MCP ของ PlayDrop ให้แอป AI เผยแพร่เกมไปยังบัญชี PlayDrop ของผู้ใช้ แล้วส่งลิงก์กลับมา ซึ่งยังใช้ได้ต่อไปแม้เกมจะอัปเดต คู่มือนี้คือลำดับขั้นตอน แต่ละขั้นตอนมีลิงก์ไปยังคู่มือที่มีรายละเอียด
ก่อนเริ่มสร้าง
- เรียก
get_documentation({topic:"index"})และอ่านคู่มือของฟีเจอร์ที่เกมจะใช้ก่อนเขียนโค้ด การวางแผนเลย์เอาต์เต็มหน้าจอ การบันทึก และการควบคุมตั้งแต่แรกช่วยให้ไม่ต้องเขียนเกมใหม่ภายหลัง สำหรับซิกเนเจอร์ของเมธอดที่แน่ชัด ให้อ่านหัวข้อsdk-types,server-sdk-typesและshared-types - เรียก
list_gamesหากเกมมีอยู่แล้ว คุณจะอัปเดตเกมนั้นและคงnameไว้ เพื่อให้เกมคงลิงก์และผู้เล่นไว้ - เลือกเส้นทาง ไฟล์ HTML ไฟล์เดียวที่ครบในตัวและไม่ใช้ PlayDrop SDK ใช้เส้นทางแบบง่าย กรณีอื่นทั้งหมด รวมถึงฟีเจอร์ใดๆ ของ SDK สื่อของหน้าเกม หรือเซิร์ฟเวอร์ ใช้แพ็กเกจ
เก็บโปรเจกต์ซอร์สของครีเอเตอร์ไว้เอง PlayDrop ได้รับเฉพาะผลลัพธ์ที่บิลด์แล้ว: PlayDrop ไม่ใช่ที่สำรองซอร์สโค้ดและส่งซอร์สโค้ดคืนให้ไม่ได้
เส้นทางแบบง่าย: upload_game
ส่ง requestId HTML ฉบับสมบูรณ์ (ไม่เกิน 10 MiB หรือ 10,485,760 ไบต์ UTF-8) และแคตตาล็อกขนาดย่อ ส่ง gameId เพื่ออัปเดตเกมที่มีอยู่ หมายเลขเวอร์ชันจะเพิ่มขึ้นอัตโนมัติ ดูฟิลด์ต่างๆ ได้ในเกม HTML แบบง่าย
เส้นทางแพ็กเกจ: เตรียม อัปโหลด ทำให้เสร็จ
เรียก prepare_catalogue_upload ด้วย requestId, expectedCurrentVersion และรูปแบบอินพุตหนึ่งแบบ:
- โฟลเดอร์:
catalogue(เนื้อหาของ catalogue.json) พร้อมfilesซึ่งมีตัวอธิบายหนึ่งรายการต่อไฟล์พร้อมพาธแบบสัมพัทธ์ ตัวอธิบายมีtextแบบอินไลน์ คำอธิบายการอัปโหลดแบบมีลายเซ็น การผูกไฟล์แนบ หรือreuseของไฟล์จากเวอร์ชันที่เก็บไว้ - ZIP หรือ .play ในเครื่อง: แตกไฟล์ในเครื่อง แล้วส่งแคตตาล็อกที่รากและตัวอธิบายแบบโฟลเดอร์ ห้ามใส่ไบต์ของไฟล์บีบอัดแบบ base64 ในการเรียกเครื่องมือเด็ดขาด
- ไฟล์แนบใน ChatGPT: ส่ง ZIP หรือ .play ที่โฮสต์ระบุไว้เป็น
archiveพร้อมdownload_urlและfile_idจริง ไฟล์มีขนาดได้สูงสุด 20 MiB เมื่อบีบอัด และต้องมี catalogue.json ที่ราก
สำหรับการอัปโหลดแบบมีลายเซ็น ตัวอธิบายแต่ละรายการระบุ path, contentType, sizeBytes, sha256 (เลขฐานสิบหกตัวพิมพ์เล็ก 64 ตัว) และ md5Base64 ซึ่งคำนวณในเครื่องจากไบต์ที่ตรงกันทุกประการ PUT ไบต์เหล่านั้นไปยัง URL ที่ได้รับแต่ละรายการพร้อมทุกเฮดเดอร์ที่ได้รับ แล้วเรียก complete_catalogue_upload ด้วย requestId เดิม
ใน 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 เพื่ออัปเดต ค่าที่ล้าสมัยจะถูกปฏิเสธ จึงไม่มีการเขียนทับการอัปโหลดอื่นโดยไม่ตั้งใจ
ทดสอบแบบส่วนตัว แล้วค่อยปล่อย
อัปโหลดด้วย visibility: "private" เมื่อเกมใช้ SDK หรือเซิร์ฟเวอร์ หรือเมื่อผู้ใช้ของคุณอยากลองก่อน เปิด url ในใบยืนยันเพื่อเล่นเวอร์ชันนั้นภายใน PlayDrop พร้อมโฮสต์ SDK จริง ฟังก์ชันของเซิร์ฟเวอร์ที่โฮสต์ให้ทำงานเฉพาะกับเวอร์ชันที่อัปโหลดแล้ว จึงต้องทดสอบด้วยวิธีนี้
เมื่อใช้งานได้แล้ว ให้ปล่อยเวอร์ชันนั้นด้วย publish_game_version โดยส่ง gameId, version, expectedCurrentVersion และ visibility (public หรือ unlisted) หากผู้ใช้ของคุณเลือกไว้ การปล่อยจะใช้ไฟล์ หน้าเกม และรีวิวที่ทดสอบแล้ว ไม่ต้องอัปโหลดเกมอีกครั้งเพื่อปล่อย
หากต้องการลองบิลด์ในเครื่องในเฟรม PlayDrop ก่อนอัปโหลด ให้เปิด https://www.playdrop.ai/@<username>/<slug>/dev?url=<URL-encoded local address> ในเบราว์เซอร์ปกติบนเครื่องที่รันเซิร์ฟเวอร์ในเครื่อง
เลือกว่าใครเล่นได้
visibility รับ public, unlisted และ private สำหรับเกมใหม่ที่ไม่ได้เลือกไว้ ให้ใช้การตั้งค่าที่ครีเอเตอร์บันทึกไว้: upload_game ใช้ค่านี้เมื่อคุณไม่ใส่การมองเห็น และ get_account แสดงค่านี้เป็น publishing.defaultVisibility สำหรับการอัปเดต ให้คง gameVisibility ของเกมจาก list_games ไว้ เว้นแต่ผู้ใช้ของคุณจะเปลี่ยน upload_game ทำเช่นนี้ให้เมื่อคุณไม่ใส่การมองเห็น ส่วนแพ็กเกจต้องระบุค่านี้เอง ไม่แสดงในรายการหมายถึงทุกคนที่มีลิงก์เล่นได้ ไม่ใช่รายชื่อเพื่อน ห้ามทำให้เกมมองเห็นได้กว้างกว่าที่ผู้ใช้ของคุณตั้งใจเด็ดขาด รายละเอียด: ใครเล่นได้บ้าง
ส่งลิงก์ที่ถูกต้องกลับไป
ใบยืนยันของเกมสาธารณะและเกมที่ไม่แสดงในรายการมี shareUrl ซึ่งเป็นหน้าถาวรของเกม: ให้ส่งลิงก์นั้นให้ผู้ใช้ของคุณ เวอร์ชันส่วนตัวจะส่งคืน url ซึ่งเป็นลิงก์ของเวอร์ชันนั้นสำหรับเจ้าของ ใบยืนยันของแพ็กเกจแสดงแต่ละรายการ รายการที่เสร็จแล้วยังคงเผยแพร่อยู่แม้รายการหลังจากนั้นจะล้มเหลว
อัปเดตเกม
อ่าน list_games และเวอร์ชันปัจจุบัน คง name ไว้ และส่งสแนปช็อตเต็ม: ทุกไฟล์และข้อมูลเมตาทั้งหมดที่ต้องการ เพราะฟิลด์ที่ไม่ได้ใส่จะไม่มีในเวอร์ชันใหม่ รายการแคตตาล็อกที่ไม่ได้ใส่จะไม่ถูกลบ ใช้ get_game_version เพื่ออ่านแคตตาล็อกของเวอร์ชันที่คุณกำลังเปลี่ยนแบบตรงทุกประการ รวมถึงสถานะของ Tweaks (ค่าที่ครีเอเตอร์ปรับได้)
ขีดจำกัด
- เส้นทางแบบง่าย: ไฟล์ HTML หนึ่งไฟล์ขนาดไม่เกิน 10 MiB
- แพ็กเกจ: ตัวอธิบายไฟล์ในโฟลเดอร์ 512 รายการ หรือรายการในไฟล์บีบอัด 512 รายการ (รวม catalogue.json และไดเรกทอรี) 50 MiB ต่อไฟล์ รวม 200 MiB เมื่อแตกไฟล์ และ JSON ของแคตตาล็อก 1 MiB
- ไฟล์บีบอัด: ใช้ได้เฉพาะพาธแบบสัมพัทธ์ที่ปลอดภัย พาธซ้ำ ลิงก์สัญลักษณ์ ไฟล์บีบอัดที่เข้ารหัส แบบหลายส่วน และ ZIP64 จะถูกปฏิเสธ
- การอัปโหลดที่เตรียมไว้จะหมดอายุหลัง 30 นาที
ข้อผิดพลาดและการลองใหม่
ข้อผิดพลาดมี error, message, retryable, nextAction, docsUrl และ documentationTopic ทำตาม nextAction หลังจากไม่ได้รับคำตอบ ให้ลองส่งเนื้อหาเดิมทุกประการด้วย requestId เดิม เนื้อหาที่เปลี่ยนแล้วต้องใช้ค่าใหม่ ดูข้อผิดพลาดและการกู้คืน
ใช้ send_feedback เพื่อรายงานปัญหาที่ทำซ้ำได้หรือขั้นตอนที่สับสน โดยไม่ใส่โทเค็นหรือ URL แบบมีลายเซ็น