- Space Cadet Pinball đã được chuyển thành mã nguồn thông qua reverse engineering và có thể chạy trên nhiều nền tảng
- Trên Linux, cách cài dễ nhất là dùng Flatpak, đồng thời đã bao gồm cả tài nguyên game gốc từ Windows
- Nếu thay bằng dữ liệu của Full Tilt! Pinball thì có thể dùng độ phân giải 1024x768
- Dữ liệu Full Tilt cũng thay đổi luật chơi nên một số đèn sẽ không còn bật/tắt mà luôn sáng
- Với phần mềm độc quyền đã ngừng bán, cơ chế escrow để chuyển sang giấy phép FOSS là điều đáng mong muốn
Chạy Space Cadet Pinball trên Linux
Dùng dữ liệu Full Tilt để có độ phân giải cao hơn
- Đồ họa mặc định ở mức 480p nên có thể trông khá thô
- Dữ liệu game của phiên bản riêng là Full Tilt! Pinball hỗ trợ hiển thị ở độ phân giải 1024x768
- Có thể tải dữ liệu game Full Tilt từ file zip trên archive.org
- Để bản Flatpak dùng các file dữ liệu này, cần làm thủ công một chút
-
Quy trình áp dụng dữ liệu
- Trước tiên cần chạy game ít nhất một lần để tạo thư mục dữ liệu
- Giải nén trực tiếp file zip đã tải vào thư mục dữ liệu của Flatpak
cd ~/.var/app/com.github.k4zmu2a.spacecadetpinball/data/SpaceCadetPinball
unzip ~/Downloads/CADET.ZIP
- Xóa thư mục dữ liệu hiện có được bundle sẵn trong ứng dụng, hoặc nếu muốn cẩn thận hơn thì đổi tên nó
sudo rm -r $(flatpak info --show-location com.github.k4zmu2a.spacecadetpinball)/files/extra/Pinball
- Lý do phải xóa là vì game sẽ tìm dữ liệu ở nhiều vị trí, nhưng nếu đã tìm thấy file dữ liệu trong một thư mục thì nó sẽ không tìm tiếp ở nơi khác nữa
- Nếu là cài đặt theo từng người dùng thì có thể không cần
sudo, nhưng nếu vị trí cài đặt là /var/lib/flatpak thì sẽ cần quyền root
- Khi game được cập nhật, có thể phải lặp lại bước 3
- Tuy vậy, gói Flatpak đã hơn 2 năm không có cập nhật nên khả năng hoặc tần suất cập nhật có vẻ thấp
Khác biệt giữa dữ liệu gốc và dữ liệu Full Tilt
- Nếu giữ cả file gốc lẫn file Full Tilt, có thể chuyển đổi giữa dữ liệu 3DPB gốc và dữ liệu Full Tilt ngay trong game
- Có vẻ như các file dữ liệu cũng ảnh hưởng đến luật chơi
- Ở bản 3DPB gốc, các đèn của lane tái nhập và lane phóng bóng sẽ bật/tắt mỗi khi quả bóng đi qua
- Ở bản Full Tilt, các đèn này không còn bật/tắt mà sẽ luôn sáng, khiến việc hoàn tất một bộ đèn và nâng cấp bộ bumper liên kết trở nên dễ hơn
- Vào cùng thời kỳ đó, một số máy Mac có cài sẵn game Marble Blast, và cũng có những người gắn bó với nó theo cách tương tự
- Khác với game pinball này, dòng Marble Blast sau đó vẫn tiếp tục được mở rộng và hiện có các phiên bản mới hơn vẫn chơi được
Tính di động và bảo tồn
- Một game cũ đã được yêu thích đủ nhiều, đặc biệt nhờ có người đủ năng lực và động lực thực hiện, nên nay đã có thể chạy trên nhiều nền tảng
- Chỉ cần mã nguồn còn tồn tại dưới một hình thức nào đó thì đã có lợi thế lớn là có thể port game sang nhiều nền tảng khác nhau
- Nhờ dự án này, có vẻ game không chỉ chạy được trên Mac, Windows, Linux mà còn trên Android và Nintendo Switch
- Nếu có thể trả tiền cho nhà phát triển gốc thì vẫn muốn trả, nhưng vẫn có lo ngại về tính hợp pháp của việc tải dữ liệu game phiên bản Full Tilt
- Lý do là dữ liệu đó bao gồm art và dữ liệu có bản quyền nằm trong một sản phẩm thương mại
- Dù vẫn ưu tiên các thành phẩm theo giấy phép FOSS, thực tế không phải lúc nào cũng vận hành như vậy, và những người làm ra thứ tốt đẹp cần được đền đáp thì mới có thêm nhiều kết quả tốt hơn
Phần mềm độc quyền và escrow mã nguồn
- Bảo tồn phần mềm cũng là một mục tiêu quan trọng
- Lý tưởng nhất là những phần mềm độc quyền kiểu này nên có thể được đưa vào một dạng source code escrow
- Trong thời gian chủ sở hữu bản quyền gốc còn bán sản phẩm, quyền đó cần được tôn trọng
- Nhưng nếu họ đã chọn ngừng bán, thì cách làm đáng mong muốn là mã nguồn sẽ được chuyển sang giấy phép FOSS để người dùng có thể cải tiến và duy trì phần mềm mà họ đang sử dụng
- Cách tiếp cận này có thể giúp cân bằng giữa quyền của người sáng tạo, quyền của người dùng và mục tiêu bảo tồn
1 bình luận
Ý kiến trên Hacker News
Tôi là một trong những tác giả gốc của Space Cadet Pinball, và thật tuyệt khi vẫn có những người yêu thích trò pinball cũ này đến mức giữ nó sống mãi
Tôi định gửi bài này cho Mike Sandige (kỹ sư trưởng) và Kevin Gliner (nhà thiết kế kiêm quản lý sản phẩm), hai người bạn đồng sáng lập Cinematronics, và tôi nghĩ cả hai cũng sẽ vui như tôi khi đọc nó
Nhờ vậy mà chúng tôi đã có thể lập hẳn một giải pinball trong giờ học đánh máy ở cấp hai. Tôi cũng tò mò bạn phụ trách phần nào của trò chơi, và liệu có giai thoại thú vị nào trong lúc làm hay bug khó tìm nào không
Suốt sự nghiệp tôi vẫn nhớ khi ấy mình may mắn thế nào, và cảm ơn trò chơi đã giúp tôi không phát điên
Trò này đã ảnh hưởng lớn đến việc tôi bước vào thế giới pinball ngoài đời thật và chơi đến mức bán chuyên. Tôi luôn muốn hỏi liệu các bạn có ý định quay lại giai đoạn thiết kế để làm phần tiếp theo chính thức của Space Cadet Pinball không
Giữa thời đại bị game hóa ép buộc, vi thanh toán và các vấn đề giấy phép bất lợi cho người chơi pinball ảo, có lẽ nhiều thế hệ đang mong chờ kiểu hoài niệm này. Tôi đã nghĩ quá nhiều về chuyện đó nên nếu cần tôi cũng sẵn sàng dốc hết những gì mình có, nhưng trước hết tôi muốn nghe câu trả lời
Về sau có người mang theo Deluxe Skijump, Doom và Starcraft, nhưng Space Cadet vẫn luôn là một lựa chọn đủ tốt
Tôi là nhà thầu bên ngoài của Software Heritage, không biết họ có đang làm việc này không, nhưng tôi nghĩ đó là tổ chức lý tưởng để đảm nhận vai trò như vậy
https://www.softwareheritage.org/
Bản tái hiện này chính xác đến mức phi lý so với bản gốc, diện mạo và cảm giác chơi gần như y hệt
Tác giả làm được điều đó chỉ bằng cách dịch ngược file exe mà không hề xem mã nguồn gốc, nên về cơ bản là làm trong trạng thái mù hoàn toàn. Câu “đứa trẻ không nghe không nói không thấy nhưng chơi pinball cực đỉnh” đúng là rất hợp ở đây
Tôi định lát nữa ngồi lại trước máy tính sẽ tự thử xem bản này có làm được không, và sau khi cài bản AUR thì đúng là có thật. Nếu gõ “hidden test” trong lúc chạy chuỗi khởi động, bạn có thể kéo quả bóng
Dĩ nhiên, cũng có thể làm kiểu tương tự bằng cách nhờ Claude viết ra đặc tả từ mã đã disassemble
Xem GitHub thấy khá thú vị: https://github.com/k4zmu2a/SpaceCadetPinball
Nó đã được port lên nhiều hệ máy console và còn có cả bản chạy trên trình duyệt: https://pinball.alula.me/
Ngoài ra, tôi không biết rằng Space Cadet Pinball thực ra là một phần của game lớn hơn của Maxis là Full Tilt! Pinball. Windows 95 suýt nữa được bó kèm DOOM, nhưng cuối cùng bị từ chối theo kiểu “không thể là game như pinball à?”, và rồi mọi chuyện thành ra như thế này
https://en.wikipedia.org/wiki/Full_Tilt!_Pinball#Development
Năm ngoái tại Shopify chúng tôi đã làm một game pinball lấy cảm hứng từ Space Cadet, và bạn vẫn có thể chơi nó ở đây: https://bfcm.shopify.com/
Mỗi năm chúng tôi ra một trang web trực quan hóa doanh thu cửa hàng theo thời gian thực vào dịp Black Friday; ngày trước chỉ là một quả địa cầu hiển thị các cung chuyển động từ người bán sang người mua theo giao dịch thực tế. Vài năm gần đây chúng tôi đang biến website đó thành thứ vui hơn và có tính tương tác hơn
Lập trình máy pinball khá khó, và một nhóm gồm 2 kỹ sư và 1 họa sĩ đã làm trong khoảng một tháng rưỡi. Nếu tò mò nó hoạt động ra sao, chúng tôi đã để ghi chú quá trình ở chiếc máy tính để bàn cạnh máy pinball
Tôi thích việc bài viết có nhắc đến ký quỹ FLOSS cho mã nguồn ở phần cuối
Có lẽ sẽ khó triển khai về mặt pháp lý, nhưng ý tưởng phần mềm là mã nguồn đóng trong lúc còn bán, rồi tự động trở thành mã nguồn mở khi không còn được bán nữa, rất hấp dẫn từ góc nhìn người dùng hoặc người mua tiềm năng. Tệ nhất thì khi công ty phá sản hoặc hủy dự án, mức độ phụ thuộc cũng giảm đi
Nó gợi tôi nhớ đôi chút đến https://kde.org/community/whatiskde/kdefreeqtfoundation/
Thậm chí còn có công ty chuyên đứng ra làm trung gian cho việc này: https://www.escrowcompany.co/source-code-escrow/
Sau khi ngừng bán, chỉ cần hợp pháp hóa việc tái phân phối, decompile, reverse engineering và tái triển khai là tôi nghĩ đã đủ bao phủ rồi
Bản Full Tilt có cả multiball mà bản Windows không có
Bạn có thể khóa bóng bằng cách bắn vào wormhole khi hai đèn cùng màu, và khi khóa đủ 3 bóng thì nó sẽ bắt đầu
Nếu bạn thích Space Cadet thì tôi cũng rất khuyên thử Visual Pinball. Có rất nhiều game pinball hay hơn Space Cadet, và cũng có rất nhiều bàn pinball tuyệt vời do cộng đồng tạo ra miễn phí. Có điều hình như nó chỉ dành cho Windows. Các bàn được script bằng VBScript và PinMAME được nạp như một đối tượng COM
Nhân tiện, tôi đã hack thử một chút và thấy cách lập trình của Space Cadet khá cẩu thả. Trạng thái đèn phản ánh nguyên xi trạng thái game. Vì vậy nên có bug là nếu bạn mất bóng hoặc bắt đầu nhiệm vụ trong lúc đang phát hiệu ứng ánh sáng lên hạng, bạn có thể bị nhảy cấp
VPX giờ đã chạy được trên Linux, Mac, iOS và Android, nhờ công sức tiên phong của jsm174. Phần VBScript được xử lý bằng lượng Wine vừa đủ cần thiết, còn lại là native
Nó cũng hỗ trợ surround sound feedback (SSF), Direct Output Framework (DOF), và Pinup Popper packs (PUP Packs). GUI trước đây chỉ có trên Windows giờ cũng đã được tích hợp vào bản Windows/Mac/Linux qua ImGUI và có thể mở ngay khi đang chơi
Nếu muốn thử, chỉ cần đăng nhập GitHub rồi tải action mới nhất cho nền tảng của bạn [0]. Với người không dùng Windows, bản master mới nhất tốt hơn bản phát hành 10.8.0 từ năm ngoái vì khoảng cách tính năng với bản Windows đã được thu hẹp nhiều nhất. Hãy dùng bản BGFX có backend render đa luồng mới hỗ trợ Metal và Vulkan
Nếu muốn tìm hiểu thêm, nên xem Discord Virtual Pinball Chat [1] hoặc wiki [2]. Các nhà phát triển đã đầu tư rất nhiều công sức để biến VPX thành đa nền tảng, và kết quả thể hiện rất rõ. Tôi cũng đã làm một chiếc Pincab [3] dựa trên nó và nó thật sự xuất sắc
Ngoài ra, VPX hiện cũng được hỗ trợ trong Batocera, nhưng phiên bản VPX đi kèm ở đó đã khá cũ
[0] https://github.com/vpinball/vpinball/actions/workflows/vpinb...
[1] https://discord.gg/BhR9h5aWm
[2] https://github.com/dekay/vpinball-wiki/wiki/About-Visual-Pin...
[3] https://github.com/dekay/vpin-cabinet/
Nhưng càng chơi các game pinball khác, tôi càng phải công nhận bản thân Space Cadet là một game rất hay. Cảm giác điều khiển rất tốt và có nhiều yếu tố khiến người ta cứ muốn chơi tiếp
Tôi đã cố tìm những game pinball khác có thể đem lại mức độ vui tương đương, và gần nhất là Xenotitle với Demon's Tilt, nhưng chúng khó quen và khó chơi giỏi hơn. Lựa chọn tốt tiếp theo theo tôi là Yoku's Island Express
Đây không phải trò nên bị đánh giá thấp
Với Visual Pinball, có thể xem cái này: https://archive.org/details/vpinball-x-73-space-cadet / https://github.com/vpinball/vpinball
Có thể còn bản tốt hơn, nhưng bản JP chạy được ngay mà không cần cài một đống phần mềm khác rồi cấu hình thêm
https://youtube.com/results?search_query=JP%27s+Space+Cadet - https://youtu.be/UXfohCzilrQ
Cách người ta làm ra những bàn pinball kiểu này ngày nay thật đáng kinh ngạc
Có thêm nhiều bàn khác ở đây nữa:
https://vpforums.org/index.php?app=downloads&showcat=50
https://vpuniverse.com/files/category/82-vpx-pinball-tables
https://virtualpinballspreadsheet.github.io
https://nailbuster.com/wikipinup
https://archive.org/search?query=visual+pinball+tables
Trên Linux/Mac thì kiểu gì nó cũng treo hoặc crash, và dù bây giờ đang dần bớt bị trói buộc, nó vẫn là một dự án thiên về Windows
Có hàng trăm bàn chất lượng cao và mỗi tuần có hơn 12 bản phát hành mới. Có những bàn nguyên bản mới làm được những điều mà bàn pinball vật lý không thể làm, nhưng cũng có rất nhiều bản tái hiện công phu của những máy pinball thương mại huyền thoại từ thập niên 1950 đến 2000. Rất có thể chiếc bàn mà bạn nhớ từ thời thiếu niên đã được mô phỏng rồi
Giống như cách MAME bảo tồn game arcade trước khi chúng biến mất, cộng đồng VPin đang gìn giữ lịch sử để các thế hệ tương lai vẫn có thể thưởng thức những cỗ máy điện cơ này. Bên trong Visual Pinball, một phiên bản MAME chuyên biệt gọi là PinMAME sẽ giả lập ROM của máy pinball, còn Visual Pinball phụ trách render 3D và mô phỏng vật lý
Phần lớn mọi người chơi trên desktop bằng bàn phím, nhưng giống như một số người chơi MAME gắn thêm nút chuyên dụng, joystick hay cả tủ arcade, VPin cũng có thể chạy trong các cabinet trông như máy pinball thật. Ở vị trí playfield là một màn hình phẳng, với nút flipper và cả plunger thật để phóng quả bóng ảo
VPin cũng hỗ trợ âm thanh stereo, nhưng còn có thể dùng các kênh bổ sung từ đầu ra 7.1 của sound card PC thông thường để điều khiển subwoofer, bass shaker và tối đa 4 kênh phản hồi xúc giác theo vị trí. Tôi đã ngạc nhiên trước độ chính xác mà các transducer có thể tái tạo cảm giác như bumper và slingshot pinball thật đang hoạt động bên trong cabinet, thậm chí cả rung động nhỏ khi quả bóng kim loại lăn trên mặt gỗ playfield
Trong cabinet của tôi còn có cả solenoid flipper thật của máy pinball đặt ngay dưới vị trí flipper được render. Tủ VPin của tôi đặt trong phòng game cạnh 8 máy pinball thật và một tủ arcade MAME tùy chỉnh, nên tôi có thể bảo đảm cảm giác tổng thể rất gần với hàng thật
Nếu muốn thử Visual Pinball, tôi rất khuyên bắt đầu bằng trình cài tự động Pinup Popper mà @eahm đã liên kết ở trên: https://nailbuster.com/wikipinup/doku.php
Kết quả tuyệt vời này đến từ việc nhiều dự án phối hợp mượt mà với nhau, nhưng lúc đầu việc cài đúng thứ tự và đúng chỗ có thể hơi rối. Việc phải đọc tài liệu một chút ở lần cài đầu tiên hơi phiền, nhưng giờ tôi lại thấy việc nó không quá thân thiện kiểu one-click là một lợi thế. Nó đủ phức tạp để lọc bớt những người dùng ào vào hời hợt rồi spam, nhờ vậy mà một thú chơi miễn phí mang hơi hướng retro vẫn giữ được một cộng đồng giàu hiểu biết và mức độ gắn bó cao
Tôi thích ý tưởng ký quỹ mã nguồn, và cảm giác đây là lĩnh vực mà chính phủ quốc gia nên can thiệp
Nó làm tôi nghĩ đến cách British Library được yêu cầu lưu giữ bản sao của mọi cuốn sách đã xuất bản. Có lẽ hoàn toàn có thể có một đạo luật tương tự cho mã nguồn, chỉ nhằm mục đích bảo tồn thuần túy
Tôi cũng không thấy vấn đề gì nếu nó bị khóa trong một cái két mang tính biểu tượng và chỉ được mở ra sau khi đáp ứng một số điều kiện nhất định liên quan đến hỗ trợ và vòng đời của phần mềm. Dù điều kiện đó là “sau khi bản quyền gốc hết hạn”, tức hơn 70 năm sau, thì như vậy vẫn tốt hơn nhiều cho việc bảo tồn mã nguồn so với thực tế hiện nay. Có những game mà mã nguồn gốc đã biến mất chỉ chưa đầy 10 năm sau khi phát hành (Kingdom Hearts 1). Tôi nghĩ bất kỳ phương án nào cũng tốt hơn hiện trạng
Động lực dành cho người sáng tạo vốn đã quá thấp. Viết một cuốn sách thì nó nhanh chóng lên Anna's Archive và bị nghiền thành rác LLM để phục vụ lợi ích của đám Altman. Chia sẻ một bài phóng sự điều tra ở đây hay trên Reddit thì một trong những bình luận được upvote cao nhất thường là link vượt paywall
Đây đã giống kiểu cửa sổ vỡ của Bastiat rồi, khi động lực tạo ra tác phẩm mới đang suy giảm. Tôi không muốn làm tăng rủi ro tác phẩm của người làm phần mềm bị sao chép và tẩy trắng bản quyền dễ dàng hơn. Một kho lưu trữ của nhà nước sẽ là mục tiêu ngon ăn cho các tập đoàn nghìn tỷ
Nói riêng, với tư cách người làm reverse engineering retro, tôi rất đồng cảm với ý của tác giả về sự căng thẳng giữa nhu cầu bảo tồn phần mềm và nhu cầu đền đáp thỏa đáng cho người sáng tạo
Sắp tới họ sẽ tách game và dữ liệu ra, khi đó phần thứ hai sẽ dễ hơn và Flatpak tùy chỉnh có thể mở rộng dữ liệu
Flatpak vẫn nhận cập nhật để duy trì runtime mới nhất, nhưng game upstream thì không được cập nhật, và Flathub sẽ chỉ hiển thị dữ liệu appstream về cập nhật. Nếu xem kho manifest Flatpak thì commit mới nhất đã là từ 6 tháng trước: https://github.com/flathub/com.github.k4zmu2a.spacecadetpinb...
Tôi ước ai đó, như một dự án hobby hoặc ở cấp công ty, làm hẳn một bàn pinball Space Cadet ngoài đời thật
Tiện thể, tôi cũng muốn thấy một phiên bản thật của bàn pinball Sesame Street [2], nhưng đó có thể sẽ là dự án tham vọng hơn một chút
[1] - https://spacecadetpinball.wordpress.com
[2] - https://www.youtube.com/watch?v=JZshZp-cxKg
Có một đường chạy đi dưới bumper, trong khi bumper thật lại thò xuống khá sâu: https://files.catbox.moe/pnaeri.png
Hồi đó họ cũng định làm máy Halo, và chuyện đó cuối cùng cũng chẳng đi đến đâu luôn