Decker: tái hiện HyperCard bằng đồ họa 1-bit
(beyondloom.com)Giới thiệu nền tảng đa phương tiện Decker
- Decker là một nền tảng đa phương tiện để tạo và chia sẻ các tài liệu tương tác bao gồm âm thanh, hình ảnh, siêu văn bản và các hành vi kịch bản
- Có thể dùng thử ngay trong trình duyệt web
- Được xây dựng dựa trên di sản của HyperCard và mỹ học hình ảnh của MacOS cổ điển
- Vẫn giữ được sự đơn giản và dễ học mà HyperCard từng mang lại, đồng thời bổ sung nhiều cải tiến về khả năng sử dụng, từ tinh tế đến rõ rệt, như lịch sử hoàn tác sâu, hỗ trợ bánh xe cuộn và màn hình cảm ứng, điều hướng bàn phím hiện đại hơn và các tác vụ chỉnh sửa hàng loạt
Những việc có thể làm với Decker
- Bất kỳ ai cũng có thể dùng Decker để làm E-Zine, sắp xếp ghi chú, thuyết trình, tạo game phiêu lưu, vẽ nguệch ngoạc pixel art 1-bit, v.v.
- Tổng thể mỹ học "ditherpunk" mang lại cảm giác ấm cúng, hơi gợi hoài niệm, vui nhộn và tạo ra những giới hạn sáng tạo độc đáo
- Với vai trò là công cụ tạo mẫu, Decker khuyến khích cách tiếp cận mang tính phác thảo và chấp nhận sự chưa hoàn hảo
- Các deck hoàn thiện được lưu dưới dạng tài liệu
.htmlđộc lập, tự chạy trong trình duyệt web và có thể được chia sẻ ở bất kỳ đâu có thể host hoặc nhúng trang web - Decker cũng chạy native trên MacOS, Windows và Linux
Giới thiệu ngôn ngữ kịch bản Lil
- Với các dự án phức tạp hơn, Decker cung cấp một ngôn ngữ kịch bản mới tên là Lil
- Lil chịu ảnh hưởng mạnh từ Lua, một ngôn ngữ mệnh lệnh được dùng rộng rãi để nhúng vào công cụ và game engine, và Q, một ngôn ngữ hàm thuộc họ APL được dùng cùng cơ sở dữ liệu chuỗi thời gian
- Lil dễ học và vẫn đủ quen thuộc để không gây khó chịu cho người đã có kinh nghiệm lập trình, nhưng cũng có những bất ngờ thú vị như phép toán scalar-vector ngầm định và một ngôn ngữ truy vấn tích hợp tương tự SQL
- Chỉ với vài dòng Lil cũng có thể xử lý được rất nhiều việc
Các tính năng đa dạng của Decker
- Decker cung cấp các widget tương tác tích hợp để xây dựng giao diện, cũng như khả năng định nghĩa widget mới
- Các widget và định nghĩa tùy chỉnh có thể được sao chép và dán bằng clipboard hệ thống, đồng thời có thể chia sẻ ở bất cứ nơi nào có thể chia sẻ hoặc lưu văn bản
- Mọi deck đều là một hộp công cụ gồm các thành phần tái sử dụng có thể dùng lại trong các dự án khác
- Decker thân thiện với dòng lệnh. Khi build từ source, nó đi kèm Lilt, một trình thông dịch Lil độc lập, cho phép đọc, ghi, thao tác và thậm chí thực thi tài liệu Decker ở chế độ "headless"
- Do Lilt có ít phụ thuộc hơn đáng kể so với chính Decker, nó có thể được biên dịch thành APE đa nền tảng có thể thực thi, để viết các shell script chạy được ở mọi nơi
- Cũng có một trình thông dịch Lil chạy trên POSIX AWK
- Deck được lưu ở định dạng văn bản theo từng dòng, tương thích tốt với các công cụ quản lý mã nguồn hiện có như Git và SVN
Ví dụ sử dụng và module của Decker
- Phần "Examples" giới thiệu nhiều dự án ví dụ khác nhau sử dụng Decker
- Tour hướng dẫn Decker, 5GUIs, trình thông dịch CHIP-8, mọi thứ về Draggable, mọi thứ về âm thanh, game giải đố đẩy khối Sokoban, v.v.
- Phần "Modules" giới thiệu nhiều module plugin khác nhau dành cho Decker
- Plot: đồ thị đơn giản cho Decker
- Zazz: công cụ hỗ trợ hoạt ảnh cho Decker
- Ease: hàm easing cho Decker
- Dialogizer: modal visual novel cho Decker
- Puppeteer: hoạt ảnh sprite visual novel cho Decker
Tài liệu và tài nguyên bổ sung
- Có sẵn nhiều loại tài liệu như sổ tay tham chiếu Decker, định dạng tài liệu Decker, ngôn ngữ lập trình Lil, v.v.
- Cũng có các tài liệu để học Lil như học ngôn ngữ Lil trong 10 phút, sân chơi Lil, thẻ tham chiếu nhanh Lil, v.v.
- Có thể sử dụng mã nguồn và bug tracker trên GitHub
- Decker là phần mềm tự do và mã nguồn mở theo giấy phép MIT
- Các bản phát hành nhị phân định kỳ cho MacOS và Windows có trên Itch.io
- Trang Itch cũng có diễn đàn cộng đồng để thảo luận về Decker và chia sẻ các dự án được tạo bằng Decker
Ý kiến của GN⁺
-
Việc triển khai Decker bằng POSIX AWK là một thử nghiệm rất thú vị. AWK là ngôn ngữ kịch bản chuyên về xử lý văn bản, nên có vẻ là nền tảng phù hợp để hiện thực một ngôn ngữ kịch bản như Lil. Nhờ được triển khai bằng AWK, có lẽ nó cũng trở nên dễ port và dễ chạy trên nhiều nền tảng hơn.
-
Việc chọn định dạng lưu trữ của Decker là văn bản theo từng dòng có vẻ là một quyết định rất sáng suốt. Định dạng dựa trên văn bản tương thích tốt với VCS như Git, nên việc quản lý phiên bản trở nên dễ dàng hơn và cũng có thể theo dõi thay đổi bằng diff. Định dạng nhị phân có nhược điểm là dễ hỏng và khó quản lý phiên bản.
-
Triết lý thiết kế của Lil khá thú vị. Theo mô tả, nó chịu ảnh hưởng từ Lua và Q; Lua được dùng rộng rãi cho scripting game, còn Q là ngôn ngữ thuộc dòng APL chuyên về truy vấn cơ sở dữ liệu. Có vẻ Lil đã kết hợp ưu điểm của cả hai để tạo ra những đặc trưng riêng. Đặc biệt, các tính năng như phép toán scalar-vector hay cú pháp truy vấn tích hợp là những điểm khó thấy ở các ngôn ngữ hiện có.
-
Phạm vi ứng dụng như E-Zine, ghi chú, thuyết trình, game phiêu lưu, pixel art, v.v. có vẻ rất rộng. Có lẽ nó có thể được dùng trong nhiều lĩnh vực, từ ứng dụng phức tạp đến tài liệu đơn giản. Tuy vậy, vì mang tính đa dụng như thế, có thể nó sẽ thiếu một số tính năng so với các công cụ chuyên biệt cho từng lĩnh vực.
-
Giao diện theo phong cách Classic Mac OS cá nhân tôi thấy khá thích, nhưng với người dùng hiện đại thì có thể sẽ hơi quá hoài cổ. Sẽ hay hơn nếu có thêm tính năng skin để cung cấp cả các theme hiện đại. Với người dùng Windows hay Linux, đây cũng có thể là một kiểu giao diện hơi lạ lẫm.
1 bình luận
Ý kiến trên Hacker News
Chỉ cần chuyển nhẹ từ đồ họa 1-bit sang 2-bit là khả năng đọc ảnh có thể được cải thiện đáng kể. Ví dụ, solar.lowtechmagazine.com dùng tối đa 6 màu để tạo nên một thẩm mỹ rất đẹp.
Băn khoăn về cách đóng gói của Decker. Có người thắc mắc liệu dự án có đang cân nhắc cách làm như Redbean: gộp Lua, SQLite v.v. vào một tệp duy nhất, giải nén bằng zip, đưa mã HTML và Lua vào rồi chỉ đổi tên để phát hành hay không.
Decker trước đây đã vài lần được giới thiệu trên HN. 3 tháng trước đạt 191 điểm và 36 bình luận. 2 năm trước đạt 215 điểm và 88 bình luận.
Có lời khuyên nên tự thử dùng Decker. Kèm theo liên kết tới trang demo.
Có ý kiến cho rằng Decker gợi lại những ký ức ngọt ngào thời thơ ấu. Chỉ mong có thêm tính năng pinch-to-zoom trên di động.
Nhược điểm lớn nhất của HyperCard là đã không hỗ trợ màu khi Mac chuyển sang dùng màu. Hồi học cấp ba, toàn bộ máy Mac ở trường đều là máy màu, nhưng HyperCard thì không.
Có người nhớ lại việc từng dùng hệ thống điều hướng thông tin về tàu con thoi được làm bằng HyperCard trên NASA laserdisc ở trường. Khi đó không thấy quá ấn tượng, nhưng vẫn là một trải nghiệm tuyệt vời.
Decker trông giống HyperCard ở điểm đều dùng đồ họa 1-bit, nhưng cách sử dụng khá khác nhau. Người dùng phải học ngôn ngữ "Lil" khá đặc biệt, và nhiều tính năng tiện lợi của HyperCard/MacPaint cũng không còn, nên có thể khác với kỳ vọng. Các nghệ sĩ HyperCard vẫn có thể tiếp tục dùng HyperCard trong trình duyệt nhờ Infinite Mac.
Có ý kiến cho rằng Decker rất thú vị. Đồng thời cũng gợi ý Wyldcard, công cụ hỗ trợ lập trình bằng HyperTalk.
Có người thắc mắc vì sao Apple hay MS không nỗ lực hơn trong việc tạo ra các công cụ phát triển kiểu casual như thế này. VB và Python cũng tốt, nhưng sẽ hay hơn nếu có công cụ được tối ưu cho việc làm các ứng dụng nhỏ.
Rất nhiều tình cảm dành cho HyperCard. Dù không trực tiếp trải qua thời đó, người ta vẫn có cảm giác nó đã cho phép tạo ra những công cụ nhỏ mà hữu ích. Có vẻ nó đa dụng theo một cách khác với bảng tính.
Có người tò mò công cụ hiện đại nào có thể nắm bắt được cảm giác đó đối với những ai từng sống trong thời kỳ ấy. Thế hệ trẻ hơn một chút thì lại có hoài niệm với Delphi/VB, Flash — những công cụ tuy chưa hoàn hảo nhưng đã khơi gợi sáng tạo.
Công cụ ngày nay đã tốt hơn rất nhiều, nhưng trong quá trình đó dường như cũng đã đánh mất một điều gì đó.