投稿記事

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

竹林ソフト 2024/01/05 20:00

NPC をコーディングして領地経営するゲーム開発(テストプレイと雑多なタスクへの着手)

「称号」や「装備の特殊能力」といったゲームの最低限の要素は実装したので、今後の予定を書き出して着手していきます。

やりたいこと

貯め込んだチケットを片付ける

実装したいこと等をチケット管理しているのですが、総チケット数と完了チケット数の差、つまり終わってないチケットが 200 個くらいあります。

終わってないチケットが多いと見通しが悪いのと、気持ちがうんざりするので着手して片付けたり、やらないと決めたりしたいです。

プレイして問題や改善点を探していく

本当に問題点の洗い出しをしたいのであれば初見プレイヤーがプレイするのを Discord 等で画面共有して観察するのがよいのですが、それはまた後でやることにして自分でプレイし直していきます。

プレイして「これ、わかりにくい」とか「ここ楽しくないな」とかを改善するためのチケットを追加していく作業です。

未実装の機能に着手する

カスタムプレイをするための機能とか、作ったステージを共有する機能とかの実装がまだなので、それらにも着手したいです。
これらは Early Access 開始後での実装でもいいとは思います。ただ私みたいに宣伝しないタイプだと Steam の Early Access 開始は正式販売とほぼ同義だと思っているので、普通にプレイするときに使う機能は実装を終わらせておきたいです。

あと、チュートリアル用ステージの開幕直後の妖精さんとの会話は、必須なのに未実装なのでこれも着手したいと思っています。

やったこと

テストプレイしての気付き

ビルドして気付いた点を列挙しました。これから起動しようとするだけで気持ち悪くなるくらいには繰り返しテストプレイをしていく予定です。

テストプレイしての気付き

  • タイトル画面が地味
    • 背景のマップを大きくして常にスクロールさせるとか?
  • カーソルがホバーしているメニューボタン横にアイコンが表示されてもいいのでは?
  • 「カスタマイズ」というボタン名だと「領主の見た目のカスタマイズ」というのが伝わらない。
    • "Edit Appearance", 「外観の編集」の方がよさそう。
  • 変更履歴、クレジット表示のパネルがホイールでスクロールしない。
    • 以前に気付いてそのままになっている。(優先度は高くない)

  • 設定パネル
    • 曲と効果音のスライダーはホイール操作でも動作してほしい。(しなくていい)
    • 「プロジェクト」よりは「コードの保存フォルダ」の方がよさそう。(もしくはプロジェクトフォルダ)
    • 「エディタ」の文字だけ太く見える。

  • 領主のカスタマイズ
    • サイコロボタンにマウスオーバーしたときに「ランダムに変更する」と Tooltip 表示する。
    • 「戻る」ボタンのクリック音がない。

  • ステージ選択
    • 難易度のパネルがいかにも「後から追加しました」になっててダサい。

上記の気付きを修正した

変更履歴とクレジットのパネルがマウスホイールでスクロールしないの以外は修正しました。よいです。

ビルドに不要な ttf, otf を検出するスクリプトを作成した

Python でやっつけで作成しました。

import os

path = os.path.join(os.getenv('APPDATA'), '..\\Local\\Unity\\Editor\\Editor.log')

with open(path, encoding='utf-8') as f:
    lines = f.readlines()
    lines = [line.strip() for line in lines]

    otf_lines = [line for line in lines if '.otf' in line]
    for line in otf_lines:
        print(line)

    ttf_lines = [line for line in lines if '.ttf' in line]
    for line in ttf_lines:
        print(line)

ただ、配布パッケージのサイズを気にするなら、アセットクリーナー系のツールでどうこうした方がよいかもです。

まとめと今後の予定

今後の予定を確認して、ゲームのテストプレイをして気付きを修正しました。
次回はステージ選択以降のゲームまわりのテストを行いつつ、未着手の要素にも手を付けたいです。がんばります。

竹林ソフト 2023/12/29 20:00

NPC をコーディングして領地経営するゲーム開発(装備品の効果の実装)

装備したアイテムの効果の実装方法を検討してから実装していきます。

やること

現状では装備品はダンジョン探索での「攻撃力」「防御力」しか動作しません。
追加で実装したい例として

  • 麦わら帽子: 農作業でスタミナが減りにくくなる。
  • 高級なフライパン: 運が上がる。(運によって仕事時間が減ることがある)

とかです。
あと、称号は特殊な装備品として扱う予定なので、称号で実現したい効果もどう扱うか決めます。

