投稿記事

2024年 03月の記事 (22)

竹林ソフト 2024/03/31 20:00

再建を繰り返す街作りゲーム開発(ワーカーの実装に着手する)

ゲーム上でなんか動きがほしいので、ワーカーまわりの実装に着手します。

やること

ワーカーは、いろんな建物に配属されて運搬やクラフトを行います。
このゲームはワーカーどもが甲斐甲斐しく働くのを眺めて悦に浸るのも目的の1つなので、ワーカーがそれっぽく働くようにしたいです。

ワーカーの基本仕様

  • 自宅から仕事場に行く。
  • 気力があるかぎり働き続ける。
  • 気力がなくなったら市場によって食事して薪を自宅に持ち帰って寝る。

ワーカーの仕事について

  • 仕事場に必要な資材を集める。
    • 範囲内の資材を自動で集めたり、指定した建物から運んだりする。
    • 仕事場に資材が揃ったらクラフトして別の資材にする。

くらいです。
最初は「資材置き場」を実装しようと思います。

  • 建物: 資材置き場
  • 運搬元: 範囲内にある瓦礫
  • 変換: 瓦礫を建築資材にする

このゲームでは敵が攻めてきて建物の多くが瓦礫になるようにしたくて、資材置き場はその瓦礫を建築資材に戻すための建物です。

やったこと

いろいろな機能を後回しにしつつ、淡々と実装していきます。実装する要素は

  • フィールドにある瓦礫を資材置き場に割り当てる。
    • 探索する処理を実装する。
  • 仕事場に割り当てたワーカーが瓦礫を回収しにいくようにする。
  • ワーカーが仕事場でクラフトするようにする。

です。
なんというか、最初に動き出すまでの実装は重いです。

今回は「ワーカーが所定の場所まで移動する」という機能を実装します。これ自体は移動経路を与えて時間ごとに位置を変えるようにします。

移動の最初の実装

とりあえず List<Vector2Int> を与えるとその点列に沿って移動するコードを実装して動作させました。

↓ 実装したコード

↓ 動作した様子

よいです。
このキャラクター描画をアニメーションさせたり、移動している方向を向かせるのはまた後の作業でやります。

まとめと今後の予定

ワーカーをどうしたいかを検討して、与えた経路を移動するあたりまで実装しました。よいです。

私の作る街づくりゲーの基本的なシステム要素は

  • 建物を配置する操作まわり
  • ワーカーの制御
  • 建物の管理
  • 敵の侵攻と防衛

くらいで、どれもが微妙な小難しさです。
次回も、とりあえずはワーカーの制御を実装していこうと思います。がんばります。

竹林ソフト 2024/03/29 20:00

NPC をコーディングして領地経営するゲーム開発(3章をクリアできるようにしていく)

チュートリアルの最後の章である3章を見直していきます。

やったこと

城塞が常に矢を消費するのを修正した

城塞や砦は、敵軍が隣接しているときのみ矢を消費して攻撃する仕様なのですが、敵軍がいないのに矢を消費していました。

↓ 拠点と敵軍と攻撃しない兵士たち

調べたところ、アイテムに「これは防衛用だよ」という属性がなくなっていたので修正しました。よいです。

Done のエフェクトが再生され続けるのを修正した


左上の「タスクが終わったよ」のチェックが大きいので何が起きたのかと思ったのですが、タスクが終わったという条件が常に成り立ってエフェクトが再生され続けていました。
修正して適切に動作するようになりました。よいです。

NPC が働くときの向きを指定できるようにした

城塞の上の NPC が敵を攻撃するときに内側を向いているのに違和感があったので、アイテムに「外側を向いてワークする」という属性を指定できるようにしました。

↓ 外側を向いてワーク(防衛)している様子

この修正で、防衛以外は内側を向いてワークするようにもなりました。よいです。

まとめと今後の予定

今回の修正を行ったことで、チュートリアル第3章の全ステージがクリアできるのを確認できました。大変よいです。

次回は Python 対応や 3D 描画モード、ランダムステージ生成、MOD モードなどの未実装の機能を確認してどうするか考えてみようと思います。がんばります。

竹林ソフト 2024/03/27 20:00

NPC をコーディングして領地経営するゲーム開発(2章を見直していく)

私はメイン機能以外は後回しにするタイプなので、こういうブラッシュアップ期間は長くなりがちだし、それなりに作業がしんどいです。
とはいえ淡々と開発していきます。

やったこと

チュートリアルの第2章をクリアできるようにした

とりあえずクリアできるように、チュートリアル第2章の各ステージを修正しました。修正したことは

  • アイテム不足でクリアできないステージにアイテムを追加した。
  • わかりにくいクリア条件のテキストを修正した。
  • 魔法のエフェクトが描画されないのを修正した。

↓ 回復エフェクト(魔法攻撃)が再生されるようになった様子

このゲームは NPC の動作をコーディングするゲームで4倍速でもプレイできるので、調整後にクリアできるかの再検証はそこまで手間でなくて、よいです。

後回しにした気付き

プレイしていて気付いた点としては

  • 鎧を装備したときに効果音が鳴るようにしたい。
  • 鉱山がダンジョンかどうかを取得する API を追加して利用する。
  • 鉱山がダンジョンなときにアイテムを put できなくする。

