Cách trình chỉnh sửa trò chơi Cấu trúc 3 sử dụng API Truy cập hệ thống tệp để cho phép người dùng lưu trò chơi của họ

API Quyền truy cập vào hệ thống tệp cho phép các chức năng đọc, ghi và quản lý tệp. Tìm hiểu cách Construct 3 sử dụng API này.

Giới thiệu

(Bài viết này cũng được cung cấp dưới dạng video).

Construct 3 là một trình chỉnh sửa trò chơi do hai anh em Thomas và Ashley Gullen phát triển. Đối với phiên bản thứ ba hiện tại của trình chỉnh sửa trò chơi, hai phiên bản này "[đặt cược] vào trình duyệt là hệ điều hành mới" sau khi xây dựng cho Windows và NW.js trước đó. Bạn có thể xem một số trò chơi được phát triển bằng trình chỉnh sửa này bằng cách khám phá bản giới thiệu hoặc làm theo hướng dẫn tham quan. Nhờ sức mạnh của web, bạn cũng có thể nhấp vào bất kỳ ví dụ nào trong phần"Lấy cảm hứng" để bắt đầu chỉnh sửa ngay lập tức.

Ứng dụng Conbuild 3 cho thấy người dùng chỉnh sửa một trong các dự án khởi đầu.

API Truy cập hệ thống tệp trong Construct 3

Construct cung cấp tuỳ chọn lưu vào tệp cục bộ bằng File System Access API (API truy cập hệ thống tệp), cũng như lưu vào đám mây (Google Drive, OneDrive, Dropbox) và tải bản sao của tệp dự án xuống. Số liệu thống kê mà các nhà phát triển Construct đã thu thập cho thấy 65% lượt lưu được thực hiện bằng API Truy cập hệ thống tệp. Điều này cho thấy đây là API mà hầu hết khách hàng muốn sử dụng.

Để lưu, đoạn mã sau đây cho thấy mã ban đầu để lấy FileSystemFileHandle từ phương thức showSaveFilePicker(), sau đó dùng để lưu dữ liệu thực tế. Construct sử dụng tham số tuỳ chọn id. Bạn có thể chỉ định trường id để đề xuất thư mục mà bộ chọn tệp sẽ mở. Bằng cách chỉ định id, trình duyệt có thể ghi nhớ các thư mục khác nhau cho các mã nhận dạng khác nhau, giúp khởi động hộp thoại một cách nhất quán trong cùng một thư mục tuỳ thuộc vào mã nhận dạng. Ví dụ: tệp cấp độ có thể mở trong Documents/levels/, trong khi tệp kết cấu có thể mở trong Images/textures/. Tham số types là một mảng các loại tệp được hỗ trợ, trong đó description có hình ảnh người dùng đã bản địa hoá và một đối tượng accept yêu cầu hệ điều hành chỉ chấp nhận các tệp .c3p thuộc loại 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;
}

Nhóm Construct nhận thấy việc làm việc với các tệp trên hệ thống tệp của người dùng rất trực quan. Ứng dụng này hoạt động tương tự như các ứng dụng truyền thống dành cho máy tính và tích hợp thuận tiện với các phần mềm khác. Ví dụ: phần mềm sao lưu có thể sao lưu tệp của người dùng hoặc để dễ dàng gửi công việc đến các vị trí khác hoặc chỉnh sửa tệp bằng các công cụ bên ngoài. Các API này cũng sử dụng API Truy cập hệ thống tệp cho nhiều trường hợp sử dụng khác, chẳng hạn như chọn thư mục sao lưu hoặc nhập các thành phần như ảnh động.

Làm việc với các tệp và thư mục có kích thước lớn

