3 điểm bởi GN⁺ 2024-01-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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ơiphá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

Cách bắt đầu phát triển

1 bình luận

 
GN⁺ 2024-01-30
Ý 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 cũng 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

    • Nhìn trong bối cảnh board game vật lý, cốt lõi có vẻ dựa trên hai lớp chính. Đó là cấu trúc xử lý Piece: những thứ có thể nằm trong tay, di chuyển giữa các Player, và được đặt lên các vùng (Space) trên bàn
      Bà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ừa Player, 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 instance Space cầ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ớp Game, trong đó có khái niệm hành động là các instance của lớp Action. 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ọc SpacePiece, nên có vẻ có thể dựng logic UI khá nhanh
    • Tôi muốn mở rộng tài liệu hơn nữa, nhưng việc đó rất tốn thời gian. Tôi hiểu rằng ngay cả những game trông đơn giản khi chuyển sang một API có khuôn mẫu cũng có thể gây ngợp. Không biết có giúp được không, nhưng tôi có quay video quá trình làm một phần của game
      https://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

    • Tôi hoàn toàn không biết chuyện đó. Tôi cũng đã chuẩn bị sẵn vài tên miền khác khá ổn, nên có lẽ giờ phải đưa ra quyết định thôi
    • Tôi không hiểu chuyện này có liên quan dù chỉ một chút nào đến Godzilla hay bản quyền của nó. Nó chẳng dính dáng gì đến một quái vật hạt nhân khổng lồ cả
      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 đề
    • Cái này khá bất ngờ. Tôi không biết bản quyền *Zilla lại bị thực thi mạnh tay đến vậy
    • Meta cũng tích cực thực thi nhãn hiệu đối với những bên nộp đơn đăng ký nhãn hiệu kết thúc bằng ‘book’
    • Revzilla và Partzilla cũng đã trải qua tranh chấp pháp lý kéo dài về cái tên *zilla
  • Đú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...

    • Về câu “vì sao lại chọn một ngôn ngữ không hướng đối tượng cho game board”, thì Lua vốn từ lâu đã là một lựa chọn khá phổ biến trong giới phát triển game. Một phần lý do là có thể dễ dàng nhúng ngôn ngữ script vào trong game
      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...
    • Lý do server không dùng Python là vì trong boardzilla, game không được biểu diễn hai lần cho client và server. Thay vào đó, nó được viết một lần bằng TypeScript, và đoạn mã đó thực sự được dùng ở cả server lẫn client. Client hoạt động như server nhưng không có thông tin bị ẩn
    • Tôi tò mò vì sao bạn lại muốn Python ở backend đến vậy. TypeScript là lựa chọn khá hợp lý vì nó chạy được ở backend và nhiều loại frontend khác nhau. Không chỉ web mà còn có thể dùng trong các game engine như Unity. Hệ thống kiểu của nó cũng tốt hơn Python
    • Tôi muốn biết mô hình kinh doanh của Asmodee là gì, và nó liên quan gì đến BGA
    • Bản thân TypeScript thì không có vấn đề gì, nhưng phần React khiến tôi lo ngại. Với frontend game, có lẽ người ta sẽ muốn thứ gì nhẹ hơn React như Svelte, Marko hoặc Solid?
  • 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/

    • boardgame.io cũng rất đáng để giới thiệu. Nicolo thực sự rất thân thiện và hay giúp đỡ. Bạn cũng nên xem qua dự án khác là https://boardgamelab.app/
  • 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 có vẻ được làm rất tốt. Tài liệu cũng được viết cực kỳ chỉn chu. Hiện tại tôi chưa có nhu cầu dùng, nhưng chỉ riêng việc đọc tài liệu để xem nó có thể làm được gì cũng đã thấy thú vị rồi. Tính năng quản lý trạng thái và phát lại ván game trông rất hay. Tôi cũng đang tự xây một bộ game, và chỉ riêng việc nghĩ đến chuyện làm hệ thống đủ linh hoạt để người khác tích hợp vào cũng đã thấy là một khối lượng công việc lớn. Công sức bạn bỏ ra thật đáng nể
  • 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ôi không phải chuyên gia pháp lý, nhưng có vẻ như cơ chế game không thuộc phạm vi được bảo hộ bản quyền, miễn là bạn không dùng cùng hình ảnh lá bài/bàn cờ hoặc sao chép nguyên văn sách luật
      “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
    • Tôi hoàn toàn đồng ý rằng trên thực tế Asmodee đã ngăn cản các đối thủ cạnh tranh thực sự gia nhập thị trường. Thay vì đối đầu trực diện với BGA, tôi đang nghĩ đến ý tưởng tập trung vào những game nhỏ hơn từ các nhà phát hành indie. Tôi không biết nó khả thi đến đâu, nhưng cũng không rõ còn nên làm gì khác nữa
  • 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:114536
    Fs@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:9:128279
    Ch@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:11:180657
    Có vẻ cần thêm polyfill

    • Đã thêm polyfill rồi. Nếu đã được sửa thì mong bạn báo lại
    • Tôi sẽ sớm thêm polyfill