投稿記事

籠城ゲームの記事 (98)

竹林ソフト 2023/08/22 20:00

ねこ巫女籠城ゲーム開発(操作まわりの調整)

建築と防衛の最低限の実装ができたので、操作まわりで未実装になってたあたりを実装します。

実装したこと

操作キャラを切り替えたときに選択の枠も切り替わるようにする

ゲームの画面下にキャラ選択や操作のボタンがあって、操作キャラをキーボードの 1, 2, 3 キーで切り替えることはできていましたが、操作キャラの枠を切り替える処理が未実装だったので実装しました。

操作キャラを切り替えたときにカメラも切り替える

これは、3人いる操作キャラを切り替えたときに、切り替え元のカメラを無効にしてなかったのを修正したら動作するようになりました。よいです。

俯瞰カメラの位置姿勢がセーブされるようにする

セーブしてロードしたときに、カメラの位置姿勢が保存されるようにしました。
カメラの位置、オイラー角、ズーム値を保存するようにしました。

↓カメラ情報の保存を管理するクラス

↓実装後にカメラの位置姿勢を変えた保存後の読み込みが適切な様子

よいです。

マップ表示、俯瞰表示、三人称表示を切り替えるボタンを配置する

私は基本的にはキーボードだけで操作できればよい派なのですが、この開発では画面にもボタンを配置しようと思いました。ボタンがほしい人もいるので。あと、ボタンを用意すると、そのボタンにカーソルを合わせたときの Tooltip でショートカットを提示できるのはよいです。

そして実際にボタンを配置しようとして、画面全体の UI 配置を考えてなかったのに気付いたので決めます。

画面のどこに何を配置するか

  • 上: 住民の数とかの情報
  • 下: 操作ボタン
  • 左上: ゲームのクリア目標とかのメッセージ
  • 左下: だんだん消えるメッセージログ
  • 右下: カーソルを合わせた建物・ユニット情報の表示
  • 右上: ミニマップ、雑多なボタン

まぁ、基本的には Factorio を参考にします。そして、今回追加した視点変更のボタン3つがこれです。

この雑すぎる作業を「よい」と言い切れる自信がないですが、何も作業しないよりはましだと思います。ミニマップ表示するかどうか、とかを決めたらまた作業します。

マップ表示にキャラの位置を表示する

マップ表示に切り替えたときに、操作キャラや敵の位置も表示しようと思ったのですが、今回のやる気が尽きたので次の機会にやります。
「キャラの移動先を指示したときに(なるべく)キャラを直線に沿って移動させる」とか「日付とかを表示する UI を仮配置する」も次の機会にやります。

まとめと今後の予定

「これだけ着手するぞ!」と項目を書き出してみて、いくつかを後回しにしつつも操作キャラを切り替えたときのカメラ制御を適切にできたので大変よいです。今後も、開発中に操作してて「あー、これ未実装だったか」と繰り返し思ってしまう箇所は都度実装していきたいです。
次回は、敵が建物を攻撃したり避けて移動するあたりに着手しようと思います。がんばります。

竹林ソフト 2023/08/15 20:00

ねこ巫女籠城ゲーム開発(敵が攻めてくるあたり)

建築できるようになったので、次は敵が攻めてくるあたりの最低限の実装をやります。

何を実装するか

敵がどんな風に存在して どう攻めてくるかは正直ちゃんと考えてなくて、いざ実装しようとするとつらいものがあります。なので、本当にとりあえずでいいので仕様を決めていきます。

考えた仕様

  • 敵は巣から出てくる。巣はとりあえず手動でフィールドに配置する。
    • 「巣」と表現したが見た目をどうするかは後で決める。
  • 数日ごとに巣から敵がでてきて拠点に大攻勢をしかけてくる。
    • 大攻勢でないときに敵がどう行動してどう攻めてくるかは後で決める。

そして日付と時刻の概念の実装もめんどいので、なんか開発用の「敵が攻めてくる」ボタンを用意して、それを押したら巣から敵が攻めてくるようにします。

実装すること

とりあえず1つの巣から1体の敵が出てきて、本拠地に攻めてくるようにします。なので、実装で必要になるのは

  • 防衛すべき本拠地の定義
  • 本拠地までの敵の経路探索
  • 経路を敵が移動コストを反映させながら移動する。

とします。
敵が建物を攻撃したり壁を登ってくるのは後で追加します。

ただ、敵1体が目的地に移動するあたりは以前に実装したことがあるので、今回はそれのモジュール構成を見直して実装を組み直す作業になる予定です。

本拠地の定義

「本拠地は神社でしょ」という気持ちはあるのですが、建物の建築に時間がかかる仕様にしたいので、仮に神社を移築中に敵が大攻勢してくるタイミングになったらどうしよう? とかを考えて決めるのがめんどうです。なので「壊れてない建築済みの建物を本拠地にできる」という仕様にします。
とりあえず、セーブデータに「これが本拠地」という情報を追加しようとしたら実装済みでした。
敵の巣の位置はセーブデータ管理してなかったので追加してセーブとロードが行われるようにしました。