Một số khách hàng của Construct làm việc với các dự án rất lớn, lên đến hàng trăm megabyte. Việc lưu một lượng lớn công việc vào một tệp sẽ rất chậm, chưa kể đến việc tải tệp đó lên một dịch vụ đám mây. API Quyền truy cập vào hệ thống tệp cho phép người dùng thành thạo làm việc với một thư mục cục bộ có tất cả tài sản của họ trong các tệp riêng biệt. Điều này cho phép lưu rất nhanh, vì chỉ cần cập nhật các tệp đã thay đổi.

Tiếp tục từ nơi bạn đã dừng lại

Cả tay cầm tệp và thư mục đều có thể được chuyển đổi tuần tự sang IndexedDB, cho phép Construct cung cấp danh sách dự án gần đây được duy trì qua các phiên, nhờ đó người dùng có thể truy cập lại vào cùng một tệp hoặc thư mục, rất thuận tiện cho người dùng. Trên thực tế, khoảng 30% tất cả dự án được mở trong Construct đều được mở theo cách này. Ảnh chụp màn hình sau đây cho thấy hai dự án gần đây, tetris.c3pcolumns.c3p, và trong cửa sổ DevTools, các đối tượng FileSystemFileHandle tương ứng được chuyển đổi tuần tự trong bảng IndexedDB.

Trang bắt đầu của Construct 3 với hai dự án gần đây, tetris.c3p và columns.c3p. Trên Công cụ cho nhà phát triển ở dưới cùng, hiển thị 2 đối tượng FileSystemFileHandle tương ứng được chuyển đổi tuần tự thành IndexedDB.

Tích hợp tính năng kéo và thả

API Truy cập hệ thống tệp cũng tích hợp với API Kéo và thả, nhờ đó, người dùng có thể kéo và thả tệp .c3p vào ứng dụng. Sau đó, thông qua phương thức getAsFileSystemHandle() trên đối tượng DataTransferItem, hàm tạo có thể lấy được FileSystemFileHandle, tức là bạn có thể chỉnh sửa và lưu các tệp được mở theo cách này ngay lập tức mà không cần phải qua hộp thoại lưu tệp riêng biệt.

Bản dựng NW.js đã ngừng hoạt động

Trước đây, nhóm đã có một bản dựng Xây dựng NW.js cần duy trì và cập nhật riêng để truy cập vào các tệp cục bộ. Sau khi Chromium thêm tính năng hỗ trợ cho API Truy cập hệ thống tệp trong phiên bản 84, các nhà phát triển Construct đã triển khai API này vào năm 2020. Nhờ đó, họ có thể ngừng sử dụng bản dựng NW.js và sử dụng trình duyệt này trên tất cả nền tảng. Điều này giúp đơn giản hoá quá trình phát triển và không cần phải gói công cụ trình duyệt với ứng dụng.

Kết luận

Construct sử dụng nhiều phương thức bộ chọn showOpenFilePicker(), showSaveFilePicker()showOpenDirectoryPicker() tương ứng để mang lại lợi ích cho những người dùng đã học cách phụ thuộc vào cách làm việc này với Construct. Ngoài ra, Conbuild còn sử dụng File handling API (API Xử lý tệp). API này cho phép Construct 3 tự đăng ký làm trình xử lý tệp (mặc định) của các tệp .c3p. Tức là người dùng có thể nhấp chuột vào hoặc nhấp chuột phải và mở bằng Xây dựng 3 các tệp trò chơi ngay từ trình khám phá tệp của hệ điều hành. Đặt cược hoàn toàn vào web, Construct sử dụng nhiều API trình duyệt hiện đại khác – như WebGL, Web Audio, Web Worker, WebAssembly, WebRTC cho trò chơi nhiều người chơi, Local Font Access, WebCodecs cho sản phẩm ảnh động mới và nhiều API khác. Mục tiêu của họ luôn là khai thác tối đa nền tảng web và cho thấy cách tạo ra những sản phẩm tuyệt vời dựa trên nền tảng đó. Vì vậy, hãy nhớ thử tham quan có hướng dẫn của họ và tạo trò chơi của riêng bạn.