称号で実現したいことの例

  • 能力値アップ
  • 特定の仕事でスタミナが減りにくくなる
  • 特定のワークでのみ能力値が上がる
  • ダンジョン探索でのスキルよりの特殊能力(未定)

しかしまぁ、実現したい機能はその処理を行う箇所で「ところでこの属性がある装備してる?」みたいな泥臭い実装を追加する予定です。

やったこと

とりあえず麦わら帽子に「畑でのスタミナ消費が 0.75 倍になる」というパラメータ定義をしました。

StrawHat: { StaminaRatio.CropField: 0.75 }

そしてこの倍率をワーク時のスタミナ計算のときに利用するようにしました。よいです。
同様に、王冠にパラメータ上昇の記述を行ってみて値が変化しているのを確認しました。

Crown: { AddInt: 10 }

↓ 賢さが 110 になっている。(後で「賢さ」表記から「知力」表記にしました)

まだ未実装ですが、特定のワーク時に能力が上がるときの記述は

AddDex.Kitchen: 30

にしようと思います。
ここまでの実装で、いつもよりワークが捗る装備とかを定義できるようになりました。

体験版の不具合修正

あと、このゲームの Steam 掲示板に「体験版を起動しても動作しないんだけど」的な書き込みがあったのに2週間くらい気付きませんでした。「この掲示板を購読する」にチェックを入れてなかったせいです。よくないですね…
問題自体は再現させて修正しました。

まとめと今後の予定

装備アイテムの少し特殊な効果まわりを実装しました。
次回は、ダンジョン探索のときにどういう特殊能力があると楽しそうかを考えて実装方法を検討しようと思います。がんばります。

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

NPC をコーディングして領地経営するゲーム開発(称号の仕様と実装)

「称号」という、ある条件を満たすと得られるスキルみたいな概念の仕様を決めて実装していきます。

やりたいこと

ある条件を最初に達成した NPC に例えば「最高の料理人」みたいな称号が付与されるようにして、その称号を持っていると何らかのボーナスが得られるようにしたいです。
とはいえ、どういう称号があると楽しいかを列挙しきれてないので、とりあえず複雑でない称号を実装します。

能力値による称号の付与

例えば

  • 称号: 力自慢
    • 条件: STR が最初に 120 以上になる。
    • 効果: STR + 30

とかです。
STR が高い NPC の STR を称号でさらに上げていいのか? 的なことは後でまた考えます。この条件と効果については、ハードコーディングではない方法で実装したいと思っています。

ワークの回数による称号の付与

これは

  • 称号: 熟練シェフ
    • 条件: キッチンでワークした回数が最初に 50 回以上になる。
    • 効果: キッチンでのワークするときのスタミナ消費が半分になる。

とかです。
称号による効果を多彩にすればするほど、実装が小難しくなりそうで悩ましいです。

やったこと

称号を実現するための仕組みを

  • 能力値が上がったときに称号付与をチェックする Lua スクリプトを呼び出す。
  • 建物ごとのワークの回数を NPC に保持させる。
  • ワークの回数が増えたときに称号付与をチェックする Lua スクリプトを呼び出す。
  • 称号の効果が発揮される処理に NPC の持ってる称号を渡して「称号があれば効果がこう変わる」という処理を埋め込む。

という感じで実装します。
称号の効果の実現については、称号を「装備品の1つ」として扱うことにします。

そしてテスト用に「STR が 101 以上になったら『剛力(HighStrTitle)』という称号を与えるためのコードを作って動作するようにしました。

↓ 条件のチェックと称号の付与を行う Lua スクリプトの抜粋

よいです。

保持している称号の表示

とりあえず称号が取得できるようになったので、取得した称号を表示するあたりを実装しました。

↓ 右下にその NPC が保持している称号が表示されるようにした。

よいです。
この称号が実際に機能するあたりはまた後で実装します。
あと称号の効果をどうプレイヤーに提示するかですが、

  • 称号表示の右側に文章を記述する。
  • 称号を一覧表示する機能を作る。
  • NPC の詳細情報を表示できるようにして、そこで確認できるようにする。

とか考えました。2,3番目の方法を実装したいと思いますが後で着手します。

まとめと今後の予定

とりあえず称号の仕様を決めて基本的な称号を実装しました。
称号に限らずアイテムのパラメータや効果はプレイヤーが変更できるようにしたいと思っていて、それをどうするかの検討もそろそろ行いたいです。
次回は、称号が機能するあたりか、称号やアイテムの追加やパラメータ変更などの MOD 機能をどう提供するかを考えるか、雑多なタスクに着手しようと思います。がんばります。

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

NPC をコーディングして領地経営するゲーム開発(パラメータ強化による恩恵の実装)

