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-bindgenwasm-ffi)。wasmは数MBになる。
  • Module 単位で機能合成: distributable(カード配布)/selectable(選択)/turnable(ターン)。
  • 関数の可搬性とGame肥大化が課題 → State のみを共有する方針。スクリプティングは rhai。
  • 構想: Deck(トランプ等のリソース)を公開し、その上にロジック(大富豪等)を載せる。人生ゲームの盤面もカード集合で表現できる。

リアルタイム共同編集

  • Yjs(CRDTアルゴリズム、near real-time協調編集)や automerge(CRDTのnpm)。リッチエディタ Lexical とも組み合わせられる。
  • セキュリティ: eval を使うとプロトタイプ汚染攻撃の的になるため対策が要る(web-browser-security)。

関連