投稿記事

コーディングの記事 (87)

竹林ソフト 2023/03/24 20:00

NPC をコーディングして領地経営するゲーム開発(小さなタスクを終わらせていく)

今回はチケット管理システムで管理しているチケット数を減らすために、気付いたり小さなことや、やれば終わるタスクに着手します。

対処したタスクたち


↑この改行位置だと 1 と 2 の文字が分かれて読みづらくなっていました。
12 の前にスペースを入れてそこで改行されやすくして対処しました。


↑エラーメッセージを表示する Tooltip 中の文字が中央寄せになっていました。
とりあえず左寄せにしました。


↑砦の画像を変更しました。


↑もろもろ表示されると砦と視認しにくくなるけどオッケーだと思います。


↑粉挽き所の画像を変更しました。


↑ギルドの画像を変更しました。


↑杭の画像を変更しました。違和感が少し減りました。

まとめと今後の予定

上記のタスクをこなしたり、重複していた内容のチケットをまとめたりしました。
↓現状でのこのプロジェクトの総チケット数と終了チケット数はこんな感じです。


この総チケットと終了チケット数の差が大きいと見通しが悪いので減らしていきたいです。
今後もたまにはこうやって小さいタスクを終わらせていきます。がんばります。

竹林ソフト 2023/03/17 20:00

NPC をコーディングして領地経営するゲーム開発(冒険者ギルドの建物を追加する)

遊んで「これは難しすぎるのでは?」と思ったあたりを修正しています。今回はダンジョン探索まわりを簡単にするあたりです。

冒険者ギルドの建物を追加する

今まではダンジョン探索をするために専用のスクリプトを書く必要があったのですが、作者である私が遊んで難しすぎたので簡単にします。具体的には

・キャラは作業用と探索用の装備を個別に持つことができる。
 ・装備の持ち替えが不要になる。
・冒険者ギルドの建物に3人が揃ったら、その3人が最寄りのダンジョンに探索に出かける。
 ・小難しいスクリプトを書く必要がなくなる。

と変更します。
ここまで書いて「1つのダンジョンに複数の冒険者ギルドが建築されたらどうしよう?」と思ったのですが、冒険者ギルドは1つしか建築できないようにしてもいいと思いました。後でまた考えます。

冒険者ギルドの見た目を追加する

Fantasy Hex Tiles + Decorations アセットの教会の建物を改造してギルドの建物として使うことにしました。違和感があったら画像はまた後で差し替えます。


オッケーだと思います。

冒険者ギルドに3人が揃ったら出撃するようにする

「クエストを選ぶ」という仕事を冒険者ギルドで行えるようにしました。建物で働いている人は建物に並んで表示できるので、この仕事をさせることでこういう風に表示できます。よいです。

そして、この仕事で働く人が3人になったら冒険を開始させるようにしました。

↓ギルドに集まってダンジョンでの探索を開始するまで

後は、ダンジョンの探索後に冒険者ギルドに戻ってくるようにもなったので、とりあえず実装終了です。よいです。

探索用の装備を別スロットで管理するようにする

この機能はなくても遊べるので、また後で実装することにします。
この機能を実装しなくても良い気がしてきたのもあります。ゆっくり考えます。

まとめと今後の予定

細かな調整はともかく、ダンジョン探索が簡単に行えるようになりました。冒険者ギルドを1つしか建築できないようにするあたりは「ギルド建築許可証」みたいなアイテムがギルドの建築に必要なようにして対処しようと思います。とりあえず実装が進んでよいです。
今後もがんばります。

竹林ソフト 2023/03/10 20:00

NPC をコーディングして領地経営するゲーム開発(小さなタスクを終わらせていく)

NPC をコーディングして領地経営するゲーム開発です。
今回も作ったステージをプレイし直しながら気付いた点を修正していきます。

開発したこと

見た目の修正


多言語対応で文字を置き換えた結果、文字がはみ出るようになっていたので文字を置き換えたときに LayoutRebuilder.ForceRebuildLayoutImmediate() を呼び出すようにして対処しました。

レシピ変更によるクリア不能不具合


・パンを6つ作ったらステージクリア
・キッチンに貯めておけるパンは6つまで。
・1回のクラフトで作られるパンの数を1から4に変更した。
・貯めておける個数を超えるときはクラフトしない。
という全ての条件が組み合わさって1回しかクラフトしてパンが4つになると、キッチンに空きがなくてパンを作らないのでクリア不能になっていました。

ステージクリアの条件を「パンを城塞に6つ運び込む」に変更しました。よいです。

↓城塞に空きがあるときにパンを運搬するコード

まとめと今後の予定


ここまででステージ1が遊べるのを確認できました。引き続き探索のステージ2、防衛のステージ3も遊べるか確認していきます。がんばります。

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

NPC をコーディングして領地経営するゲーム開発(小さなタスクを終わらせていく)

