ハースライクDCGの構造研究のための実装実験#1

ここで言うハースライクDCGとは

  • 二人のプレイヤーが交互にターンを進行し、一方がプレイ中は他方が如何なる介入も出来ない。

  • ターンごとに、カードを使用するためのリソース値が基本的に1づつ増える。

  • 攻撃力と体力を持つカードを盤面に出して互いに殴り合い、相手プレイヤーの体力を0にした方が勝ち。

等の特徴を持つものとする。

何したい

いままで自作のDCGメカニクスを弄ってきたが、王道のメカニクスがどういう風に実装されるのか知っておくのも悪くはない。

そして研究が目的なので、ゼロから作る必要もない。だから題材として「ドラゴンクエストライバルズ」を模倣することにする。
俺がやったことのある唯一のHLDCGでもある(とはいえだいぶ忘れてるけど)
ただし、完コピを目指しているわけではない。

とりあえず

クライアントはGodot4
サーバもとりあえずGodot4
ただしクライアントとの接続はWebSocket
といういつもので。まあサーバーとクライアントを分けて処理する段階まで行くか不明だが。

プロジェクト名はとりあえず「Lievals」とする。

まずはクライアントとサーバ共通で持つカードの基礎データクラスを考えてみたが、こんなもんでいいか?

class_name CardData

enum CardType {ユニット,特技,武器}
enum Keyword {召喚時,死亡時,占い,攻撃時,テンションリンク,前列召喚時,におうだち,速攻,ねらい撃ち,二回攻撃,貫通,超貫通,メタルボディ,必殺技}
enum UnitStrain {なし,スライム,ゾンビ}
enum Pack {ベーシック,スタンダード}


var id : int
var name : String
var type : CardType
var cost : int
var attack : int
var hp : int
var keyword : Array[Keyword]
var strain : UnitStrain
var pack : Pack
var rarity : int
var text : String
var relation : Array[int]

カードの種類(このコードで言えばCardType)でクラス自体を分けることも考えたが、まあ複雑化のわりに大した利点もないかなと。
トークンかどうかはここには含めず、必要な時はIDのリストでチェックする。


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