とかです。
タスク管理ステムに登録しておいて、また後で着手しようと思います。

鉱山での採掘自体が適切に動作したのは、よいです。

まとめと今後の予定

今回はチュートリアルの第2章をクリアできるように調整し終わりました。よいです。

そして、久しぶりなせいかプレイしていて「あれ、このゲーム遊んでて楽しいのでは?」とか思えたのは大変よいです。

実はチュートリアル3章の最初のステージをクリアできるかも確認してみたのですが、適切に動作しなくてクリアできなかったので次回はそのあたりから再開します。がんばります。

竹林ソフト 2024/03/26 20:00

ニャン作くんのゲーム開発(タイピング用アセットの理解)

とりあえずタイピング用のアセットを購入したので、それを利用してみます。

やったこと

タイピング用アセットの理解

Typing Game in Japanese アセットを購入して使い方を確認しました。

みた感じ、タイピングで入力する例題には「漢字やカタカナを含んだ表示用の文字列」と「読みに相当する全てひらがなの文字列」をペアで与えればよいようです。
なんというか、本当にそれだけわかれば何とかなる よい作りでした。

最低限のゲームを作るためにやること

正直、タイピングまわりの動作が確認できれば技術的に難しいことはないです。
あとは

  • ゲーム画面のレイアウトを考えて作っていく。
  • 効果音やエフェクトを作り込んでいく。
  • 例題を考えて作っていく。
  • ニャン作くんのモデルを倍の解像度で作り直して使う。
    • 次も MagicaVoxel で作ってみる。

くらいでしょうか。
タスクを書き出してみると、あとは淡々と時間をかけて作業すればいいのがわかります。少しずつやっていこうと思います。

まとめと今後の予定

タイピング用アセットの動作確認をしました。
技術的な要素の動作確認はできたので、後は淡々と作っていこうと思います。がんばります。

竹林ソフト 2024/03/25 20:00

ねこ巫女籠城ゲーム開発(雑多な修正と石垣建築の続き)

石垣まわりの操作の実装が小難しくて手こずっていますが、着手して進めていきます。こまめに着手して進めて「次はこれに着手しないとなぁ」を更新していきたいです。
あとは、雑多な修正もやっていきます。

やったこと

ボタンのキー割当の表示について


現状ではボタンの左上に、キーショートカットがすごく小さく表示されています。
これについては
  • もうすこし大きく表示する。
  • UI 画像を決めて適用する。
  • 非表示にするオプションを追加する。

とか考えていますが、とりあえず大きくしました。

とりあえず文字が読めるようになりました。よいです。
ただ、このままサブのボタンを表示すると描画が重なってしまうのがわかりました。むつかしいですね。

いずれ、これら下から2段目のボタンを表示しているときにはメインのキー割当て表示を隠すようにしようと思います。そのうちやります。

見下ろしカメラの位置が保存されないのを修正する

調べたところ、ロード時に保存した値を適用した後に別の処理で値が上書きされていました。WASD でのカメラ視点と、TPS 操作時のカメラが異なっているあたりが関係していました。

そう思って修正していたら、そもそも保存すべき値も違っていました。
↓ 座標系の y と z を間違えていたコード

恥ずかしい…

こういう不具合は、私の心が折れそうになるのでやめてほしいと思いました。このコードを書いたのも私ですが。
ともあれ、動作が修正できたのは大変よいです。

石垣まわりの仕様

さて、本題の石垣まわりの修正をしていきます。
現状において未実装なのは

  • 石垣の高さを下げる操作まわり
  • 建築済みの石垣と建築予定の石垣の高さをわかるように描画するあたり
  • 石垣の端をクリックして直線を引く操作で石垣を配置するあたり

です。
そして、今からどういう修正を行うかですが着手前に言語化してみると

  • 建築モードの描画において、石垣は特別な処理が必要になる。
  • 建築予定の半透明の石垣の描画と建築済みの不透明での石垣の描画の2つを重ね合わせて行う。
  • 建築済みの石垣は、Raycast の対象にならないようにする。
  • 建築予定の建物については、削除予定の半透明の描画と建築予定の半透明の描画の2つが区別がつくように描画する。
    • 削除予定の半透明の描画の方は Raycast の対象にならないようにする。

でしょうか。
少しずつ実装していきます。追記すると

  • 建築モードを抜けるときには、建築予定の描画は非表示にして建築済みの表示にする。
  • 建築済みの表示の方の Raycast を有効にする。

です。

建築モードの石垣の描画を修正していく

とりあえず、石垣を建築したときに半透明と不透明の両方を描画するあたりに着手します。

↓ 建築モードのときには特別な処理をするためのコード

とりあえず着手しただけですが、着手前より進みました。よいです。

まとめと今後の予定

雑多なタスクに着手して、石垣についてどう実装する必要があるかをまとめました。
どうすべきか確認できて、漠然とした「めんどいな」が「~をする必要があるけどめんどいな」にランクアップしたので大変よいです。

次回も雑多なタスクに着手したり、石垣の実装を進めようと思います。がんばります。

« 1 2 3 4 5

月別アーカイブ

限定特典から探す

記事を検索