籠城ゲーム(20)

今日はキャンペーンの話の展開を考えて書き出していました。チュートリアルで「城下町は壊滅した」「キャンペーンに続く」とか書いてましたけど、展開は今考えてます。外観の見た目を変更できる機能同様、シナリオも Steam Workshop 経由で作成したものを登録できるようにしようとしています。なので、キャンペーンのシナリオの良さとかにこだわるよりは「こういうシナリオを作れるんだな」というデモ的な意味合いも強いと思っています。

ただまぁ、私が自分で納得できるシナリオにする必要があるわけで、住民以外のモデルとか敵役に相当する人をどうやって表示するのかとかを考えたりもしています。色々と悩ましいです。

今日までの作業でキャンペーンの展開をだいたい書き出したので、次はキャンペーン用にどういうステージを作っていくかを決めていきたいと思います。

籠城ゲーム(19)

今日やったことは

  • キャンペーンで使う祭壇の実装を進めた。
  • 多門櫓の外観の変更ができなくなっていたのを修正した。
  • 建物セットのアップロードができなかったのを修正した。

です。
キャンペーンで使う祭壇は、敵と味方とで攻撃し合う対象である意味で RTS でのタワーラッシュに相当する遊び方になるのかな? と考えています。まだ遊んでないのでどうなるかあまり確信がないのです。なので細かい処理は後回しにして遊びながら詳細を詰めたいと思ってはいます。

それ以外の修正はいずれも不具合報告された件への対応なので、なんというか良くはないです。いや、報告自体は間違いなく嬉しいんですけど「あぁ、不具合を出してしまった。しかも自分で見つけられなかった」的なのは私には精神的にくるのです。まぁ、仕方ないです。

最近、開発自体は毎日しているのものの1日のうちで集中して開発できている時間が減ってきた気がしているので、それはなんとかしたいです。

籠城ゲーム(18)

ブログっぽい文章を書こうとすると継続できない気がしたので、レベルを下げてやったことと書きたいことだけ書こうと思います。この日記、実は 4/30 日に書いてて2日遅れだし。

今日やったことは

  • エンドレスモードでの住民の最大数の処理が間違っていたのを修正した。
  • キャンペーンで使う祭壇の処理を実装していた。

です。
住民の数については、住民が 80 人とかの単位で急に増加するバグでした。言い訳をすると、エンドレスモードとそれ以外で住民の最大数が 200 と 999 とで違っているのと、クリエイティブモードでは住民が常に最大数になる、とかいうあたりの理解が間違っていました。良くはないです。

それから「敵の数が増えたときに遅くなるのを改善しないとなー」とおぼろげに考えていました。いや、現状で敵ごとに経路探索しているのが遅い要因なのは知ってるので、ごりっと修正すればいいのですが動いている箇所を修正するのは気が重いのです。そのうちやろうと思います。

籠城ゲーム(17)

ブログを毎日書いていると日記の宿題で「きょうは、~をしました。~でした。楽しかったです」という内容がテンプレになっていたせいか「テンプレ日記だめでしょう?」と諭された件を思い出してしまいます。今となっては「日記は文学作品じゃないし、そもそも自由でいいはずだ」とか思います。さて、今日も趣味ゲー開発を自由にやっていきましょう。

今日やった修正は Steam のフォーラムで不具合報告された件、

  • 盛り土で資源を消費してなかったのを修正した。
  • 多門櫓にタレットを配置できるのを修正した。

です。
どっちの修正もソースコードをちゃんと読めば「どうしてこんな実装になってるんだ?」レベルのわかりやすい不具合だったのですが、気づかないもんです。市販されてる本にもちょくちょく誤植があるようなもの、と思って自分を慰めています。

あとは、見た目の改善をするならどういう風にするべきなんだろうか? と思いながら手持ちのゲームを起動したりもしました。

いろいろと違いすぎるんですけど、とりあえず平原に木があるのはかっこいいと思ったので Bonsai Castles にも木を取り入れたいなと思いました。そのうち実装します。

振り返って書いてみると「もっと色々と実装できたんじゃない?」と思わなくはないのですが、少しづつでいいので確実に実装を進めようと思います。

籠城ゲーム(16)

最初にぶっちゃけると、今日はなんか開発する気分じゃなくてダラダラしてたら1日が終わりました。でも、そういう日があってもいいと思います。