NPC の行動を Lua スクリプトで記述して領地経営するゲームの開発です。
毎週金曜日に開発記事を投稿する予定でしたが、なんやかんやで最後に開発してから1ヶ月以上が経過しています。自分のプロジェクトながら「あぁ、こうやってゲームはエターなるんだな」と思いました。
まぁ、いいや。今日は開発します。今回含め、しばらくは雑多な修正の作業記録になります。

開発したこと

シナリオが動作するかプレイし直す

まぁ、動作しなかったというか、本来は Idle モーションしているはずの領主キャラがいきなり歩き出しましたよね。


1ヶ月ぶりの開発のせいか「キングがウォーキングかぁ」と新鮮な感想を持てました。

シナリオ処理を開始する前に領主に「このスクリプトで動き始めて」という処理を行わせていたのが原因でした。

UI 文字の見た目を調整する

調整というか、文字と追加した UI パネルが重なってしまっていました。

本当は UI まわりを理解して対処するべきんなんですけど、レイアウトを再評価させて解決しました。

LayoutRebuilder.ForceRebuildLayoutImmediate(GetComponent<RectTransform>());

動いたので O.K. です。

クリア表示時にタイルに枠が表示されないようにする

ゲームクリアの表示中に、フォーカスしているタイルに枠が表示されるのに気付きました。


目線がちらつくのでゲームクリア中は表示しないようにします。
とおもったら再現しねぇ…。コルーチンが関係してて発生条件がシビアなの?

これはチケットだけ作っておいて後でまた確認します。この不具合で誰かが死ぬわけじゃないので、まぁ O.K. です。

クリア表示字に情報表示パネルが表示されないようにする

クリア時にタイルにカーソルが表示される不具合を再現しようとしていて気付いたので修正します。

↓情報表示パネルが表示され続ける。消えない。

これはクリア表示を行うときに他パネルを非表示にするようにしました。修正完了です。

まとめと今後の予定

久しぶりに開発に着手できました。よいです。開発してみて「週に1日だけ開発するより、1日1時間のペースで毎日開発した方がいいな」と思いました。
やってみます。

竹林ソフト 2023/02/17 20:00

NPC をコーディングするゲーム開発が楽しくない理由を検討する

NPC をコーディングして領地経営するゲームを開発しているのですが、ぶっちゃけ楽しくなくて開発が停滞しているので、その理由を書き出してどうするか検討する回です。

開発がどんな風に停滞しているか

気が重い項目順に書き出すと

  • 全ての要素をコーディングする総合ステージを遊んでいて、登場させる NPC 用のコーディングをしていたら複雑になってきて疲れた。
    • 途中セーブができないのでコードを編集するたびにリスタートになって苦痛だった。
    • 複数人をダンジョン探索させるためのコーディングが複雑でめんどうだった。
  • コード中の Lua のエラーを処理してユーザに提示するための実装がめんどい。
    • 私が Lua について詳しくないので。
  • スキル実装がめんどい。
  • ダンジョン探索をするキャラが少しずつ強化される仕組みを考えるのがめんどい。

とかでしょうか。
これらをどうするか考えてみます。

どうするか

まず、結局は開発するしかないという現実には触れないことにします。

総合ステージのコーディングが大変

総合ステージの難易度を下げることで対処しようと思います。具体的には、そこまでのチュートリアルで各職業用に作ったコードを使うだけでクリアできるようにします。

あとは、Lua スクリプトを割り当ては今はキャラ生成時にしか行えないのですが、その制限を外したいです。現状だと「このキャラは最初は大工だけど、途中から農夫にする」といったことをするためには「大工も農夫もできるコード」を書くしかなかったのですが、改善してキャラへのスクリプト割り振りを途中で変更できるようにすると「大工用のコード」と「農夫用のコード」を切り替えて使えるので複雑さが減ってよいと思います。

スキル実装がめんどい

全体に適用されるものを技術、キャラごとに適用されるものをスキルと呼んだときに、スキルは自動で取得されるようにします。
今までは「なんかスクリプトで誰がどのスキルを取得するか制御する」とか考えていたのですが、まぁ、その、めんどうそうなのでやめます。

スキルまわりの実装は、簡単なものでいいので実装に着手していきたいです。仕様を書き出してから。

冒険者の管理がめんどい

今までは party.lua という冒険者を管理するためのスクリプトを記述していましたが、もっと簡単にします。
具体的には「冒険者ギルド」という建物を用意して、そこに4人のキャラが集まったらその4人で最寄りのダンジョンに探索にいく、というルールにします。

雑多な仕組みの見直し

あとは「剣と盾を個別に扱うのではなく、1セットの装備として扱う」とか「労働用の道具とは別に、ダンジョン探索用の武器を装備する枠を別途用意する」とか、そういう変更もしたいです。探索に行くときは今持ってる道具を置いて武器に持ち替えてから出発させる、とかいうコードを書かなくていいようにします。

まとめと今後の予定

現状、このプロジェクト終了の危機だなとは思うので、とりあえず遊び方も開発も簡単になるように修正していこうと思います。なんとかします。

月別アーカイブ

限定特典から探す

記事を検索