【RTS + カードゲーム】ゲーム制作日誌 #6

今日も対戦画面の実装を進めていました。カードのマリガン機能を実装する予定でしたが、ゲームのメインループの記述に入るまでで手一杯でした。設計にそこそこ時間をかけた甲斐もあり、いまのところの実装では Model と View が綺麗に分離できていて良い感じです。とりあえず直近の目標ではオフラインで動かす想定でいますが、将来的にModel側のロジックはクライアントに何も持たせずに完全にサーバで計算させる予定なので、それを意識した実装をしていきたいと思います。明日はUnity非依存のコードを中心に書いていこうと思います。今週中にデッキから引いたカードをプレイして、勝敗判定ができるまで進めたいです。

以下進捗です。

  • そこそこソースの分量が多くなってきたのでUnityプロジェクトとその他設計ドキュメントを全てgit管理する設定をしました。
    gitの設定をすると Visual Studio で差分行の表示をしてくれるのでありがたいです。規模が大きい開発になる想定だったので開発1日目からgit管理すれば良かったです。
    そういえば エディタは Visual Studio 2022 を使っていますが、VSCode や Rider を使っても良かったかもしれません。Unity開発ではどちらも使ったことがありますが、最近 .NET の仕事をしすぎていてずっと Visual Studio ばかり使っていたせいか、何も考えずに Visual Studio を使うことになってしまいました。定期的にエディタの移行は検討していきたいです。
  • AutoHotKey の見直しをしました。直近フォーカスしている作業でウィンドウのアクティブ化のキーバインドを変えるのですが、現在は以下のような設定になっています。Atl + Tab より5000兆倍速いです。
  • ログ表示の仕組みの実装を行いました(左下)。Unity の LayoutGroup と ContentSizeFitter の設定が良く分からなくて若干時間が溶けてしまいました……。
    ログの要件としては以下の3つが挙げられます。1. に対応するために、ゲーム中の時間管理の仕組みも実装しました。2. と 3. に対応するために、ログを Enum で分類することにしました。
    1. 対戦の経過時間とメッセージを表示する
    2. ログの種類(カードプレイログ、イベントログなど)ごとに絞り込みできるようにする
    3. 重要なメッセージは色を変えられるようにする
  • ゲームの状態管理を行う仕組みを取り入れました。
    とりあえず以下の4状態を遷移するようにしました。こういう状態の命名は進行形にするかどうか迷います。
    • Starting
    • Mulligan
    • Playing
    • End