गेम एडिटर कंस्ट्रक्ट 3 किस तरह File System Access API का इस्तेमाल करता है, ताकि उपयोगकर्ता अपने गेम सेव कर सकें

File System Access API, फ़ाइलों को पढ़ने, लिखने, और उन्हें मैनेज करने से जुड़ी सुविधाएं इस्तेमाल करने की अनुमति देता है. जानें कि कंस्ट्रक्ट 3, इस एपीआई का इस्तेमाल कैसे करता है.

थॉमस स्टेनर
थॉमस स्टेनर
एश्ले गुलेन
ऐश्ले ग्यूलेन

शुरुआती जानकारी

(यह लेख वीडियो के रूप में भी उपलब्ध है.)

Construct 3 एक गेम एडिटर है, जिसे थॉमस और ऐश्ले गलेन भाइयों ने डेवलप किया है. उनके गेम एडिटर के तीसरे वर्शन में, Windows और NW.js के लिए पूरी तरह से "[bet] का इस्तेमाल, नया ऑपरेटिंग सिस्टम है" हुआ है. एडिटर की मदद से बनाए गए कुछ गेम के शोकेस को एक्सप्लोर करके या निर्देशों के साथ सैर करके, कुछ गेम की परफ़ॉर्मेंस देखी जा सकती है. वेब की सुपरपावर की वजह से, आप किसी भी "प्रेरणा पाएं" उदाहरण पर क्लिक करके तुरंत बदलाव करना शुरू कर सकते हैं.

कंस्ट्रक्ट 3 ऐप्लिकेशन में, उपयोगकर्ता को किसी स्टार्टर प्रोजेक्ट में बदलाव करते हुए दिखाया गया है.

कंस्ट्रक्ट 3 में File System Access API

कंस्ट्रक्ट की मदद से, लोकल फ़ाइलों में File System Access API को सेव किया जा सकता है. साथ ही, प्रोजेक्ट फ़ाइल की कॉपी डाउनलोड की जा सकती है और क्लाउड में सेव किया जा सकता है (Google Drive, OneDrive, Dropbox) भी किया जा सकता है. कंस्ट्रक्ट डेवलपर के इकट्ठा किए गए आंकड़ों से पता चलता है कि 65% सेव, File System Access API की मदद से किए जाते हैं. इससे पता चलता है कि ज़्यादातर ग्राहक इस एपीआई का इस्तेमाल करना चाहते हैं.

सेव करने के लिए, नीचे दिया गया स्निपेट, showSaveFilePicker() तरीके से FileSystemFileHandle पाने के लिए ओरिजनल प्रोडक्शन कोड दिखाता है. इसके बाद, यह असल डेटा को सेव करता है. कंस्ट्रक्ट, id विकल्प पैरामीटर का इस्तेमाल करता है. id फ़ील्ड की मदद से, उस डायरेक्ट्री का सुझाव दिया जा सकता है जिसमें फ़ाइल पिकर खुलता है. id तय करने पर ब्राउज़र अलग-अलग आईडी के लिए, अलग-अलग डायरेक्ट्री याद रख सकता है. इससे, आईडी के हिसाब से, एक ही डायरेक्ट्री में लगातार डायलॉग की शुरुआत होती है. उदाहरण के लिए, लेवल फ़ाइलें Documents/levels/ में खुल सकती हैं, जबकि टेक्सचर फ़ाइलें Images/textures/ में खुल सकती हैं. types पैरामीटर, इस्तेमाल किए जा सकने वाले फ़ाइल टाइप की कलेक्शन है. इसमें स्थानीय जगह के अनुसार उपयोगकर्ता-विज़ुअल description और accept ऑब्जेक्ट मौजूद है. यह ऑब्जेक्ट, ऑपरेटिंग सिस्टम को शुरुआत में सिर्फ़ MIME टाइप application/x-construct3-project वाली .c3p फ़ाइलों को स्वीकार करने के लिए कहता है.

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;
}

निर्माण टीम ने पाया है कि उपयोगकर्ता के फ़ाइल सिस्टम पर फ़ाइलों के साथ काम करना बहुत आसान है. यह किसी सामान्य डेस्कटॉप ऐप्लिकेशन की तरह ही काम करता है और अन्य सॉफ़्टवेयर के साथ आसानी से जुड़ जाता है. उदाहरण के लिए, ऐसा बैकअप सॉफ़्टवेयर जो उपयोगकर्ताओं की फ़ाइलों के बैकअप बना सकता है या काम को आसानी से दूसरी जगहों पर भेजने या बाहरी टूल से फ़ाइलों में बदलाव करने के लिए इस्तेमाल किया जा सकता है. वे इस्तेमाल के कई अन्य मामलों के लिए भी File System Access API का इस्तेमाल करते हैं. जैसे- कोई बैकअप फ़ोल्डर चुनना या ऐनिमेशन जैसी एसेट इंपोर्ट करना.

बड़ी फ़ाइलों और फ़ोल्डर के साथ काम करना

कंस्ट्रक्ट के कुछ ग्राहक, सैकड़ों मेगाबाइट में मौजूद बहुत बड़े प्रोजेक्ट पर काम करते हैं. एक ही फ़ाइल में बहुत सारे काम सेव करने में बहुत मुश्किल होती है. इसलिए, इसे क्लाउड सेवा पर अपलोड करने की ज़रूरत नहीं है. File System Access API की मदद से, उपयोगकर्ता किसी लोकल फ़ोल्डर पर काम कर सकते हैं. साथ ही, उसमें मौजूद सभी एसेट अलग-अलग फ़ाइलों में सेव किए जा सकते हैं. ऐसा करने से, फ़ाइलों को तेज़ी से सेव किया जा सकता है, क्योंकि सिर्फ़ बदली गई फ़ाइलों को अपडेट करने की ज़रूरत होती है.