経路探索と敵の移動

普通に A* アルゴリズムの結果をもとに地面のタイルに「このタイルの上にいるユニットはこっちに移動する」という情報を定義して、敵ユニットがそれを参照して移動するようにします。

↓開発用の "Enemy Attack" ボタンを押したら敵が配置された様子

↓敵が下から2番めの拠点に移動している途中の様子

今の実装は、この記事で決めた仕様とは異なる挙動もあるのですが、とりあえず動作したので大変よいです。

まとめと今後の予定

移動コストや建物の有無を無視していますが、巣の位置に敵が配置され、そこから拠点に向かって移動するようになったので大変よいです。
次は、敵が移動コストを考慮して移動するあたりか、建築をワーカーが行うようにするあたりに着手しようと思います。がんばります。

竹林ソフト 2023/08/08 20:00

ねこ巫女籠城ゲーム開発(即座に建築させる)

ゲームを通してプレイできることを目標に実装していきます。

やること

大きめの目標を挙げると

  • 建築できるようにする。
  • 敵が攻めてくるようにする。
  • 敵を攻撃できるようにする。

でしょうか。
とりあえず、これらが動作することだけを目標にして、その後で追加実装していきます。

建築できるようにする

まず建築できるようにします。
最終的には住民であるワーカーや、操作キャラが召喚できるワーカーが資材を運搬して時間をかけて建築を完了するようにしますが、とりあえずは即座に建築が完了する仕組みにします。
すでに「建築指示を行う建築モード用のフィールド表示」と「建築済みのフィールド表示」は実装済みなので、建築モードで建築指示された建物を即座に建築済みにする処理を追加します。

↓建築予定の建物を即座に建築するコード

これで、建築モードで建築指示をしてから建築モードを抜けると、Workers.UpdateState() の処理によって、建築指示の建物が即座に建築されるようになりました。大変よいです。

↓ 建築予定の建物が建築された様子

今回の実装で行っているのは建物の処理のみです。そして、地形の変更も即座に行われるように実装を変更したものがこれです。

↓地形の編集も反映させるようにした後の様子

大変よいです。

敵が攻めてくるようにする

数日ごとに敵が定期的に攻めてくるようにします。この定期的に攻めてくる以外で、小規模の敵がうろつく仕組みにするかは後で考えます。

  • 敵が攻めてくる日時を決めて、敵の巣から敵が出現して攻め寄せてくるようにする。
    • とりあえず、巣から1体だけ敵が出てくるのでいい。
  • 敵は Cube でいい。
  • 敵は攻撃しなくてもいい。

まずは敵が拠点に移動してくることだけを目標にします。
ここまでの内容について、配置された移動する仕組みは実装済みなので、巣の概念と、敵が攻めてくる日時を管理するあたりを考えて次回以降に実装します。

ここまでの仕様で考えたこと

今回の実装をしていて仕様について考えたことを列挙します。

  • 敵が攻撃してきて負けたときに、ゲームオーバにするかどうか。
    - ゲームオーバーになるモードは、あってもいい。
    - 敵は、拠点にある何かを奪うのが目的ということにして負けてもいいことにする?
    - 「勝てなかったけど次がんばるか」と割り切れるデメリットはあった方がよさそう。
    - 敵の強さは防衛での勝敗、および街の開発具合(人口?)で変わるようにしたい。

  • 拠点で「寝る」ことで、プレイ時間をスキップできるようにする?
    - 遊べるようになってから再考する。

こんなふうに、ある仕様を決めたときに「本当にその仕様で大丈夫?」とか「その仕様にするなら、これはこうするべきだよね」みたいな検討は今後も定期的にやっていきます。

まとめと今後の予定

とりあえず何かしら実装が進んだのでよいです。次回は、敵が攻めてくる処理や味方の防衛ユニットについての何かしらの実装をしたいです。がんばります。

竹林ソフト 2023/08/01 20:00

ねこ巫女籠城ゲーム開発(マップ表示用のカメラの追加)

前回の記事でマップ表示のための画像生成まで実装しました。今回はマップ表示をして WASD 移動できるカメラを追加します。

実装することの確認

ゲーム中に M キーが押されたときにマップ表示に切り替わるようにします。
そして、このゲームはシングルプレイなので、マップ表示に切り替えたときには通常のフィールド描画は行わないようにします。これは、マップ表示以外のカメラを無効にして実現します。(Unity のカメラは Depth の値が大きい順に表示されるので、マップ表示のカメラの Depth を最も小さくなるようにしておく)

とりあえずのマップ切り替え

何も考えずに M キーの処理を追加して、エラーが出たら対応していきます。
そして、俯瞰表示と TPS 表示のそれぞれからマップ表示に切り替えて戻る操作まで動作しました。

大変よいです。

マップ表示で行う操作について

マップ表示中に行いたいことは

  • WASD で視点移動、ホイールでの拡大縮小。
  • フィールド、建物、敵味方の配置を見ていろいろ考える。
  • 操作キャラを 1, 2, 3 キーで切り替えて左クリックで移動先を指示する。
  • 建物のダメージ状況、攻撃できる射程の描画、などの各種情報を表示する。

