คำแนะนำนี้จะช่วยแนะนำให้คุณสร้างเกมทันใจเกมแรกของคุณ ซึ่งได้แก่ เกมโอเอ็กซ์ซึ่งเป็นเกมคลาสสิกแบบผลัดกันเล่น โดยจะใช้การอัพเดตเกมและบอทเกม | ![]() |
เมื่อตั้งค่าแอพของคุณแล้ว คุณก็พร้อมเริ่มขั้นตอนแรกทันที:
ขณะนี้กำลังตั้งค่าแอพของคุณ คุณจะต้องเริ่มสร้างไคลเอ็นท์เกมของคุณ ไคลเอ็นต์เกมต้องมีไฟล์ 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
บอทเกมช่วยมอบช่องทางที่มีประสิทธิภาพในการสร้างการมีส่วนร่วมอีกครั้งให้กับเกมของคุณ หากต้องการสร้างบอทเกม โปรดดูคู่มือการตั้งค่าบอทเกมของเรา
ตอนนี้คุณก็ได้รู้จักวิธีสร้างและกำหนดค่าเกมทันใจและบอทเกมของคุณแล้ว คุณต้องตรวจสอบคำแนะนำด้านล่างนี้