ただ、昨日の夜にバグ報告が来てたので、それの修正かを朝にやりました。報告によるとクリエイティブモードで爆発する敵が地形を壊したときに(本来次のフェーズで復旧するはずだが)破壊された地形が復旧しなかったらしい。やばい。

やったこと

  • 破壊された地形が復旧しない件のバグ修正を行った。
  • クリエイティブモードではタレットをノーコストで配置できるようにした。
  • 「タレットをドラッグ範囲に入れて Delete キーを押すとフリーズする」というバグにリリースしてから気付いたので修正した。

です。
リリース直後に不具合を見つけるのは精神的によくないです。他人に報告されるより良いですが。

思うようには進まなかったけど、進捗があるので今日もオッケーです。

籠城ゲーム(15)

今日はキャンペーンのシナリオを考えました。
まず前提として、私に神シナリオを書く文才はないです。でも、他人にお願いして書いて貰ったとしても満足できない自信はあります。なので、自分で書くしかないわけです。合言葉は「ないよりまし」です。

で、今日は展開を考えるために名シーンでのセリフを書き出してみました。そして現時点でのシナリオの展開は以下のようになりました。

  • 逃げなきゃ!
  • 力が欲しい…
  • 何がおきてるんだろう?
  • そうだったのか…
  • 反撃だ!
  • ゴンお前だったのか…
  • 追撃だ!
  • みんなを守りたい!
  • 俺また何かやっちゃいました?
  • 感動のエンディング

我ながら良いと思います。シナリオは引き続き内容を書いたりステージ案を考えたりしていこうと思います。

あとは、キャンペーンで祭壇を奪い合うモードの機能として、祭壇を奪い合うモードの「味方側の祭壇を敵が攻撃するあたり」の実装をしました。

今日の実装で、祭壇と拠点において敵の巣から近い順に攻撃するようになりました。良い感じです。後は敵の祭壇は敵が残っていれば無敵とか、敵の祭壇のクリープ上からは視野を取り除くとか、そういう実装しようと思います。

あと数日前に建物の外観を変更する機能を実装したところ、みんなが予想外の外観に設定して遊んでくれているようで嬉しい限りです。明日も引き続き実装していこうと思います。

籠城ゲーム(14)

今日は金曜日なせいか「うきうき気分」と「休みたい気分」と「開発は明日でいいじゃん?」がミックスしています。早朝に「外観の取り込み」が上手くいかなかったを修正して精神的に疲れてしまったのもあります。

とりあえず早朝に修正したバグの説明と対処を書きます。

バグの内容:外観の変更ができない。

こんな風にテクスチャが読み取れないような現象が発生していました。
これはテクスチャがおかしいだけでなく、この処理の途中でエラーでプログラムが例外を出力してしまっていたので、全体的に動作していません。

修正内容:利用しているシェーダーをリリースパッケージに含めていなかったのを含めた。

つまり、私が Unity 上では動作確認してたけれども、リリース用バイナリでは動作確認せずにリリースした、とうことなんですよね。大変良くないです。
同じ間違いをしないために、建物の登録についてリリース前に自動的にテストするようにしたいと思いました。いつかやります。

なんというか、リリース後のバグは大変くやしいです。

籠城ゲーム(13)

今回は引き続きキャンペーン用のゲームモードを実装していきます。具体的にはフィールド内のサブ拠点を奪い合う「制圧モード」です。

制圧モードでは、フィールドにある祭壇を味方と敵とで奪い合います。プレイヤーは敵の祭壇の近くにタレットや壁を並べて防衛フェーズになったら攻撃できるように準備する。敵は拠点や味方の祭壇で最も近い位置を攻撃目標にするみたいな処理にします。

まずは、祭壇を配置できるようにしました。

良い感じです。そして、次に敵の祭壇を味方タレットが攻撃するテストシーンを作りました。

動作したものがこれです。良いです。
最終的には敵の祭壇の周囲に追加の敵を配置したり、敵が残っているときには祭壇にはシールドを付与するとか考えていますが実装は後回しにします。遊びながらルールを決めようと思うので。

次回は「味方の祭壇を敵が攻撃する」というあたりの実装に着手します。そこが実装できたら、実際にキャンペーンを作成してゲームとして遊んでみようと思います。

籠城ゲーム(12)

昨日は無事に建物の外観を変更する機能をリリースできました。「良き」です。ただ、外観の作り方についてのガイドの英語版がまだとか、ガイドの改行位置が変だとか色々残りタスクがあるのは、いつかやります。