です。
とりあえず WASD とホイールの処理を実装します。ただ、これは今俯瞰表示に使っている RTS / TOP DOWN CAMERA CONTROLLER アセットを使って実現します。このアセットで「回転しない」「真上からの角度固定」「ズームの範囲はこれ」くらいの設定をしてだいたい動くようになりました。

大変よいです。
あと、なんかマップ表示でズームしたときにマップ画像がぼやけていたのに気付いたのですが、filterMode を Point に設定したら修正できました。

sprite.texture.filterMode = FilterMode.Point;

↓修正前と後

よいと思います。

まとめと今後の予定

マップ表示して視点移動までが実装できました。大変よいです。
次回は、操作の微調整か建築まわりか NPC の実装のどれかに着手しようと思います。がんばります。

竹林ソフト 2023/07/25 20:00

ねこ巫女籠城ゲーム開発(どういうゲームにしたいか)

どういうゲームの方向性がありえるかを列挙して検討して、どういうゲームにするかを決めていきます。

このゲームで表現したいこと

今の呼称は「ねこ巫女籠城ゲーム」です。その名の通り、ねこ耳の巫女キャラがでてきて、日本の戦国時代な雰囲気で籠城するゲームを目指しています。
とりあえず「どういう城郭にするかを決められる築城要素」と「その城郭で闘う防衛要素」は必須です。

巫女なのは、ひげ面のおっさんキャラを作るくらいなら女性キャラにしたかったのと、不思議パワーが使えそうという理由からです。ねこ耳なのは「憑依させる動物によって能力や特性を変えよう!」という初期コンセプトがあったためですが、今はあまり気にしていません。でも、けも耳は残そうと思います。けも耳の巫女、いい響きだと思います。

そして、どういうゲームにしたいかを簡単に列挙すると

  • 自分で縄張りして築城した戦国時代風の城郭で防衛する。
  • 操作キャラが部隊を率いて防衛の援護、および門を開いて突撃できる。
  • 操作キャラで無双ゲーほどではない強さの戦闘ができる。
  • 資源とワーカーの作業時間が有限な状態で、どこから建築するかを決めていく。
  • 建物の並びの見栄えがそれなりによい。

となります。

自分の性癖全開で説明すると「射線を意識しまくった城郭を作って防衛したい!」「強固に作った城郭が壊れるさまを眺められる」「けも耳巫女、いいよね」です。

ゲームの方向性の書き出し

ここまでのゲーム要素について、やりたい理由とやらない方がよい理由を書き出してみます。

築城要素

👍 射線を意識する必要のあるゲームにして、どう射線を作るかを考えて築城できるゲームにしたい。
👎 必須、やる。

街づくり要素

👍 ワーカーが資材をはこんで時間をかけて建築するゲームが好きなので実現したい。
👎 上記の実装は複雑かつ処理が重くなりがちなので注意した方がいい。あと思った通りにワーカーが動かないと遊んでていらつきやすい。

建築時の操作キャラ要素

👍 ワーカーのもどかしさを自分がキャラを操作することで補えてよさそう。
👎 操作する必要があるとめんどうなのではないか? 操作が上手くないと楽しめないゲームになるとよくない。

防衛時に部隊を率いる要素

👍 固定砲台的な防衛ユニットは配置できるとして、操作キャラが防衛ユニットを率いて遊軍として防衛や突撃を行えると戦略の幅が広がるし、盤面を支配してる感を出せてよさそう。
👎 ちゃんと防衛ユニットがついてくるかとか、移動先で適切に戦闘するかとか、実装が複雑になりそう。途中に門があるときにどうする? 敵が門の前にいても自分達だけ開いた門から移動できてもいい?

無双ゲー要素

👍 操作キャラがかっこいいモーションで攻撃できたらいいよね。敵の部隊長との一騎打ちとか。
👎 かっこいいモーションを作る必要があって時間かかる。カメラワークとかカメラ制御とか大変そう。強い敵を倒せるだけのアクションゲームの上手さをプレイヤーに強要したくない。操作キャラだけで敵に勝てるのはよくなさそうで、バランス調整が難しそう。

ここまで書き出して考えたことは、

  • ワーカーがちまちま働く街づくりゲーはすっごい大変だけど、私が好きなので仕方がないからやってみる。とりあえず遊べるようになってから複雑な実装を取り込んでいくのがよさそう。
  • 部隊を率いる要素はほしいけど、無双ゲー要素は後からの追加でいい。

です。

まとめと今後の予定

今後も折を見て、こんな風にイメージを書き出して脳内で動作させながら仕様をはっきりさせていこうと思います。
資材の運搬に伴う経路探索の処理とか大変そうですが、順番にやっていこうと思います。あと、VRoid Studio のモデルより頭身の低いボクセルもでるの方が好きな気がしてきたので、そういうモデルも作っていこうと思います。がんばります。

月別アーカイブ

限定特典から探す

記事を検索