Decker: Tái hiện HyperCard bằng đồ họa 1-bit
(beyondloom.com)- Decker là một nền tảng đa phương tiện để tạo và chia sẻ âm thanh, hình ảnh, siêu văn bản và hành vi script trong một tài liệu, có thể trải nghiệm ngay trên trình duyệt
- Giữ lại cảm quan thị giác của HyperCard và classic MacOS, đồng thời bổ sung 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, cùng chỉnh sửa hàng loạt
- Có thể tạo các sản phẩm như E-Zine, ghi chú, bài thuyết trình, game phiêu lưu, pixel art 1-bit; deck hoàn thiện có thể lưu thành tài liệu
.htmlstandalone - Các dự án phức tạp có thể mở rộng bằng Lil, chịu ảnh hưởng từ Lua và Q; widget, chia sẻ qua clipboard và định dạng tài liệu dựa trên văn bản hỗ trợ tái sử dụng và quản lý phiên bản
- Là công cụ miễn phí, mã nguồn mở theo giấy phép MIT, không tích hợp quảng cáo, telemetry, game hóa hay slop-generator; cung cấp mã nguồn trên GitHub và bản binary qua Itch.io
Tạo tài liệu tương tác mang cảm hứng HyperCard
- Decker là một nền tảng đa phương tiện để tạo và chia sẻ tài liệu tương tác có âm thanh, hình ảnh, siêu văn bản và hành vi script
- Có thể trải nghiệm ngay trên trình duyệt web
- Kế thừa mỹ học thị giác của HyperCard và classic MacOS, đồng thời duy trì sự đơn giản và dễ học mà HyperCard từng mang lại
- Các cải tiến về khả dụng tập trung vào việc giữ lại cảm giác của những công cụ tạo nội dung dạng thẻ cũ, nhưng thích nghi với môi trường nhập liệu hiện đại
-
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
- Thao tác chỉnh sửa hàng loạt
- Ví dụ về những thứ có thể tạo rất đa dạng
- E-Zine
- Sắp xếp ghi chú
- Bài thuyết trình
- Game phiêu lưu
- Phác họa pixel art 1-bit
- Deck hoàn thiện có thể lưu thành tài liệu
.htmlstandalone tự chạy trong trình duyệt web, và có thể chia sẻ ở bất kỳ nơi nào cho phép host hoặc nhúng trang web - Decker cũng chạy native trên MacOS, Windows, BSD và Linux
-
Lil, widget và quy trình phát triển dựa trên văn bản
- Với các dự án phức tạp, có thể dùng ngôn ngữ scripting tên là Lil
- Lil chịu ảnh hưởng từ Lua, một ngôn ngữ mệnh lệnh được nhúng vào công cụ và game engine
- Nó cũng chịu ảnh hưởng từ 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
- Trong khi giữ cấu trúc quen thuộc với người dùng đã có kinh nghiệm lập trình, Lil bao gồm phép toán scalar-vector ngầm định và ngôn ngữ truy vấn tích hợp giống SQL
- Khi tạo giao diện, có thể dùng bộ widget tương tác tích hợp sẵn, và cũng có thể định nghĩa widget mới
- Widget tùy chỉnh và định nghĩa của chúng có thể được sao chép/dán qua clipboard hệ thống
- Ở bất kỳ nơi nào có thể chia sẻ hoặc lưu văn bản, cũng có thể chia sẻ widget tùy chỉnh
- Mỗi deck có thể được dùng như một bộ linh kiện tái sử dụng để đưa vào các dự án khác
- Khi build từ mã nguồn, nó đi kèm Lilt, một trình thông dịch Lil standalone
- Lilt có thể đọc, ghi, thao tác và chạy headless tài liệu Decker
- Lilt có ít phụ thuộc hơn Decker, nên có thể biên dịch thành file thực thi APE đa nền tảng
- Cũng có một trình thông dịch Lil chạy trên POSIX AWK
- Deck được lưu dưới dạng văn bản theo từng dòng, nên phối hợp tốt với các công cụ quản lý mã nguồn hiện có như Git, SVN
- Decker không có quảng cáo, telemetry, game hóa, tích hợp slop-generator, hay các yếu tố xâm phạm quyền riêng tư và quyền tự chủ của người dùng
Deck ví dụ và thư viện mở rộng
-
Deck ví dụ
- Decker: A Guided Tour: Tour hướng dẫn Decker
- 5GUIs: Ví dụ GUI
- Sokoban: A Block-Pushing Puzzle Game: Game giải đố đẩy khối
- Breakout: Three Ways: Ví dụ triển khai Breakout
- A CHIP-8 Interpreter: Trình thông dịch CHIP-8
- Gamepad Input Demo: Demo nhập liệu bằng gamepad
-
Thư viện
-
Tài liệu và tài nguyên học tập
- The Decker reference manual: Sổ tay tham chiếu Decker
- The Lil programming language: Tài liệu ngôn ngữ Lil
- The Decker document format: Định dạng tài liệu Decker
- Learn Lil in 10 Minutes: Tài liệu học nhanh Lil
- The Lil playground: Playground của Lil
- Lilt: the Lil Terminal: Terminal Lil
Mã nguồn, phân phối và cộng đồng
- Mã nguồn có thể duyệt và bug tracker nằm trên GitHub
- Decker là phần mềm miễn phí, mã nguồn mở theo giấy phép MIT
- Các bản phát hành binary định kỳ cho MacOS và Windows có thể tải từ Itch.io
- Trang Itch 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
- “Game Jams” theo chủ đề Decker được tổ chức hằng năm vào tháng 7 và tháng 12; sự kiện tiếp theo dự kiến là Decker Fantasy Camp, July 2026
1 bình luận
Ý kiến trên Hacker News
Đẹp thật! Tôi biết ở đây có một mỹ học mà dự án đang theo đuổi, nhưng nếu chỉ đi xa hơn đồ họa 1-bit một chút, sang đồ họa 2-bit, thì có lẽ cũng có thể có những bức ảnh thực sự đọc/nhìn được
Tôi có một trang yêu thích với mỹ học tương tự, ở đó mọi hình ảnh chỉ dùng tối đa 6 màu. Tuy nhiên, mỗi ảnh lại có bảng màu khác nhau: https://solar.lowtechmagazine.com/
Trên diễn đàn cộng đồng[0] có thảo luận về dithering và việc nhập ảnh màu, và người dùng đang tận dụng màu sắc để tạo ra những dự án[1] khá tuyệt
[0]: https://itch.io/t/2668739/16-color-dithered
[1]: https://crowmorbid.itch.io/desker-deckmonth
Cũng đừng quên tự thử nhé!
https://www.beyondloom.com/decker/tour.html
Nhìn cái này làm tôi nhớ lại những kỷ niệm ngọt ngào đến bất ngờ; chỉ mình tôi vậy sao? Điều tôi mong chỉ là trên di động có thể chụm để phóng to
Nhỏ đến mức không đọc được chữ, mà chụm để phóng to cũng bị chặn nên không thể nhìn gần hơn
Tôi tôn trọng lựa chọn của dự án này, nhưng cảm giác khiếm khuyết lớn nhất của HyperCard là không triển khai được màu sắc khi Mac bắt đầu chấp nhận màu
Hồi tôi học cấp ba, tất cả Mac ở trường đều là máy màu, nhưng HyperCard rốt cuộc vẫn không bao giờ có màu native thật sự
HyperCard không nhận được bản cập nhật màu native, và đó là tính năng mọi người mong muốn nhất
Có một công cụ liên quan, hình như là SuperCard, có hỗ trợ màu; tôi đã dùng thử nhưng thấy thô vụng. Tôi không nhớ chính xác vì sao, nhưng cuối cùng nó không cất cánh được
API hạn chế của HyperTalk cũng là vấn đề. Khi đó có một thị trường tiện ích mở rộng, và vài nhà phát triển đã thống trị mảng đó trong một thời gian. Không biết J5erson giờ ra sao. Người đó thực sự xuất sắc
Các tiện ích mở rộng thường được viết bằng Pascal và có thể bổ sung nhiều chức năng cho HyperTalk, nên chúng trở thành bệ phóng tốt cho những ai muốn khám phá lập trình xa hơn HyperCard
Decker có vẻ đã lấy được nhiều điểm mạnh của HyperCard như sự đơn giản và tính di động. Chỉ hơi tiếc là nó không dùng một ngôn ngữ gần với HyperTalk hơn. Ngôn ngữ đó tự thân nó thật sự khá ổn
Decker chủ yếu là 1-bit nên nhìn ngoài giống HyperCard, nhưng thực tế khác đến mức gần như phải học lại từ đầu
Nó khá khó dùng, bạn phải học Lil, một ngôn ngữ mới và độc đáo, và thiếu nhiều tiện ích mà bạn sẽ tìm nếu kỳ vọng HyperCard hay MacPaint
Kết quả là các nghệ sĩ HyperCard khó chuyển sang, và nhờ Infinite Mac họ tiếp tục dùng HyperCard trong trình duyệt. Rất gần mà cũng rất xa. Tương tự nhưng khác
Ở trường tôi có một LaserDisc của NASA chứa đầy thông tin về tàu con thoi
Nó được nối với một máy Mac chạy HyperCard để duyệt và hiển thị thông tin; khá tuyệt, nhưng có lẽ hồi đó tôi đã không biết trân trọng đúng mức
Cảm giác như multimedia thời kỳ đầu, trước làn sóng multimedia những năm 90 :-)
Tôi không hiểu vì sao Apple hay Microsoft không nỗ lực hơn để tạo các công cụ kiểu này trong hệ điều hành cho lập trình viên không chuyên
VB và Python cũng ổn, nhưng đôi khi ta thật sự cần một công cụ được thiết kế riêng để làm các ứng dụng nhỏ
Và SwiftUI cũng thuộc dạng dễ nhất có thể
Tuy vậy, để dùng Xcode và thiết lập đến App Store thì vẫn cần những cấu hình khó hiểu và một mức hiểu biết nhất định về IDE Xcode :-)
Có rất nhiều tình cảm dành cho HyperCard
Tôi không trực tiếp trải nghiệm, nhưng có vẻ nó đã giúp mọi người tạo ra rất nhiều công cụ nhỏ và hữu ích. Về tính đa dụng thì giống bảng tính, nhưng cảm giác cách dùng lại khác
Tôi tò mò với những người đã sống qua thời đó, công cụ hiện đại nào mang lại cảm giác ấy
Tôi thuộc thế hệ trẻ hơn một chút nên hoài niệm những công cụ như Delphi/VB hay Macromedia Flash. Chúng không hoàn hảo, nhưng đã kích thích sự sáng tạo
Công cụ ngày nay tốt hơn nhiều, nhưng có cảm giác trong quá trình đó ta đã đánh mất điều gì đó
HTML đã lấy đi rất nhiều thứ HyperCard từng cung cấp, nhưng các công cụ biên soạn web rốt cuộc chưa bao giờ dễ đến mức đó, và cũng không cung cấp được một tính năng của HyperCard: giao diện có hình thức và cảm giác nhất quán. Điều này có thể là ưu điểm hoặc nhược điểm, nhưng một số người dùng thích việc chỉ cần thêm hai nút trước/sau vào trang là có thể tạo một flipbook
Cũng có những người bắt đầu kinh doanh bằng cách đóng gói tài liệu giáo dục thành các stack HyperCard để bán
Ngôn ngữ lập trình HyperTalk không xuất sắc, và là kiểu ngôn ngữ mà dân hippie thích, nhưng người dùng trung bình vẫn lúng túng với nó chẳng kém gì khi nhìn C hay Pascal
Tôi luôn có cảm giác Apple đã cố kiểm soát quá mức những gì có thể làm với nó. Điều đó trái ngược với những gì tôi kỳ vọng ở một ngôn ngữ lập trình và các công cụ xung quanh nó
Nếu muốn biết cảm giác đó thế nào, hãy thử code một thứ gì đó bằng AppleScript
Tôi còn nhớ VB và các công cụ Macromedia, và cảm thấy công cụ ngày nay khó dùng hơn
Nhưng điều đáng tiếc là nó tạo ra một khoảng cách lớn giữa người tạo Flash và người tiêu thụ Flash. Một tinkerer có động lực có thể decompile .swf để chỉnh sửa, nhưng điều đó còn xa mô hình của HyperCard, nơi mọi người dùng đều có công cụ chỉnh sửa và mọi stack đều trở thành một tập hợp các bộ phận có thể tái sử dụng
Decker có thể export các deck độc lập “bị khóa” để ẩn trình chỉnh sửa, nhưng việc bật lại nó là chuyện nhỏ. Tôi từng thấy trường hợp được thiết kế để tự “mở khóa” sau khi hoàn thành trò chơi, và nghĩ đó là một phần thưởng khá hay
Ở nhiều mặt nó không khớp hoàn toàn với HyperCard, nhưng trong ba lĩnh vực liên quan thì nó là một ứng viên đặc biệt mạnh. Kích thước tải ban đầu nhỏ (<100MB), thời gian nạp/chạy ngắn, và hỗ trợ luồng phát triển lặp đi lặp lại, kiểu hack, rất hợp với giai đoạn khám phá ban đầu để tạo ra “một thứ gì đó chạy được”. GDScript cực kỳ phù hợp với việc này, và các bổ sung gần đây như kiểu dữ liệu tiệm tiến cũng giúp độ vững chắc tăng dần theo thời gian
Cách phân phối/cài đặt của Godot cũng rất mạnh. Ở mảng này, tôi nghĩ nó đi trước bất kỳ hệ sinh thái nào khác[0] nhiều năm ánh sáng. Bạn tải về export template cho nền tảng cần hỗ trợ, tức các file thực thi nhị phân phổ dụng theo từng nền tảng, rồi đóng gói và export mã cùng tài nguyên theo từng dự án là xong[1]
Hiện phần Godot bất ngờ thiếu nhất so với HyperCard hay Visual Basic “cổ điển” là tạo UI kéo-thả. Godot có hệ thống UI khá mạnh, nhưng đôi khi khó hiểu; trải nghiệm người dùng khi tạo UI hiện nay không phải là kéo widget từ thanh công cụ thả lên cửa sổ, mà buộc bạn phải rất ý thức về cây node của scene
Trải nghiệm người dùng này có vẻ có thể cải thiện tương đối dễ bằng Editor Plugin, và một ngày nào đó có thể tôi sẽ làm prototype cho cái hố thỏ đó :)
Không phải lời giải hoàn hảo, nhưng khi làm tiện ích dựa trên GUI ngày nay thì chắc chắn đó là lựa chọn mặc định của tôi. Trong số đó có vài cái tôi thực sự hoàn thiện đến mức “release” :D
[0] Ở điểm này, Python đặc biệt sụp đổ thảm hại
[1] Cũng có thể export WASM cho web, nên có thể phân phối theo hai nhánh: ban đầu mọi người dùng bản web của tiện ích, và nếu thấy đủ hữu ích thì tải thêm file thực thi local
Decker thật sự rất hay, và cực kỳ thú vị
Nếu đang tìm scripting kiểu HyperTalk, Wyldcard cũng đáng để thử
https://github.com/defano/wyldcard
Tôi bắt đầu đào sâu Decker sau khi nó được nhắc tới trong cuộc thảo luận tuần trước về các lựa chọn thay thế HyperCard
Tôi rất tò mò về việc đóng gói deck. Tôi thích cách như Redbean: bao gồm Lua, SQLite, v.v., tất cả nằm trong một file; có thể mở bằng công cụ zip, đưa HTML và mã Lua vào, chỉ đổi tên là sẵn sàng phân phối
Không biết Decker có đang cân nhắc kiểu phương thức như vậy để giúp việc phân phối dễ dàng hơn không