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

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

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

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

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

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

कंस्ट्रक्शन 3 में फ़ाइल सिस्टम ऐक्सेस एपीआई

कंस्ट्रक्शन, 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 टाइप वाली .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;
}

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

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

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

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

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

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

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

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

NW.js बिल्ड का इस्तेमाल बंद कर दिया गया है

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

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

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