上記のツイートをしたので「今日の開発分はこれでいいかな?」と思いかけたのですが、こうやってブログに書いてみるとさすがにどうかと思ったので進捗を出すべく作業します。具体的にはキャンペーンのゲームのモードを実現するための実装内容の確認と、実装に着手、です。

  • 籠城モード … 現状のチュートリアルで実現できてるので、今の所は追加の実装は必要ない。ただ、チュートリアル後に実装した「飾り」を建築できてしまうのは抑制したい。
  • 撤退モード … ラウンドごとに住民の数を減らす修正を追加する。このモードではラウンドを経過する度に使える霊力総量、建築ポイントが減る中で「どのタレットを残すか」みたいなゲームにしたい。ただ、自由度を残したいので「この手順以外では勝てない」みたいな状態にはならないように注意する。
  • 制圧モード(陣地構築モード) … RTS でのタワーラッシュに近いモードにしたい。具体的にはフィールドには敵の出現ポイントとそこから広がるクリープがいくつかあり、それを奪取していく。手順はクリープ外で敵の出現ポイントを攻撃できる位置にタレットを並べる、タレットは敵ユニットを優先して攻撃するので敵ユニットを倒しきれたら初めて壊せる、みたいなルールにしたい。長くなるので別途書き出したい。
  • 潜入モード … 忍者モード。敵の支配下にある砦なり城塞なりに敵に見つからないように住民視点で移動して目的地まで移動する、みたいなのを考えている。ただ、私がアクションゲームが得意ではないので時間制限を付けるかどうか、見つかったときに最初からにするか、というあたりから悩んでいて色々と未定。
  • 攻城モード … 召喚した敵に攻撃させるモード。現状でも「攻城モード」としてプレイできるやつ。キャンペーンのシナリオでどういう状況で使うかが未定。

とりあえず、今日は制圧モードで使う建物を決めてエフェクトを調整した。

そして明日は

  • この建物の名称を決める。
  • この建物をマップエディタで建築できるようにする。
  • 敵と味方のどっちに属しているかの情報を建物ごとに持たせる。
  • タレットが敵に所属しているこの建物を攻撃するようにする。
  • 敵が味方に属しているこの建物を攻撃目標とするようにする。

とかを実装していこうと思う。現状で割とゲームのルールまわりの実装が複雑なのに、この要素を実装するとより複雑になりそうで気が重いです。

籠城ゲーム(11)

久しぶりにブログを書く決意をしたところ、前回のブログ更新から 10ヶ月くらいが経過していました。その間、籠城ゲームは Steam で販売を開始していろんな機能も実装できてはきたのですが、まだ完成していません。今日から改めて開発の進捗を記述していこうと思います。

今は建物の見た目を MagicaVoxel で作ったものに置き換えられる仕組みを実装しています。それでその機能自体は実装できたものの、変更前のサンプルとして配布予定の MagicaVoxel のデータである vox 作成に時間がかかっています。ぶっちゃけて言うとめんどいです

作成途中の天守閣の vox データ

単に見た目を作るだけでなくて「櫓門と石垣の上の櫓がそれっぽくつながるか」とか、そういうことを気にし始めると時間がかかって、いや、実際にやれば終わるんだけどそういう「時間がかかりそうなタスクなので着手したくない」という状態になって時間がかかっています。良くはないです。

しかしまぁ、ここまで愚痴った上に明日のブログに「何の成果もありませんでした!」と書きたくはないので、今からモデル作ります。なんだろな、100% の出来栄えを目指すと時間がかかるし着手するための心の準備コストも上がるので「あぁ、うん。成果がないよりましだよね」という状態を目指そうとしています。大抵のことは進捗がないよりはましなので。
「進捗がないよりまし」ということの例外としては「メンテコストが上がってしまうへぼいソースコード」なんかがありますけど、ソースコード作成についてはちょっとは自信があるので大丈夫です。

あ、書くのを忘れてましたがリリースした籠城ゲームはここから買えます。サラリーマンのお仕事で暮らせるだけのお金は入手できてるので精一杯の宣伝するつもりもなくて「近所でコンクールが開催されるから趣味でゲームを作っている私も出品してみた。興味があったら買ってね」くらいの気持ちで販売してます。
https://store.steampowered.com/app/1183480/Bonsai_Castles/

明日のブログでは vox データ作成の完了報告をしたいです。がんばります。