めし独自視点

デュエスタを2ヶ月で作って学んだこと

クラシック専用ツールの設計記

執筆: めし / Duel Studio Classic 開発者

なぜクラシック専用ツールを作ろうと思ったか

デュエル・マスターズの「クラシック」 は、 公式が運営しているフォーマットではない。 プレイヤーコミュニティが、 基本編から戦国編あたりまでのカードプールを使って、 自分たちで作り上げてきた遊び方だ。 環境の固定された世界で、 カードの新規追加にビクビクしないで深く研究できる。 これがクラシックの最大の魅力で、 めしがハマった理由でもある。

ただし、 クラシック専用のツールはほとんどなかった。 既存のデッキ構築サイトはどれも最新環境前提で、 クラシックで使えないカードがレギュ判定なしで並ぶ。 「同じ名前のカードを4枚」 のチェックは出来ても、 「このセットは基本編で使えるか」 までは分からない。 「自分が欲しいツールは自分で作るしかない」 という、 個人開発の典型的な動機だった。

開発を始めたのは2026年の春先。 当時のめしは、 デュエル・マスターズ歴は長かったが、 React も Firebase も触ったことがなかった。 ポケカ用アプリを作っている友人「まえまん」 に技術を教わりながら、 まず2ヶ月で動くものを作る、 と決めて手を動かし始めた。

最初に作ったのは「一人回し」 だった

デッキ構築ツールを作るのが目的だったのに、 最初に手を付けたのは「一人回し」 (デッキの動きを一人で試す機能) だった。 理由はシンプルで、 デッキ構築ツールだけ作っても「組んだデッキが本当に回るか」 が確認できないからだ。

クラシックで遊ぶプレイヤーは、 みんな対戦相手不足に悩んでいる。 公式環境のプレイヤーは身近にいくらでもいるが、 クラシック専用の遊び相手はそう簡単に見つからない。 だから「一人で回せる」 ことの価値が、 他のTCGツールよりはるかに高い。 これは作りながら気付いた発見だった。

一人回しの実装で最初にぶつかったのは、 シールドのめくり順とS・トリガーの判定だ。 ルールブックには「シールドをブレイクされたとき、 そのカードがS・トリガーを持っていたら、 マナを使わずに使える」 と書いてある。 一見シンプルなのだが、 W・ブレイカーで2枚同時にブレイクされた時、 1枚目のS・トリガーで攻撃クリーチャーを除去したら、 2枚目はブレイクされないはずだ。 この「1枚ずつ処理」 をUIに落とし込むのが想像以上に難しかった。

クラシック特有のルールをどう実装したか

クラシック環境の再現で一番こだわったのは、 2017年のルール改訂前の挙動だ。 現行ルールでは、 W・ブレイカーは「複数枚まとめてブレイク → 全部手札に加えて → S・トリガーを順番に使う」 と処理される。 でもクラシックは旧ルールに従い、 「1枚ずつブレイク → S・トリガーをその都度処理 → 解決後に次の1枚」 という流れだ。

この違いは見た目には小さいが、 戦略上は大きい。 例えば、 1枚目のS・トリガーで攻撃クリーチャーを破壊できれば、 2枚目以降はブレイクされない。 「シールドが1枚しかない状況での逆転」 がクラシックの醍醐味であり、 これを再現できないツールはクラシック専用とは呼べない。 めしは設定でルールを切り替えられるようにして、 ユーザーが自分の遊んでいる環境に合わせられる形にした。

召喚酔いの処理もシンプルなようで面倒だ。 「召喚したターンのクリーチャーは攻撃できない」 という単純な規則だが、 スピードアタッカー、 進化クリーチャーの召喚酔い解除、 ターンをまたいだ時の判定、 と細かいケースが多い。 内部的には「召喚されたターン番号」 を各クリーチャーに持たせて、 ターンが進むごとに判定する形にした。 一見オーバーキルだが、 後から「召喚酔いを無視する効果」 を実装するときに役立った。

カード効果を1枚ずつ自動化する難しさ

デュエスタの一人回しは、 マナ自動タップや自動ターンエンドといった便利機能を備えている。 これらは「決められたルールに従って機械的に処理する」 だけで作れる。 問題は、 個別のカード効果を自動化することだ。

例えば「相手のクリーチャーを1体破壊する」 という呪文を考えると、 「相手のクリーチャー全部に選択ボタンを出して、 選んだ1体を墓地に送る」 という流れになる。 これだけなら難しくない。 だが「コスト3以下のクリーチャーを1体破壊」 になると、 選択肢を絞り込むロジックが要る。 「相手の自然文明クリーチャー1体を選び、 山札の下に送る」 になると、 文明判定 + 移動先指定が必要だ。

クラシック環境だけで使えるカードを数えても、 500種類以上ある。 それを全部自動化するのは、 個人開発では現実的じゃない。 だからめしは、 「マニュアルモード」 と「フル自動モード」 を切り分けることにした。 自動で出来る範囲はフル自動で楽に、 複雑な効果はマニュアルで自分で操作する。 完璧を目指さないことが、 動くものを出すための鍵だった。

テスターからの問い合わせが財産になった

開発を始めて1ヶ月くらいの頃から、 知り合いのクラシックプレイヤーに使ってもらい始めた。 これが本当に大きかった。 自分一人で作っていると、 「自分が知っているデッキ」 「自分が試したカード」 しか考慮できない。 でもテスターは、 めしが知らないデッキを組み、 めしが想定していない操作をする。

印象的だったのは、 あるテスターが「マナのタップ忘れがよくあるから、 自動タップを設定できないか」 と言ってきたことだ。 めしは自分でプレイする時マナを正確にタップする癖があったので、 自動化の必要性を感じていなかった。 でも実装してみたら、 圧倒的に便利だった。 ユーザーが言わなければ気付かなかった改善が、 たくさん見つかった。

バグ報告も貴重だった。 「特定のカードを出した瞬間に画面が固まる」 「シールドを5枚以上にすると枠からはみ出す」 みたいな指摘は、 自分のプレイスタイルでは出会わないものばかりだ。 個人開発で品質を上げるには、 早めにテスターを巻き込むのが一番確実だと改めて思う。

これから作りたいもの

2ヶ月で「一人回し」 「デッキ構築」 「デッキ共有」 まで作って、 今は対戦記録や大会運営ツールに手を広げている。 やりたいことはまだまだあるが、 個人開発で大事なのは「やらないこと」 を決めることだと思う。 全部やろうとすると、 結局なに一つ完成しない。

これからクラシックの世界に入る人にとって、 デュエスタが「クラシックを始める入り口」 になれたら嬉しい。 公式環境より敷居が低く、 環境が固定されているから安心して研究できる。 そんなクラシックの良さを、 ツール越しに伝えていきたい。

開発記はこれからも書き溜めていく予定だ。 失敗談も成功談も、 同じように個人開発をする人の参考になればと思う。

本記事は Duel Studio Classic (デュエスタ) の運営が独自に書き下ろした非公式の解説です。 株式会社タカラトミー、 株式会社ウィザーズ・オブ・ザ・コースト、 株式会社小学館をはじめとする「デュエル・マスターズ」関連の権利者・公式団体とは一切関係ありません。

記事中に登場するカード名・能力テキスト・固有名詞などの著作権・商標権はすべて当該権利者に帰属します。 本記事ではカード画像の使用は行っていません。

©Wizards of the Coast LLC.