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

फ़ाइल सिस्टम ऐक्सेस एपीआई, फ़ाइल को पढ़ने, उसमें बदलाव करने, और उसे मैनेज करने की सुविधाएं देता है. जानें कि Construct 3 इस एपीआई का इस्तेमाल कैसे करता है.

परिचय

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

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

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

Construct 3 में File System Access API

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

सेव करने के लिए, यहां दिया गया स्निपेट showSaveFilePicker() तरीके से FileSystemFileHandle पाने के लिए ओरिजनल प्रोडक्शन कोड दिखाता है. इसके बाद, असली डेटा सेव किया जाता है. Construct, id options पैरामीटर का इस्तेमाल करता है. id फ़ील्ड में, उस डायरेक्ट्री का सुझाव दिया जा सकता है जिसमें फ़ाइल पिकर खुलता है. id तय करने पर, ब्राउज़र अलग-अलग आईडी के लिए अलग-अलग डायरेक्ट्री याद रख सकता है. इससे आईडी के हिसाब से, एक ही डायरेक्ट्री में डायलॉग शुरू किया जाता है. उदाहरण के लिए, लेवल फ़ाइलें Documents/levels/ में खुल सकती हैं, जबकि टेक्सचर फ़ाइलें Images/textures/ में खुल सकती हैं. types पैरामीटर, इस्तेमाल किए जा सकने वाले फ़ाइल टाइप का कलेक्शन होता है. इसमें स्थानीय भाषा में उपयोगकर्ता के लिए विज़ुअल description और accept ऑब्जेक्ट होता है. यह ऑब्जेक्ट, ऑपरेटिंग सिस्टम को बताता है कि शुरुआत में सिर्फ़ .c3p फ़ाइलों को स्वीकार किया जाए. इन फ़ाइलों का एमआईएमई टाइप 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 की टीम को उपयोगकर्ता के फ़ाइल सिस्टम में फ़ाइलों के साथ काम करना काफ़ी आसान लगा. यह परंपरागत डेस्कटॉप ऐप्लिकेशन की तरह ही काम करता है और अन्य सॉफ़्टवेयर के साथ आसानी से इंटिग्रेट हो जाता है. उदाहरण के लिए, बैकअप सॉफ़्टवेयर, जो उपयोगकर्ताओं की फ़ाइलों का बैकअप ले सकता है. इसके अलावा, यह अन्य जगहों पर आसानी से काम भेजने या बाहरी टूल की मदद से फ़ाइलों में बदलाव करने के लिए भी इस्तेमाल किया जा सकता है. वे फ़ाइल सिस्टम ऐक्सेस एपीआई का इस्तेमाल, कई अन्य कामों के लिए भी करते हैं. जैसे, बैकअप फ़ोल्डर चुनना या ऐनिमेशन जैसी ऐसेट इंपोर्ट करना.

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

Construct के कुछ ग्राहक, सैकड़ों मेगाबाइट के बहुत बड़े प्रोजेक्ट पर काम करते हैं. इतना ज़्यादा काम एक फ़ाइल में सेव करने में काफ़ी समय लगता है. इसके बाद, उसे क्लाउड सेवा पर अपलोड करने में और भी ज़्यादा समय लगता है. फ़ाइल सिस्टम ऐक्सेस एपीआई की मदद से, बेहतर सुविधाओं वाले उपयोगकर्ता, किसी लोकल फ़ोल्डर में अलग-अलग फ़ाइलों में अपनी सभी ऐसेट के साथ काम कर सकते हैं. इससे फ़ाइलों को बहुत तेज़ी से सेव किया जा सकता है, क्योंकि सिर्फ़ बदली गई फ़ाइलों को अपडेट करना होता है.

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

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

Construct 3 का स्टार्ट पेज, जिसमें दो हाल ही के प्रोजेक्ट, tetris.c3p और columns.c3p हैं. सबसे नीचे DevTools में, IndexedDB में सीरियलाइज़ किए गए दो FileSystemFileHandle ऑब्जेक्ट दिख रहे हैं.

'खींचें और छोड़ें' सुविधा का इंटिग्रेशन

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

रिटायर्ड NW.js बिल्ड

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

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

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