食事やワークの経験値でキャラクターの能力が上がるようになったので、この上がった能力にで得られる効果を実装していきます。

やったこと

VIT 増加に合わせてスタミナを増加させる

VIT の増加に伴ってスタミナが増えるようにします。これは増やす処理とスタミナバーの表示を調整するだけです。VIT が1増えるごとにスタミナが1増えるようにしました。

ワークが早く終わるようにする

ワークを行う建物ごとに「この建物では STR, DEX が求められている」という設定を行えるようにします。例えば、キッチンでは DEX が要求されて、DEX パラメータが 120 だとしたら 1.2 人が働いているものとして扱うようにします。

で、キッチンに DEX が要求されるよう変更した YAML ファイルがこれです。

これを使うようなコードも実装しました。よいです。

あと、LUC 依存でワーク中に "Lucky!" という表示とともにワーク時間を急に減らす演出も実装したいと思います。LUC が 110 だとしたら、1秒毎に 0.1 の確率で発動するようにします。重要度は低いので、この実装はまた今度にします。

ダンジョン探索時の攻撃力に反映させる

装備ごとに必要パラメータを定義して、それを満たしている割合だけ本来の攻撃力を発揮するようにします。

  • 要求パラメータが DEX: 110 で本来の攻撃力が ATK: 50 の短剣の場合
    • ATK' = ATK x max(DEX, 110) / 110

実際にはもう少し小難しい計算式にします。
そして、要求しているパラメータを ReqDEX という記述で追加した YML ファイルがこれです。

よいです。
とりあえずデータを読み込むところまで実装しました。このデータを使うあたりはまたダンジョン探索を見直すときに実装します。
武器だけでなく防具にもこの要求パラメータの概念を取り込んでもいいですし、LUC による回避補正やクリティカル補正も考えています。

まとめと今後の予定

パラメータ上昇が何に影響を与えるかを定義して、そのいくつかを実装しました。
今回の変更をゲーム中でどう説明するかは、また後で考えて実装します。どこで説明するかですが、理想とする順に

  • UI を見ればわかるようにする。
  • ゲーム中のヘルプで説明する。
  • ゲーム中のドキュメントで説明する。
  • 説明しない。

を考えています。
次回は「称号」の概念について仕様を決めて実装に着手します。がんばります。

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

NPC をコーディングして領地経営するゲーム開発(カスタムステージの仕様定義)

もろもろの機能をテストするために「カスタムステージ」の機能について仕様を決めて、テストを行っていきます。

どうしたいか

現状のステージ選択の画面がこれなのですが、

これにタブを追加します。具体的には

  • 現状の表示内容を「チュートリアル」タブに含める。
  • 「カスタムステージ」タブを追加する。
  • 「カスタムワールド」タブを追加する。

というのを考えています。

ただ、とりあえずは機能をテストするためのカスタムステージをどう扱うか確認できればよいので、これら UI の変更作業はまた今度やります。

やったこと

カスタムステージを扱えるようにするにあたって、ステージ選択のシーンは UI まわりを修正する必要があるのですが、ワールドとステージのフォルダを受け取って実行するゲーム用のシーンには大きな修正は必要ありません。
なので、テスト用のステージを作っていきます。

最初に、最小構成のステージを作りました。

↓テスト用に作ったステージ

とりあえず、エラーなくここまで動作して大変よいです。
続く作業としては

  • VIT の経験値が増えるよう設定した Baked Potato をこの領主に繰り返し食べさせるコードを追加する。
  • 経験値を確認できる UI に修正する。
  • もろもろの動作を確認する。

です。
まず、キャラクター情報のパネルに経験値の表示を追加しました。

↓ 変更前

↓変更後

よいです。
次は、城塞に Baked Potato を追加して定期的に領主キャラに食べさせて経験値が増えるかを確認しました。

↓ 確認したというか、修正して VIT の経験値増加を動作するようにした結果。

よいです。
続けて木こり仕事で STR の経験値が増えるかも確認します。

↓ 木こり小屋をフィールドに追加した様子。

↓ 実装を修正して木こり作業のワークで STR に経験値が入るようになった様子

よいです。

まとめと今後の予定

今回はカスタムステージの仕様を決めて、経験値の増加を確認できるステージをカスタムステージとして作成してパラメータが増加する動作を確認しました。
次回は、パラメータによって仕事の効率が上がるあたりの実装や、称号(スキル相当)の仕様決めなんかを行いたいです。がんばります。

5 6 7 8 9 10 11

月別アーカイブ

限定特典から探す

記事を検索