คำแนะนำนี้จะช่วยแนะนำให้คุณสร้างเกมทันใจเกมแรกของคุณ ซึ่งได้แก่ เกมโอเอ็กซ์ซึ่งเป็นเกมคลาสสิกแบบผลัดกันเล่น โดยจะใช้การอัพเดตเกมและบอทเกม |
เมื่อตั้งค่าแอพของคุณแล้ว คุณก็พร้อมเริ่มขั้นตอนแรกทันที:
ขณะนี้กำลังตั้งค่าแอพของคุณ คุณจะต้องเริ่มสร้างไคลเอ็นท์เกมของคุณ ไคลเอ็นต์เกมต้องมีไฟล์ index.html
ในไดเร็กทอรี่รูท เริ่มต้นโดยการนำเข้า SDK เกมทันใจด้วยการเพิ่มบรรทัดนี้
<script src="https://connect.facebook.net/en_US/fbinstant.6.2.js"></script>
หมายเหตุสำคัญ:
SDK ของเรานำ Promise มาใช้งานกับฟังก์ชั่นการทำงานแบบไม่ซิงโครไนซ์อย่างกว้างขวาง คุณจะโต้ตอบกับ UI การโหลดได้ก็ต่อเมื่อแก้ไข FBInstant.initializeAsync()
แล้วเท่านั้น
FBInstant.initializeAsync() .then(function() // Start loading game assets here );
ไคลเอ็นต์เกมของเราจะไม่ดาวน์โหลดชุดรวมของคุณ (ไฟล์ .zip
) ทั้งหมดในครั้งเดียว แต่จะค้นหารูทสำหรับการปรับแต่ง (fbapp-config.json
) และไฟล์หลัก (index.html
) จากนั้นจึงจะเริ่มดำเนินการกับตรรกะที่มีอยู่ในไฟล์หลัก และจะเริ่มดาวน์โหลดแอสเซทจากจุดนั้น คุณมีสิทธิ์ในการควบคุมลำดับและเวลาในการโหลดแอสเซทของคุณอย่างเต็มที่ในฐานะผู้พัฒนา
เมื่อคุณเริ่มดาวน์โหลกแอสเซทที่จำเป็นต่อการเริ่มเกม คุณจะต้องแจ้ง SDK เกี่ยวกับกระบวนการดาวน์โหลด เพื่อให้เราแสดงวงแหวนดาวน์โหลดให้แก่ผู้เล่น
var images = ['sprite1', 'sprite2', ...]; for (var i=0; i < images.length; i++) { var assetName = images[i]; var progress = ((i+1)/images.length) * 100; game.load.image(assetName); // Informs the SDK of loading progress FBInstant.setLoadingProgress(progress); } // Once all assets are loaded, tells the SDK // to end loading view and start the game FBInstant.startGameAsync() .then(function() { // Retrieving context and player information can only be done // once startGameAsync() resolves var contextId = FBInstant.context.getID(); var contextType = FBInstant.context.getType(); var playerName = FBInstant.player.getName(); var playerPic = FBInstant.player.getPhoto(); var playerId = FBInstant.player.getID(); // Once startGameAsync() resolves it also means the loading view has // been removed and the user can see the game viewport game.start(); });
ดูข้อมูลเกี่ยวกับวิธี initializeAsync()
, setLoadingProgress()
และ startGameAsync()
ที่ “ข้อมูลอ้างอิงสำหรับ SDK”
เนื้อหาเกมทันใจจะถูกโฮสต์อยู่บนโครงสร้างภายในของ Facebook ดังนั้นคุณจึงไม่ต้องโฮสต์เนื้อหาเกมด้วยตนเองหรือใช้บริการของบุคคลที่สาม เมื่อเกมพร้อมสำหรับการทดสอบแล้ว ให้บีบอัดเกมของคุณให้อยู่ในไฟล์ .zip เดียว
โปรดทราบ: ไฟล์ index.html
ควรจะเป็นรากของไฟล์ถาวรนี้และไม่ควรอยู่ในโฟลเดอร์ย่อย
หากต้องการอัพโหลดไฟล์ .zip:
คุณสามารถทดสอบบิลด์ดังกล่าวบนอุปกรณ์มือถือของคุณได้ บิวด์ที่เผยแพร่จะอยู่ในรายการเกมภายใน Messenger ใต้ส่วนที่เรียกว่า อยู่ระหว่างการพัฒนา
คุณสามารถอัพโหลดบิลด์จากบรรทัดคำสั่งผ่าน API กราฟ หรือเพื่อทดสอบโดยตรงจากเซิร์ฟเวอร์ผู้พัฒนาของคุณได้ เพื่อเร่งกระบวนการพัฒนาของคุณให้เร็วขึ้น เรียนรู้เพิ่มเติมเกี่ยวกับการทดสอบ การเผยแพร่ และการแชร์เกมทันใจของคุณ
บริบทเป็นตัวกำหนดสภาพแวดล้อมที่สามารถเล่นเกมได้ โดยทั่วไป บริบทจะเป็นตัวระบุสิ่งต่างๆ เช่น โพสต์หรือกลุ่มของ Facebook
ตัวอย่างด้านล่างนี้จะแสดงวิธีส่งอัพเดตของบริบท และหน้าตาที่จะปรากฏในการสนทนาใน Messenger
หากต้องการแสดงการอัพเดตแบบกำหนดเอง คุณจำเป็นต้องสร้างไฟล์การกำหนดค่า fbapp-config.json
และวางไว้ในรากของชุดรวมของคุณพร้อมกับไฟล์ index.html
ของคุณ
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าที่รองรับที่ “หัวข้อการปรับแต่งตามชุดรวม” ในตัวอย่างนี้ เนื้อหาไฟล์จะเป็นดังนี้:
{ "instant_games": { "platform_version": "RICH_GAMEPLAY", "custom_update_templates": { "play_turn": { "example": "Edgar played their move" } } } }
การปรับแต่งเทมเพลตการอัพเดตที่กำหนดเองช่วยให้เรากำหนด ID ให้การอัพเดตที่กำหนดแต่ละรายการได้ ซึ่งให้ผลลัพธ์ในการวิเคราะห์ได้ดีขึ้น จำเป็นต้องมีการกำหนด ID เทมเพลตสำหรับเกมทั้งหมด
updateAsync
เมื่อแสดงสิทธิ์เทมเพลตของคุณในไฟล์การกำหนดค่าแล้ว คุณจะสามารถใช้เพื่อสร้างช่อง template
ที่จำเป็นใน FBInstant.updateAsync
ได้ นี่คือวิธีใช้การเรียกใน Tic-Tac-Toe เพื่อสื่อสารกับฝ่ายตรงข้ามว่าถึงตาของผู้เล่นแล้ว
// This will post a custom update. If the game is played in a messenger // chat thread, this will post a message into the thread with the specified // image and text message. And when people launch the game from this // message, those game sessions will be able to access the specified blob // of data through FBInstant.getEntryPointData(). FBInstant.updateAsync({ action: 'CUSTOM', cta: 'Play', image: base64Picture, text: { default: 'Edgar played their move', localizations: { en_US: 'Edgar played their move', es_LA: '\u00A1Edgar jug\u00F3 su jugada!' } } template: 'play_turn', data: { myReplayData: '...' }, strategy: 'IMMEDIATE', notification: 'NO_PUSH' }).then(function() { // Closes the game after the update is posted. FBInstant.quit(); });
ข้อความของคุณจะมีลักษณะดังนี้:
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการอัพเดตบริบทที่กำหนดเองที่ "ข้อมูลอ้างอิงสำหรับ SDK เกมทันใจ" ของเรา
ในส่วนของหลักปฏิบัติที่ดีที่สุด รวมไปถึงเวลาที่ควรส่งข้อความถึงผู้เล่นอื่น เวลาที่ควรแจ้งเตือน และเนื้อหาที่ควรเพิ่มลงในการอัพเดต โปรดดูคู่มือ "หลักปฏิบัติที่ดีที่สุด" ของเรา
หมายเหตุ: การอัพเดตเนื้อหาจะไม่ส่งออกนอก Messenger ซึ่งอาจมีประโยชน์ในการออกแบบประสบการณ์การใช้งานของคุณโดยใช้วิธี context.getType()
และการตรวจจับ THREAD
คุณสามารถสลับเป็นเนื้อหาที่เหมาะสมยิ่งขึ้นได้ โดยใช้ context.switchAsync
, context.chooseAsync
หรือ context.createAsync
บอทเกมช่วยมอบช่องทางที่มีประสิทธิภาพในการสร้างการมีส่วนร่วมอีกครั้งให้กับเกมของคุณ หากต้องการสร้างบอทเกม โปรดดูคู่มือการตั้งค่าบอทเกมของเรา
ตอนนี้คุณก็ได้รู้จักวิธีสร้างและกำหนดค่าเกมทันใจและบอทเกมของคุณแล้ว คุณต้องตรวจสอบคำแนะนำด้านล่างนี้