見出し画像

【1人用DCG開発】カードテキストとログを実装した。

久しぶりのnote投稿になる。
忙しい日々が続いたが、noteに投稿せねばいけないという気持ちが開発を進ませた。

カードテキストは動的に

今回、カードテキストは動的に生成している。
カードテキストの文章は変化しないのに、何が動的なのかというと、
カード毎の固定文章を画面に表示するのではなく、効果データベースをもとに、カードテキストを作って、それを表示しているのだ。

ゲームの内部には、カードの効果を定義するデータベースが存在する。
わかりやすく示すと以下の通り。

≪魔道の弾丸≫
効果種類  : ダメージ
プレイヤー : 相手
範囲    : ユニット1体
選択    : 必須
効果値   : 3

このデータベースから、文字を組み立てていくのだ。そうすると
「相手プレイヤーのユニット1体を選択して、3ダメージ。」
というテキストができあがる。

画像1

カードゲームは、さまざまなカードのパラメータを何回も調整する。
なんなら、リリース後も調整することもよくある。
例えば、このカードの効果値を 3ダメージ から 4ダメージ に修正するにあたり、データベースの修正内容が正しく反映されているかはテストして確認するのだが、カードの効果は頭の中に入っているから、カードテキストが修正されているかを確認するのを忘れることが多い。
事実、以前自分が作成した自作戦闘のRPGでは、画面に出ている数値と実際の効果値が異なるといった指摘を何回か受けた。
確認漏れにより発生したバグなので、かなりくやしい。バグとして報告があがってくるのはまだ良いほうで、しばらく気づかないこともある。こんな愚かなバグが発生するたびに嫌な気持ちになってしまうため、動的に生成することにした。
実装するのに結構時間がかかっており、途中で動的生成なんてヤメればよかったと思いつつも実装した。

キーワード解説をどうするか

カードテキストに関連して、どう実装するか迷ったのが、キーワード解説だ。カードゲームは、固有の能力説明を省略してキーワードとして記載していることが多い。
例えば「場に出たときに召喚酔いせずに相手プレイヤーに攻撃できる」という能力は「疾走」というキーワードに省略される。
初めてプレイするユーザは「疾走」が何を意味するのかわからないし、ゲームによっては「速攻」といったキーワードになっているため、解説が必要になってくる。

シャドウバースは、キーワード能力に下線をつけて、クリック可能にしている。いわゆるハイパーリンクという形式だ。
クリックで別ウィンドウが出て、解説を見ながらカードテキストを読み解くことができる。

画像2

SlayTheSpireは、カードテキストの隣に常にキーワード解説ウィンドウを表示している。

画像3

自分のゲーム(Wyoming)では、当初はハイパーリンク形式にしようと思っていたが、標準でそういう機能がないため、自分で実装しようと検討した。
しかし、行をまたがったときの処理など、結構面倒くさそうな実装になりそうだったので、別の形式を検討。
結果として、右上にヘルプアイコンを表示して、それをクリックするとキーワード一覧が出て、一覧上のキーワードをクリックすると、元のウィンドウにキーワードの解説が出る形式にした。

画像4

シャドウバースやSlayTheSpireは、キーワードを選択せずとも解説は全部表示されるのだが、自分はキーワード一覧にトークンカードも一緒に入れているので、そうもいかなくなってしまったのだ。
若干使いずらいUIではあるが、慣れてくると使わない機能なので、許容範囲とみなしたい。

ログの表示

画像5

キーワード解説表示が固まったので、ログの表示にも着手。
カードテキストと方針は一緒にしたので、思ったより実装は楽だった。
考え方的にはメインのログテキストを出して、ログにカード名があれば右側の一覧に表示。右側一覧からカード名をクリックするとカード情報が表示されるという仕組み。
行動ログとは別タブで「破壊されたユニット一覧」も出すようにした。
当初は「破壊されたユニットはプレイヤー自身が覚えておいてね」というスタンスだったが、自分はシャドウバースでこの機能を頻繁に使っていることから実装した。

動画

今回実装した範囲の動画はこちら。
こんな短い動画なのだが、何日もかけて実装している。

まだまだ先は長いが、がんばって実装していく。

この記事が気に入ったらサポートをしてみませんか?