Show HN: Boardzilla, framework làm board game trên nền web
(boardzilla.io)- Boardzilla là một framework nhằm hạ thấp rào cản gia nhập trong việc tạo board game số, cho phép chơi và phát triển board game ngay trong trình duyệt
- Mục tiêu là để nhà phát triển biểu diễn luật chơi, còn người chơi xem các lựa chọn khả dụng thông qua giao diện đơn giản
- Các game mẫu được công khai gồm 7 Wonders Duel, Cursed, Dyngus Day, 27Panic, Hearts, Hex, Power Grid, Skirma, Stunt Kites và nhiều game khác
- Số người chơi được hỗ trợ tùy theo từng game, từ chơi đơn đến 4 người; 7 Wonders Duel, Hex, Skirma là game 2 người, còn Hearts là game 4 người
- Người dùng muốn tạo board game của riêng mình có thể bắt đầu phát triển thông qua tài liệu và trang giới thiệu được cung cấp
Những gì Boardzilla cung cấp
- Boardzilla là môi trường dựa trên web để dễ dàng tạo board game số
- Có thể chơi và phát triển board game ngay trong trình duyệt
- Giúp việc biểu diễn luật chơi trở nên dễ dàng hơn, đồng thời cung cấp cho người chơi các lựa chọn khả dụng qua giao diện đơn giản
Ví dụ về các game có thể chơi
- 7 Wonders Duel: 2 người
- Cursed: 1 người
- Dyngus Day: 1~4 người
- 27Panic: 2~4 người
- Hearts: 4 người
- Hex: 2 người
- Power Grid: 2~4 người
- Skirma: 2 người
- Stunt Kites: 1~2 người
Cách bắt đầu phát triển
- Người dùng muốn tạo game của riêng mình có thể bắt đầu tại tài liệu Boardzilla
- Giới thiệu về dịch vụ có thể xem tại What is Boardzilla
1 bình luận
Ý kiến trên Hacker News
Tôi cho rằng thông điệp nổi bật nhất trên landing page không nên là lời kêu gọi “tham gia Discord”
Nên để ví dụ và liên kết tới mã nguồn/tài liệu xuất hiện trước. Với những dự án kiểu này, nếu “tham gia Discord” bị nhấn quá mạnh thì cá nhân tôi lại thấy xa cách hơn. Chắc không chỉ mình tôi cảm thấy vậy
Tôi thực sự ghét Discord, trừ khi nó chỉ là một nền tảng giao tiếp tạm thời giữa bạn bè. Thế mà mọi người lại có xu hướng dùng Discord làm nền tảng chính không chỉ cho câu hỏi hỗ trợ mà cả tài liệu nữa. Chất lượng tìm kiếm thì kém, lại không được công cụ tìm kiếm lập chỉ mục, nên khi cần tìm cách giải quyết vấn đề thì đúng là tệ nhất
Trông hay đấy. Phạm vi tính năng rộng nên chắc có nhiều bộ phận chuyển động, khối lượng công việc hẳn rất lớn. Dù sao thì cũng đáng mừng khi có một game engine ít nhất tập trung vào game tabletop nhưng không chỉ tập trung vào riêng phần rendering
Tuy vậy, với tư cách là người đã làm game bài và xúc xắc có thể chơi online hoàn toàn bằng HTML/JavaScript thuần, tôi vẫn chưa hình dung rõ phải tái hiện điều tương tự bằng hệ thống này như thế nào. Xem tài liệu thì có hỗ trợ thẻ bài, và phần trừu tượng hóa có vẻ đủ tổng quát để hợp với nhiều loại game, nhưng sẽ rất hữu ích nếu có tutorial từng bước. Tôi hiểu vì sao lại chọn những abstraction như Actions, Flows, selections, conditions, prompts, nhưng nếu không thấy chúng được ghép lại thực tế ra sao thì rất khó nắm được mình phải chỉnh chỗ nào để đạt điều mình muốn. Cá nhân tôi thấy nếu không có tutorial thì khó mà tiến xa được
Piece: những thứ có thể nằm trong tay, di chuyển giữa cácPlayer, và được đặt lên các vùng (Space) trên bànBài và xúc xắc được định nghĩa bằng cách kế thừa
Piece, còn người chơi thì kế thừaPlayer, sau đó một thực thể kiểu Teller để quản lý bộ bài cũng có thể được xem làPlayer. Tiếp theo chỉ cần nghĩ xem sẽ bố trí các instanceSpacecần thiết cho luật chơi lên bàn như thế nào. Luật được đặt trong một instance của lớpGame, trong đó có khái niệm hành động là các instance của lớpAction. Hành động này nhận các đối số để định nghĩa prompt cho người dùng, điều kiện thực thi hợp lệ và hiệu ứng khi thực thi. Ngoài ra còn có khá nhiều hàm tiện ích quen thuộc để tìm quân cờ, so sánh, v.v., còn lại thì phụ thuộc vào logic của game. Nhìn vào ví dụ thì còn có cả hàm lọcSpacevàPiece, nên có vẻ có thể dựng logic UI khá nhanhhttps://docs.boardzilla.io/game/creating-a-game
Tốt hơn là đừng gắn *Zilla vào tên dự án. Chủ sở hữu bản quyền Godzilla được biết là theo đuổi khá quyết liệt những nơi muốn dùng hậu tố “Zilla”. Mozilla cũng đã học bài học này từ lâu và phải có một thỏa thuận riêng
Vụ nhãn hiệu duy nhất mà Toho thua là trước một công ty túi rác tên là ‘trashzilla’, và một phần lý do là vì nó không gây rủi ro cho lợi ích kinh doanh của Toho. Sửa: tôi chưa nhìn logo. Cái này thì đúng là có thể thành vấn đề
Đúng là đang dùng TypeScript+CSS. Tôi đã hy vọng máy chủ cho logic game sẽ hỗ trợ Python. Thời điểm hiện tại khá tốt, nhưng các nhà phát triển và nhà phát hành từng dùng BGA đang lo lắng vì mô hình kinh doanh của Asmodee
Stack của BGA Studio là JS/CSS + PHP (client và server) + MySQL [0]
Yucata.de dùng JS + HTML + .NET 4.5 ở phía server [1]
TTS dùng Lua, nhưng khi xem qua thì tôi thấy nó khá lạ và có nhiều giới hạn. Nó cũng không phải hướng đối tượng, nên tôi không hiểu vì sao lại chọn một ngôn ngữ không hướng đối tượng cho game board. Bài đánh giá site/framework năm 2021 “VassalEngine: Survey of other boardgame software” cũng rất hữu ích [2]
Sẽ thật tuyệt nếu có thể tích hợp với Python ở phía server
[0]: https://boardgamearena.com/doc/Studio
[1]: https://www.yucata.de/en/FAQ#t17
[2]: https://forum.vassalengine.org/t/survey-of-other-boardgame-s...
Ngay cả khi không có class, vẫn có thể lập trình hướng đối tượng [0]. Và việc kỳ vọng một nhà phát triển port rồi bảo trì toàn bộ dự án sang Python chỉ vì không muốn học một ngôn ngữ lập trình mới thì hơi quá đáng
[0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
Hay đấy. Tôi có rất nhiều prototype board game mà một ngày nào đó muốn làm thành game web, nên cũng từng viết thử một ít hàm thư viện tổng quát cho việc làm board game. Tôi dừng lại ở mức tạo lưới, tung xúc xắc tùy biến, rút bài, hàm tournament, các bài test để hiển thị nhiều kịch bản và vài thứ nữa, nhưng vì phải làm song song với các dự án khác nên có lẽ sẽ không bao giờ có thời gian làm cho ra hồn. Tôi nên xem thử thư viện này dễ dùng đến mức nào
Tôi đồng ý rằng việc học nền tảng BGA khá đau đầu. 1) bị khóa vào nền tảng nên không thể đưa game lên nơi khác, 2) mọi thứ đều là PHP nên giờ tôi không còn hứng dùng nữa, và 3) tài liệu bị phân tán khắp nơi, thậm chí còn có cả slide PowerPoint
Nếu bạn đang tìm thứ gì đó ở mức thấp hơn, tôi có thể giới thiệu boardgame.io
[1] https://boardgame.io/
Lĩnh vực này thực sự rất khó. Theo tôi, để thành công thì либо phải có một game thành hit ngay lập tức, либо phải đổ rất nhiều nỗ lực xây dựng cộng đồng để thu hút người chơi mỗi ngày suốt cả năm
Tôi đã thử vận may với https://acos.games vào thời kỳ đầu khi gần như chưa có lựa chọn thay thế BGA nào. Đến giờ tôi vẫn tiếp tục phát triển nó ở hậu trường mỗi khi rảnh. Thất bại lớn nhất là UI/UX. Mọi người không mấy quan tâm đến công nghệ hay ho ẩn phía sau
Trông rất tuyệt, và chúc mừng bạn đã khởi đầu
Nó có thể rất tốt cho việc phát triển prototype, nhưng để tạo ra một lựa chọn thay thế BGA thì bạn sẽ phải xin phép nhà phát hành để triển khai/phân phối game của họ. BGA quá lớn và lại thuộc sở hữu của Asmodee, nên có lẽ sẽ không dễ. Hy vọng là tôi sai
“Tóm lại, tên và logo có thể được bảo hộ bằng nhãn hiệu, artwork có bản quyền bảo vệ (bản thân bàn cờ cũng có thể được xem là artwork). Cơ chế, quy trình và luật chơi không thể được bảo hộ bằng bản quyền. Đó là lý do tồn tại các bản clone của Monopoly/Scrabble.”
https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
Ở đây họ dẫn chiếu đến video YouTube này
https://www.youtube.com/watch?v=iZQJQYqhAgY
Trông thực sự rất tuyệt. Rất mong được tự tay trải nghiệm
Mừng vì có lệnh luồng everyPlayer cho phép hành động đồng thời. Đây là tính năng còn thiếu ở những framework board game khác mà tôi từng dùng
[1]: https://docs.boardzilla.io/game/flow#everyplayer
Tất cả các game mẫu đều báo lỗi
Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)Stack trace như sau
su@https://www.boardzilla.io/build/_shared/chunk-ZEYFFM3P.js:16:114536Fs@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:9:128279Ch@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:11:180657Có vẻ cần thêm polyfill