File System Access API ช่วยให้สามารถอ่าน เขียน และจัดการไฟล์ได้ ดูวิธีที่ Construct 3 ใช้ API นี้
บทนำ
(บทความนี้มีให้บริการในรูปแบบวิดีโอด้วย)
Construct 3 เป็นโปรแกรมแก้ไขเกมที่พัฒนาโดยพี่น้อง Thomas และ Ashley Gullen สำหรับเครื่องมือแก้ไขเกมเวอร์ชันที่ 3 ในปัจจุบัน เครื่องมือ 2 รายการนี้"[เดิมพัน] ว่าเบราว์เซอร์จะเป็นระบบปฏิบัติการใหม่" โดยสมบูรณ์หลังจากสร้างสำหรับ Windows และ NW.js ก่อนหน้านี้ คุณสามารถดูตัวอย่างเกมบางส่วนที่พัฒนาด้วยเครื่องมือแก้ไขได้โดยดูโชว์เคสหรือทำตามบทแนะนำ คุณสามารถคลิกผ่านตัวอย่าง"รับแรงบันดาลใจ" รายการใดก็ได้เพื่อเริ่มแก้ไขทันที ด้วยความอัจฉริยะของเว็บ
File System Access API ใน Construct 3
Construct มีตัวเลือกในการบันทึกไปยังไฟล์ในเครื่องด้วย File System Access API รวมถึงการบันทึกในระบบคลาวด์ (Google ไดรฟ์, OneDrive, Dropbox) และการดาวน์โหลดสำเนาไฟล์โปรเจ็กต์ สถิติที่นักพัฒนา Construct รวบรวมไว้แสดงให้เห็นว่าการบันทึก 65% ดำเนินการด้วย File System Access API ซึ่งแสดงให้เห็นว่า API นี้เป็นสิ่งที่ลูกค้าส่วนใหญ่ต้องการใช้
สําหรับการบันทึก ข้อมูลโค้ดต่อไปนี้แสดงโค้ดเวอร์ชันที่ใช้งานจริงเดิมสําหรับรับ FileSystemFileHandle
จากเมธอด showSaveFilePicker()
ซึ่งจะใช้ในการบันทึกข้อมูลจริง Construct ใช้พารามิเตอร์ตัวเลือก id
คุณสามารถระบุช่อง id
เพื่อแนะนำไดเรกทอรีที่เครื่องมือเลือกไฟล์จะเปิดขึ้น การระบุ id
จะช่วยให้เบราว์เซอร์จดจำไดเรกทอรีต่างๆ สำหรับรหัสที่แตกต่างกันได้ ซึ่งจะเป็นประโยชน์ในการเริ่มกล่องโต้ตอบอย่างสม่ำเสมอในไดเรกทอรีเดียวกันโดยขึ้นอยู่กับรหัส เช่น ไฟล์ระดับอาจเปิดใน Documents/levels/
ส่วนไฟล์พื้นผิวอาจเปิดใน Images/textures/
พารามิเตอร์ types
คืออาร์เรย์ของประเภทไฟล์ที่รองรับพร้อมdescription
ที่แสดงต่อผู้ใช้ซึ่งแปลแล้ว และออบเจ็กต์ accept
ที่บอกให้ระบบปฏิบัติการยอมรับเฉพาะไฟล์ .c3p
ที่มีประเภท MIME application/x-construct3-project
ในตอนแรก
let fileHandle = null;
try {
fileHandle = await window["showSaveFilePicker"]({
id: "save-project-file",
types: [
{
description: lang("ui.project-file-picker.c3-single-file-project"),
accept: {
"application/x-construct3-project": [".c3p"],
},
},
],
});
} catch (err) {
// Assume user cancelled, or permission otherwise denied.
return;
}
ทีม Construct พบว่าการทำงานกับไฟล์ในระบบไฟล์ของผู้ใช้นั้นใช้งานง่ายมาก ซึ่งทำงานคล้ายกับแอปบนเดสก์ท็อปแบบดั้งเดิมและผสานรวมกับซอฟต์แวร์อื่นๆ ได้อย่างสะดวก เช่น ซอฟต์แวร์สํารองข้อมูลที่สามารถสํารองข้อมูลไฟล์ของผู้ใช้ หรือส่งงานไปยังที่อื่นได้อย่างง่ายดาย หรือแก้ไขไฟล์ด้วยเครื่องมือภายนอก นอกจากนี้ ยังใช้ File System Access API สำหรับกรณีการใช้งานอื่นๆ อีกมากมาย เช่น การเลือกโฟลเดอร์สํารองข้อมูล หรือการนําเข้าชิ้นงาน เช่น ภาพเคลื่อนไหว
การทำงานกับไฟล์และโฟลเดอร์ขนาดใหญ่
ลูกค้าบางรายของ Construct ทำงานกับโปรเจ็กต์ขนาดใหญ่มากซึ่งมีขนาดหลายร้อยเมกะไบต์ การบันทึกงานจำนวนมากลงในไฟล์เดียวจะช้ามาก ยังไม่นับการอัปโหลดไปยังบริการระบบคลาวด์ File System Access API ช่วยให้ผู้ใช้ขั้นสูงทำงานกับโฟลเดอร์ในเครื่องที่มีชิ้นงานทั้งหมดเป็นไฟล์แยกต่างหากได้ วิธีนี้ช่วยให้บันทึกได้อย่างรวดเร็วมาก เนื่องจากต้องอัปเดตเฉพาะไฟล์ที่มีการเปลี่ยนแปลงเท่านั้น
ดำเนินการต่อจากจุดที่ค้างไว้
ทั้งตัวแฮนเดิลไฟล์และไดเรกทอรีสามารถจัดรูปแบบเป็น IndexedDB ได้ ซึ่งจะช่วยให้ Construct แสดงรายการโปรเจ็กต์ล่าสุดที่เก็บไว้ตลอดเซสชันได้ ผู้ใช้จึงเข้าถึงไฟล์หรือโฟลเดอร์เดิมได้อีกครั้ง ซึ่งให้ความสะดวกอย่างยิ่งแก่ผู้ใช้ อันที่จริงแล้ว โปรเจ็กต์ทั้งหมดที่เปิดใน Construct ประมาณ 30% เปิดด้วยวิธีนี้ ภาพหน้าจอต่อไปนี้แสดงโปรเจ็กต์ล่าสุด 2 รายการ ได้แก่ tetris.c3p
และ columns.c3p
และในหน้าต่างเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ ออบเจ็กต์ FileSystemFileHandle
ที่เกี่ยวข้องจะได้รับการแปลงเป็นอนุกรมในตาราง IndexedDB
การผสานรวมแบบลากและวาง
File System Access API ยังผสานรวมกับ Drag and Drop API ด้วย เพื่อให้ผู้ใช้ลากและวางไฟล์ .c3p
ลงในแอปพลิเคชันได้ จากนั้น Construct จะได้รับ FileSystemFileHandle
ผ่านเมธอด getAsFileSystemHandle()
บนออบเจ็กต์ DataTransferItem
ซึ่งหมายความว่าไฟล์ที่เปิดด้วยวิธีนี้จะแก้ไขและบันทึกได้ทันทีโดยไม่ต้องผ่านกล่องโต้ตอบการบันทึกไฟล์แยกต่างหาก
บิลด์ NW.js ที่เลิกใช้งานแล้ว
ก่อนหน้านี้ ทีมมีบิลด์ NW.js ของ Construct ที่ต้องบำรุงรักษาและอัปเดตแยกต่างหากเพื่อเข้าถึงไฟล์ในเครื่อง หลังจาก Chromium เพิ่มการรองรับ File System Access API ในเวอร์ชัน 84 นักพัฒนาซอฟต์แวร์ Construct ได้ติดตั้งใช้งาน API ในปี 2020 และผลพลอยได้คือสามารถเลิกใช้งานบิลด์ NW.js และใช้เบราว์เซอร์นี้บนทุกแพลตฟอร์มได้แบบเอกสิทธิ์ วิธีนี้ช่วยให้การพัฒนาง่ายขึ้นและไม่ต้องรวมเครื่องมือเบราว์เซอร์ไว้ในแอป
สรุป
Construct ใช้เมธอดเครื่องมือเลือก 3 รายการ ได้แก่ showOpenFilePicker()
, showSaveFilePicker()
และ showOpenDirectoryPicker()
อย่างหนักเพื่อประโยชน์ของผู้ใช้ที่เรียนรู้ที่จะใช้วิธีนี้ในการทำงานกับ Construct ประโยชน์เพิ่มเติมคือ Construct ยังใช้ File Handling API ซึ่งช่วยให้ Construct 3 ลงทะเบียนตัวเองเป็นตัวแฮนเดิลไฟล์ (เริ่มต้น) ของไฟล์ .c3p
ได้ ซึ่งหมายความว่าผู้ใช้สามารถดับเบิลคลิกหรือคลิกขวาและเปิดไฟล์เกมด้วย Construct 3 ได้โดยตรงจากโปรแกรมสำรวจไฟล์ของระบบปฏิบัติการ Construct ใช้ประโยชน์จากเว็บอย่างเต็มที่โดยใช้ API เบราว์เซอร์สมัยใหม่อื่นๆ มากมาย เช่น WebGL, Web Audio, Web Workers, WebAssembly, WebRTC สำหรับเกมแบบหลายผู้เล่น, การเข้าถึงแบบอักษรท้องถิ่น, WebCodecs สำหรับผลิตภัณฑ์ภาพเคลื่อนไหวใหม่ และอื่นๆ อีกมากมาย เป้าหมายของทีมนี้คือการใช้ประโยชน์จากแพลตฟอร์มเว็บอย่างเต็มที่และแสดงให้เห็นว่าการสร้างผลิตภัณฑ์ที่ยอดเยี่ยมบนแพลตฟอร์มนี้ทำได้อย่างไร ดังนั้นอย่าลืมลองทัวร์ชมพร้อมคำแนะนำและสร้างเกมของคุณเอง