जहां आपने छोड़ा था वहीं से जारी रखें

फ़ाइल और डायरेक्ट्री दोनों के हैंडल, IndexedDB पर सीरियलाइज़ किए जा सकते हैं. इससे, कंस्ट्रक्ट को उन प्रोजेक्ट की हाल की सूची उपलब्ध कराने में मदद मिलेगी जो सेशन में बरकरार रखे गए हैं, ताकि उपयोगकर्ता उसी फ़ाइल या फ़ोल्डर को फिर से ऐक्सेस कर सकें. यह उपयोगकर्ता के लिए एक अच्छी सुविधा है. असल में, कंस्ट्रक्ट की प्रोसेस के दौरान चालू हुए करीब 30% प्रोजेक्ट इस तरह से खोले जाते हैं. यह स्क्रीनशॉट, हाल ही के दो प्रोजेक्ट tetris.c3p और columns.c3p दिखाता है. साथ ही, DevTools विंडो में, संबंधित FileSystemFileHandle ऑब्जेक्ट को IndexedDB टेबल में क्रम के मुताबिक दिखाना.

दो हाल ही के प्रोजेक्ट, tetris.c3p और कॉलम.c3p के साथ, कंस्ट्रक्ट 3 के शुरुआती पेज पर जाएं. सबसे नीचे DevTools में, दो FileSystemFileHandle से जुड़े ऑब्जेक्ट हैं, जिन्हें IndexedDB के लिए सीरियलाइज़ किया गया है.

इंटिग्रेशन को खींचें और छोड़ें

File System Access API, खींचें और छोड़ें एपीआई के साथ भी इंटिग्रेट हो जाता है, ताकि उपयोगकर्ता .c3p फ़ाइलों को खींचकर ऐप्लिकेशन में छोड़ सकें. इसके बाद, DataTransferItem ऑब्जेक्ट पर getAsFileSystemHandle() तरीके का इस्तेमाल करके, कंस्ट्रक्ट को FileSystemFileHandle मिल सकता है. इसका मतलब है कि इस तरह खोली गई फ़ाइलों में तुरंत बदलाव किया जा सकता है और उन्हें सेव किया जा सकता है. इसके लिए, अलग से फ़ाइल सेव करने के डायलॉग बॉक्स की ज़रूरत नहीं होती.

पुराना NW.js बिल्ड

पहले, टीम के पास कंस्ट्रक्ट का NW.js बिल्ड था. इसे स्थानीय फ़ाइलों को ऐक्सेस करने के लिए, अलग से बनाए और अपडेट करने की ज़रूरत होती थी. जब Chromium ने वर्शन 84 में File System Access API के लिए मदद जोड़ने की कोशिश की, तब कंस्ट्रक्ट डेवलपर ने 2020 में इस एपीआई को लागू कर दिया. साथ ही, नए प्रॉडक्ट के तौर पर NW.js का बिल्ड बंद कर दिया था और सभी प्लैटफ़ॉर्म पर सिर्फ़ इस ब्राउज़र का इस्तेमाल किया जा सकता था. इससे ऐप्लिकेशन का डेवलपमेंट आसान हो जाता है और ब्राउज़र इंजन को ऐप्लिकेशन के साथ बंडल करने की ज़रूरत नहीं पड़ती.

मीटिंग में सामने आए नतीजे

कंस्ट्रक्शन, डेटा चुनने के तीन तरीकों showOpenFilePicker(), showSaveFilePicker(), और showOpenDirectoryPicker() का बहुत ज़्यादा इस्तेमाल करता है. ऐसा उन उपयोगकर्ताओं के फ़ायदे के लिए किया जाता है जो कंस्ट्रक्ट के साथ काम करने के इस तरीके पर निर्भर रहना सीख चुके हैं. एक और फ़ायदे के तौर पर, कंस्ट्रक्ट फ़ाइल मैनेज करने वाले एपीआई का भी इस्तेमाल करता है. इससे कंस्ट्रक्ट 3 को, .c3p फ़ाइलों के डिफ़ॉल्ट फ़ाइल हैंडलर के तौर पर खुद को रजिस्टर करने की अनुमति मिलती है. इसका मतलब है कि उपयोगकर्ता सीधे अपने ऑपरेटिंग सिस्टम के फ़ाइल एक्सप्लोरर से, अपनी गेम फ़ाइलों को 'कंस्ट्रक्ट 3' के ज़रिए खोलकर, किसी दूसरी विंडो में ले जा सकता है या राइट क्लिक कर सकता है. वेब पर पूरी तरह से दांव लगाने के बाद, Construct अन्य मॉडर्न ब्राउज़र एपीआई का इस्तेमाल करता है, जैसे कि WebGL, Web Audio, Web Workers, WebAssembly, मल्टीप्लेयर गेम के लिए WebRTC, Local Font Access, और अपने नए ऐनिमेशन प्रॉडक्ट के लिए WebCodecs वगैरह. उनका मकसद हमेशा से वेब प्लैटफ़ॉर्म का पूरा फ़ायदा उठाना होता है. साथ ही, यह दिखाना होता है कि उसकी मदद से बढ़िया प्रॉडक्ट कैसे बनाए जा सकते हैं. इसलिए, उनके गाइड के साथ टूर को आज़माएं और खुद के गेम बनाएं.