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

本日の進捗報告です。マリガンができるようになりました。明日からはようやくインゲームのメインループの実装に入っていきたいと思います。

  • デッキからカードを引く処理のアニメーションを追加しました。
    手札のそれぞれのカードの位置決めは HorizontalLayoutGroup で行っていましたが、ちょっと扱いずらいので将来的に自前で実装しようと思いました。
    現状デッキはすべて表向きの状態で置いていますが、あとで裏向きにしようと思います。
  • マリガン処理を実装
    いったん引いたカードをデッキに戻す → デッキをシャッフル → もう一度引く
    という一連の流れを View に反映させようとしたところで若干実装に手こずりました。View側でのアニメーション開始直後ではModel側ではマリガンの一連の流れが全て終わっているので、どうやって View でデータの流れを保持しようかなと悩みました。そこでModel側でシャッフル時点でのデッキの並び順の情報を持つシャッフルイベントを発火するようにしました。デッキにカードを戻す・デッキから引く操作に関してはModel側のデッキのカードのリストの変化を Subscribe し、アニメーションTaskの待ち行列に Enqueue することで実現しました。
    ただ、クライアント側でカードを引く前にデッキのカードの並び順を持たせたくないので、View側でのデッキのシャッフル処理は将来的に省く予定です。今はデバッグ用にデッキのカードを全表示しています。カードを引くタイミングでサーバから次のカードのインスタンスIDが送られてくる設計を想定しています。
  • 新規イラスト作成
    カードイラストが3枚だけではテストしていて味気なかったので、+3枚して6枚にしました。StableDiffusion で1000枚ほど生成して、3枚選びました。
    最近まであまり StableDiffusion を使っていませんでしたが、ようやくプロンプトの指定にも慣れてきた気がします。ただやはり指の生成は苦手で、今日は最大で8本指になりました。近いうちに指だけ修正する方法を試してみたいと思います。