Logo Logo

/GET/ENTRIES/WORKS/570e1r020p

チェインズ preview

term: 2024.3

role: デモ版の実装

member: 1名

link: TBD

gh-repo: TBD

tags

system

skills

TypeScriptSvelteElectron

チェインズ

落ちコンカードゲーム「チェインズ」という企画に参加し、デモ版の実装を行いました。

企画概要

「チェインズ」は、手札のカードを条件に沿って連鎖(チェイン)させ、敵と戦う落ちコン型カードゲームです。カードをただ出すだけでなく、前に出したカードの属性やアクション値を条件として次のカードがつながる「チェイン」という独自の仕組みが戦略の核心となっています。

実装内容

デモ版は SvelteKit + TypeScript + Electron で構築しました。ゲームロジックの中心となる GameManager クラスを設計・実装し、プレイヤーと敵それぞれのデッキ・手札・ステータスを管理する状態機械として機能します。

チェイン処理は再帰的に実装しており、直前に出たカードを「親」として、手札から条件を満たす「子」カードを順番に探索し、自動的に連鎖させていきます。 条件の種類はカードタイプ・レアリティ・アクション値の大小比較・特定カードIDなど複数のパターンに対応しています。

敵 AI もシンプルながら実装しており、タイムアウトを使った非同期ターン処理によってプレイヤーの操作とスムーズに交互進行します。 ステージ・フェーズ構造も設計し、フェーズをクリアするごとに次の敵へ進む進行管理も組み込みました。

技術的なこだわり

Combatant インターフェースでプレイヤーと敵を共通の型として扱い、カードインスタンスには一意の instanceId を付与することで、同名カードが複数手札にある場合も個別に追跡できる設計にしました。 チュートリアル・デモ向けに手札を任意のカードセットで初期化するメソッドも用意しており、体験設計の柔軟性も確保しています。

また、UI 演出面では GSAP を用いてカードのドロー・プレイ・チェイン発動時のアニメーションを実装し、ゲームロジックと連動した動きで「つながっていく気持ちよさ」を感じられるよう工夫しました。