はじめに
デジタルカードゲームを作るにあたって、CCG Kitを使用しましたが、いろいろ躓いたので記しておきます。

概要
CCGKitは、日本でいうデジタルカードゲーム(DCG)のテンプレートプロジェクトです。
同梱されている完成プロジェクトから、DCGを作るにあたっての設計や実装を参考にすることが出来ます。
また、通信にUNETを使用しており環境の構築も簡単になっています。
インストール
Unity version 2.17f1
- Unityで空の2Dプロジェクトを作成する。
- TextMeshProのセットアップを行う。

- Package ManagerからMultiplayer HLAPIをインストールする。

- アセットストアからDOTweenをインポートし、セットアップを行う。
- fullserializerをダウンロードしプロジェクトにインポートする。
fullserializerをダウンロード後、fullserializer-master/Assets/FullSerializer/Sourceをプロジェクトに入れる。(fullserializer-master/Assets/FullSerializer/Testingを入れるとエラーが発生する)

- CCG Kitをインポートする。
- ガイドに従いUnityMultiplayerをセットアップする。
デモ
Assets/CCGKit/Demoにデモ用のAssetが入っています。
Scenes/Homeからゲームをプレイすることが出来ます。
CCG Kit Editor
CCG Kitには、ルールやカードの編集用拡張エディタが付属しています。
デモのルールを編集するにはCCG Kit EditorのOpenから、Assets/CCGKit/Demo/Resourcesを選択します。

このCCG Kit Editorは基本的に拡張されることを念頭に置いており、そのままだと非常に狭い範囲でしか変更が出来ません。
また、既存の選択肢であっても、組み合わせによって重大なバグが発生することがあります。
追加のルールや動作を加えたい時には、自分でソースコードをいじる必要があります。
データの実態はAssets/CCGKit/Demo/Resources内の「card_definitions」「card_library」「card_types」「game_properties」「game_zones」「keywords」「player_stats」に保存されており、それぞれファイルを直接編集することもできます。
基本的には書いてある通りに設定していけば大丈夫ですが、いくつか注意点があるのでタブごとに書いていきます。
- Game configurationタブ
ゲームの流れを設定するタブです。
デフォルトでTurn start actionsにSet player statがあります。

UI上ではマナは10までしか表示されないにも関わらず、これだと11ターン以降で10マナを超えてしまいます。SetPlayerStatAction.csにMaxValue等のパラメータを追加し制限する必要があります。
- Game zonesタブ
カードの置き場を設定するタブです。
新しいGame zoneを追加する場合、各zoneからの移動処理には十分気を付けてください。安易にzoneを追加するとカードがゲーム画面に残り続けたりヌルポになったります。
- Playerタブ
プレイヤーにまつわるパラメータを管理する画面です。
- Card typesタブ
カードの種類をそれぞれ設定するタブです。
デフォルトではカードに必要なコストはCard statsになっていません。
自分でCard statsにマナを扱うパラメータを追加したほうがいいです。
一度パラメータを追加してしまうと、Card collectionタブの設定項目に追加されてしまうため注意してください。消す場合には、設定ファイルを自分で書き直す必要があります。
- Keywordsタブ
名前がついている効果を設定するタブです。
このタブでは名前を登録するだけで、効果自体は自分で実装する必要があります。
- Card collectionタブ
カードを管理するタブです。
おそらくCCGKitEditorで一番長い間開く画面だと思いますが、ずっと編集しているとどんどん動作が重くなっていくので定期的に開きなおしてください。
Textはリッチテキストであるため、太文字や色タグに対応しています。
Abilitiesには「Triggerd Abilitie」と「Activated Abilitie」がありますが、「Activated Abilitie」はUI上未実装であるため、自分で実装する必要があります。
Effect内に、MoveCardEffectがありますが、そのままだと自由に使うことが出来ません。Hand -> Graveyard のように設定すると、カードが手札に残ったままになってしまうため、実装が必要です。
バグ
UNETを使用している以上仕方がないのですが、とにかくメッセージが届かないことが多いです。どうしても気になる際はGameNetworkManager.csから、UNETのConnectQoSをReliableにしてあげると大分ましになります。
デフォルトのフォントだと日本語に対応していないため入れ替えてください。
基本的にカードの効果で複雑なことしようと思うとバグります。根気よく付き合いましょう。
以上です。カードゲーム作るのめちゃくちゃ楽しいので是非挑戦してください。
このアセットは定期的にセールされているため要チェックです。