Oyun düzenleyici Construct 3, kullanıcıların oyunlarını kaydetmesine olanak tanımak için File System Access API'yi nasıl kullanıyor?

File System Access API, okuma, yazma ve dosya yönetimi özelliklerine olanak tanır. Construct 3'ün bu API'yi nasıl kullandığını öğrenin.

Giriş

(Bu makaleyi video olarak da inceleyebilirsiniz.)

Construct 3, Thomas ve Ashley Gullen kardeşler tarafından geliştirilmiş bir oyun düzenleyicisidir. Oyun düzenleyicilerinin üçüncü iterasyonunda, daha önce Windows ve NW.js için derledikten sonra iki "tarayıcının yeni işletim sistemi olacağını [bahis]. Düzenleyiciyle geliştirilen bazı oyunları incelemek için galerisini keşfedebilir veya rehberli turu inceleyebilirsiniz. Web'in süper güçleri sayesinde, "İlham alın" bölümündeki örneklerden birini tıklayıp hemen düzenlemeye başlayabilirsiniz.

Kullanıcının başlangıç projelerinden birini düzenlediğini gösteren Construct 3 uygulaması.

Construct 3'teki File System Access API

Construct, Dosya Sistemi Erişimi API'si ile yerel dosyalara kaydetme, bulutta kaydetme (Google Drive, OneDrive, Dropbox) ve proje dosyasının bir kopyasını indirme seçeneği sunar. Construct geliştiricilerinin topladığı istatistikler, kayıtların% 65'inin File System Access API ile yapıldığını gösteriyor. Bu da çoğu müşterinin bu API'yi kullanmak istediğini gösteriyor.

Aşağıdaki snippet'te, showSaveFilePicker() yönteminden FileSystemFileHandle elde etmek için kullanılan orijinal üretim kodu gösterilmektedir. Bu kod, gerçek verileri kaydetmek için kullanılır. Oluşturma işlemi, id seçenekleri parametresini kullanır. id alanı, dosya seçicinin açılacağı dizini önermek için belirtilebilir. Tarayıcı, id belirterek farklı kimlikler için farklı dizinleri hatırlayabilir. Bu sayede iletişim kutusu, kimliğe bağlı olarak tutarlı bir şekilde aynı dizinde başlatılır. Örneğin, seviye dosyaları Documents/levels/'te, doku dosyaları ise Images/textures/'te açılabilir. types parametresi, yerelleştirilmiş bir kullanıcı görseli description ve işletim sistemine başlangıçta yalnızca application/x-construct3-project MIME türüne sahip .c3p dosyalarını kabul etmesini söyleyen bir accept nesnesi içeren desteklenen dosya türleri dizisidir.

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 ekibi, kullanıcının dosya sisteminde dosyalarla çalışmanın çok sezgisel olduğunu fark etti. Geleneksel masaüstü uygulamalarına benzer şekilde çalışır ve diğer yazılımlarla kolayca entegre edilir. Örneğin, kullanıcı dosyalarının yedeklerini oluşturabilen yedekleme yazılımları, çalışmaları başka yerlere kolayca göndermek veya dosyaları harici araçlarla düzenlemek için kullanılan yazılımlar. Ayrıca, yedek klasör seçme veya animasyon gibi öğeleri içe aktarma gibi diğer çeşitli kullanım alanları için File System Access API'yi kullanırlar.

Büyük dosya ve klasörlerle çalışma

Construct'ın bazı müşterileri yüzlerce megabayt boyutunda çok büyük projelerle çalışır. Bu kadar büyük miktarda çalışmayı tek bir dosyaya kaydetmek, bir bulut hizmetine yüklemekten daha da yavaştır. File System Access API, ileri düzey kullanıcıların tüm öğelerinin ayrı dosyalarda bulunduğu yerel bir klasörle çalışmasını sağlar. Yalnızca değiştirilen dosyaların güncellenmesi gerektiğinden bu yöntemle çok hızlı kayıtlar yapabilirsiniz.

Kaldığınız yerden devam edin

Hem dosya hem de dizin tutamaçları IndexedDB'de serileştirilebilir. Bu sayede Construct, oturumlar arasında kalıcı olan son projeler listesini sağlayabilir. Böylece kullanıcılar aynı dosyaya veya klasöre tekrar erişebilir. Bu da kullanıcılar için büyük bir kolaylıktır. Aslında Construct'ta açılan tüm projelerin yaklaşık% 30'u bu şekilde açılır. Aşağıdaki ekran görüntüsünde, tetris.c3p ve columns.c3p adlı iki yeni proje ve DevTools penceresinde, bir IndexedDB tablosunda serileştirilmiş ilgili FileSystemFileHandle nesneleri gösterilmektedir.

Son iki projenin (tetris.c3p ve columns.c3p) yer aldığı Construct 3 başlangıç sayfası. Alttaki DevTools'ta, IndexedDB'de serileştirilmiş iki FileSystemFileHandle nesnesi gösterilmektedir.

Sürükle ve bırak entegrasyonu

File System Access API, Drag and Drop API ile de entegre olduğundan kullanıcılar .c3p dosyalarını uygulamaya sürükleyip bırakabilir. Ardından Construct, DataTransferItem nesnesinde getAsFileSystemHandle() yöntemi aracılığıyla bir FileSystemFileHandle elde edebilir. Bu sayede, bu şekilde açılan dosyalar ayrı bir dosya kaydetme iletişim kutusu açmak zorunda kalmadan hemen düzenlenip kaydedilebilir.

Kullanımdan kaldırılan NW.js derlemesi

Ekip daha önce, yerel dosyalara erişmek için ayrı olarak bakımı ve güncellenmesi gereken bir Construct NW.js derlemesine sahipti. Chromium, 84. sürümde File System Access API desteğini ekledikten sonra Construct geliştiricileri API'yi 2020'de uyguladı ve NW.js derlemesini kullanımdan kaldırarak tarayıcıyı tüm platformlarda kullanmaya başladı. Bu, geliştirme sürecini basitleştirir ve tarayıcı motorunu uygulamayla birlikte paketleme ihtiyacını ortadan kaldırır.

Sonuçlar

Construct, Construct ile bu çalışma şekline bağımlı hale gelen kullanıcılarının yararına olmak üzere sırasıyla showOpenFilePicker(), showSaveFilePicker() ve showOpenDirectoryPicker() seçici yöntemlerini yoğun şekilde kullanır. Ek bir avantaj olarak Construct, File Handling API'yi de kullanır. Bu API, Construct 3'ün kendisini .c3p dosyalarının (varsayılan) dosya işleyicisi olarak kaydetmesine olanak tanır. Bu sayede kullanıcı, oyun dosyalarını işletim sisteminin dosya gezgininden doğrudan çift tıklayarak veya sağ tıklayarak Construct 3 ile açabilir. Web'e tamamen odaklanan Construct, WebGL, Web Audio, Web Workers, WebAssembly, çok oyunculu oyunlar için WebRTC, yerel yazı tipi erişimi, yeni animasyon ürünleri için WebCodecs ve daha birçok modern tarayıcı API'sini kullanır. Her zaman web platformundan tam olarak yararlanmayı ve bu platformda nasıl harika ürünler geliştirilebileceğini göstermeyi amaçlayan Unity'nin rehberli turunu denemeyi ve kendi oyunlarınızı oluşturmayı unutmayın.