cdfy (カードゲームプラットフォーム)
自作の汎用テーブルゲーム/カードゲームプラットフォーム。プラグインで遊び方を追加できる。_moc-web-infra
アーキテクチャ
- 要件: WebSocket + API Server。コア部分を WebAssembly にしておきデスクトップ/アプリ化しやすく(Tauri, Flutter wasm)。
- DB: supabase / Prisma、API Server: axum + GraphQL、Front: Next.js + Recoil。
プラグイン設計
ゲームロジックをWebAssemblyプラグインとして書き、イベントハンドラとして呼ぶ。
- 隔離性と多言語対応のためWebAssemblyを採用(
fp-bindgen、wasm-ffi)。wasmは数MBになる。 - Module 単位で機能合成:
distributable(カード配布)/selectable(選択)/turnable(ターン)。 - 関数の可搬性とGame肥大化が課題 → State のみを共有する方針。スクリプティングは rhai。
- 構想: Deck(トランプ等のリソース)を公開し、その上にロジック(大富豪等)を載せる。人生ゲームの盤面もカード集合で表現できる。
リアルタイム共同編集
- Yjs(CRDTアルゴリズム、near real-time協調編集)や automerge(CRDTのnpm)。リッチエディタ Lexical とも組み合わせられる。
- セキュリティ: eval を使うとプロトタイプ汚染攻撃の的になるため対策が要る(web-browser-security)。