Show HN: Webベースのボードゲーム制作フレームワーク、Boardzilla
(boardzilla.io)- Boardzillaは、ブラウザでボードゲームをプレイ・開発できるようにし、デジタルボードゲーム制作の参入障壁を下げることを目指すフレームワーク
- 開発者がゲームルールを表現し、プレイヤーが可能な選択肢をシンプルなインターフェースで確認できる流れを目指している
- 公開されているサンプルゲームには、7 Wonders Duel、Cursed、Dyngus Day、27Panic、Hearts、Hex、Power Grid、Skirma、Stunt Kitesなどがある
- ゲームごとの対応人数は1人用から4人用までさまざまで、7 Wonders Duel・Hex・Skirmaは2人用、Heartsは4人用
- 独自のボードゲームを作りたいユーザーは、提供されているドキュメントと紹介ページから開発を始められる
Boardzillaが提供するもの
- Boardzillaは、デジタルボードゲームを簡単に作るためのWebベース環境
- ブラウザ上でボードゲームをプレイし、開発できる
- ゲームルールを表現しやすくし、プレイヤーに可能な選択肢をシンプルなインターフェースで提示する
プレイ可能なゲーム例
- 7 Wonders Duel: 2人用
- Cursed: 1人用
- Dyngus Day: 1〜4人用
- 27Panic: 2〜4人用
- Hearts: 4人用
- Hex: 2人用
- Power Grid: 2〜4人用
- Skirma: 2人用
- Stunt Kites: 1〜2人用
開発を始める方法
- 独自ゲームを制作したいユーザーは、Boardzillaドキュメントから始められる
- サービス紹介はWhat is Boardzillaで確認できる
1件のコメント
Hacker News のコメント
ランディングページでいちばん目立つメッセージが 「Discord に参加」への誘導であるべきではないと思う
まずサンプルとソース/ドキュメントへのリンクが見えるべき。こういうプロジェクトで「Discord に参加」が強調されすぎていると、個人的にはむしろ距離を置きたくなる。自分だけではないと思う
Discord は、友人同士で使う一過性のコミュニケーションプラットフォームくらいならともかく、それ以外では本当に嫌い。なのに人々はサポート質問はもちろん、ドキュメントまで Discord を主要プラットフォームのように使おうとする傾向がある。検索品質も悪いし検索エンジンにもインデックスされないので、解決策を探さなければならないときには本当に最悪
良さそう。機能範囲が広くて動く部品も多いはずなので、かなりの作業量だったと思う。少なくとも、テーブルトップゲームに焦点を当てつつ、レンダリングそのものだけに焦点を当てていない ゲームエンジンがあるのはうれしい
ただ、カードとダイスのゲームを純粋な HTML/JavaScript でオンラインプレイ可能にした立場からすると、このシステムで同じものをどう再現すればよいのかはまだよく分からない。ドキュメントを見るとカードはサポートしているし、抽象化も十分に汎用的でさまざまなゲームに合いそうだが、ステップごとのチュートリアルがあると大いに助かりそう。Actions、Flows、selections、conditions、prompts といった抽象化をなぜ選んだのかは分かるが、実際に組み立てられていく様子を見ないと、自分が変更したい箇所をどこで変えればいいのか感覚がつかみにくい。チュートリアルなしでは、個人的には大きく前進するのは難しそう
Player)間を移動したり、テーブル上の空間(Space)に置かれたりするもの、つまりPieceを扱う構造カードとダイスは
Pieceを継承して定義し、プレイヤーはPlayerを継承させたうえで、デッキを管理する Teller のような存在もPlayerとして置ける。その次に、ルールに必要なSpaceインスタンスをボード上にどう配置するかを考えればよい。ルールはGameクラスのインスタンス内に入り、その中にはActionクラスのインスタンスであるアクションの概念がある。このアクションは、ユーザープロンプト、合法的に実行できる条件、実行効果を定義する引数を受け取る。それ以外にも、ピースの検索、比較、期待できそうな便利関数がかなりあり、残りはゲームロジック次第。サンプルを見るとSpaceとPieceをフィルタリングする関数もあるので、UI ロジックを素早く作れそうhttps://docs.boardzilla.io/game/creating-a-game
プロジェクト名に *Zilla を付けない方がいい。Godzilla の著作権保有者は、「Zilla」接尾辞を使おうとするところを積極的に追跡することで知られている。Mozilla もずっと前に教訓を得て、別途合意を結ぶ必要があった
Toho が敗訴した唯一の商標事件は、「trashzilla」というゴミ袋会社を相手にしたもので、Toho の事業上の利益に危険を及ぼさないという点も理由だった。追記:ロゴを見ていなかった。これは確かに問題になり得る
TypeScript+CSSを使っているんですね。ゲームロジック用サーバーでPythonをサポートしてくれることを期待していました。今はタイミングが良いです。BGAを使っていた開発者やパブリッシャーが、Asmodeeのビジネスモデルのせいで不安を感じているので。
BGA Studioのスタックは JS/CSS + PHP(クライアントとサーバー)+ MySQL です [0]
Yucata.de は JS + HTML + サーバー側の .NET 4.5 です [1]
TTSはLuaを使っていましたが、見たところ独特で制約が多いように見えました。オブジェクト指向ですらないのに、なぜボードゲームに非オブジェクト指向言語を選ぶのか分かりません。2021年のサイト/フレームワークレビュー「VassalEngine: Survey of other boardgame software」も役に立ちます [2]
サーバーでPythonと統合できるなら本当にうれしいです
[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...
クラスがなくてもオブジェクト指向プログラミングは可能です [0]。それに、新しいプログラミング言語を学びたくないという理由で、開発者にプロジェクト全体をPythonへ移植して保守してほしいと期待するのは無理があります
[0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
良いですね。いつかWebゲームにしたいボードゲームのプロトタイプがかなりたくさんあるので、ボードゲーム制作用の汎用ライブラリ関数を少し書いてみたことがあります。グリッド生成、カスタムダイスロール、カードのドロー、トーナメント関数、複数のシナリオを見せるテストなどいくつかで止まりましたが、他のプロジェクトと並行しているので、きちんと作る時間はなさそうです。このライブラリがどれくらい簡単に使えるのか、一度見てみたいです
BGAプラットフォームを学ぶのはかなり苦痛だという点には同意します。1) プラットフォームに縛られてゲームを他の場所に出せない、2) 全部PHPなので今となってはあまり使いたくない、3) ドキュメントがあちこちに散らばっていて、PowerPointの発表資料まで含まれている、という点です
もっと低レベルなものを探しているなら、boardgame.ioをおすすめできます
[1] https://boardgame.io/
この分野は本当に難しいです。成功するには、すぐにヒットするゲームがあるか、1年中毎日プレイヤーを集めるために相当なコミュニティ面の努力を注ぐ必要があると思います
BGAの代替がほとんどなかった初期に、https://acos.games で運試しをしてみました。今でも暇なときに裏で開発を続けています。最大の失敗はUI/UXでした。人々は裏側に隠れている素晴らしい技術にはあまり関心がありません
とても素晴らしく見えますし、スタートおめでとうございます
プロトタイプ開発には優れているかもしれませんが、BGAの代替を作るなら、パブリッシャーからゲームの実装/配布許可を得る必要があるでしょう。BGAは非常に大きく、Asmodeeの所有なので簡単ではなさそうです。私が間違っていることを願います
「要約すると、名前とロゴは商標で保護でき、アートには著作権があります(ボード自体もアートとして可能)。メカニクス、手順、ルールは著作権では保護できません。だからMonopoly/Scrabbleのクローンが存在します。」
https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
ここではこのYouTube動画を参照しています
https://www.youtube.com/watch?v=iZQJQYqhAgY
本当に素晴らしそう。実際に触ってみるのが楽しみ
同時アクションを可能にする everyPlayer フローコマンドがあってうれしい。自分が使ってみた他のボードゲームフレームワークには欠けていた機能
[1]: https://docs.boardzilla.io/game/flow#everyplayer
すべてのサンプルゲームでエラーが出る
Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)スタックトレースは次のとおり
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:180657ポリフィルを入れる必要がありそう