投稿記事

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

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

NPC をコーディングして領地経営するゲーム開発(Python 対応: スクリプト実行)

Lua だけでなく Python でも NPC をコーディングできるようにしていきます。

やったこと

スクリプト言語を選ぶパネルを追加

本当は使うスクリプト言語は自動判別させたかったのですが、チュートリアル中に「このサンプルを変更してね」という処理の際にどのスクリプト言語のサンプルをコピーするかを決める際に必要だったので、そういうパネルを追加しました。

よいです。

各ステージでのファイルコピーを Python ファイルにする

いろいろ調整して、コピー元に .py ファイルがあればそれが使われるようにしました。

↓ コピーされたファイル

よいです。
そして引き続き作業して、In-Game Editor で表示できたものがこれ↓です。

よいです。

現状の気付き

ここまでで Python を実行する前の下準備ができました。
現時点での課題としては

  • Python スクリプトで実際に NPC を制御できるようにする。
  • VS Code でエラー表示されるのを修正する。

があります。
VS Code のエラー表示については、現状ではいきなり出てきたモジュールやクラスがエラー扱いされています。実際、実行するとにエラーになると思います。

↓ VS Code でエラーとして扱われている様子

このあたりの方針としては、これらエラーがなくなるように import を追加するなどの調整をしていき、次にゲームから Python スクリプトを実行するあたりの実装をします。

もう少し具体的に書くと、ゲームをインストールしたフォルダに character.py などのモジュールファイルを追加し、それらを参照するように os.path を変更しようと思います。
次回はこのあたりの作業をします。

まとめと今後の予定

今回は Python 対応として具体的なコードの修正を行いました。よいです。
次回は、Python スクリプトを実行するのに必要なファイルの準備を行います。それが終わったら Python をゲーム中で実行するあたり、その次がエラー処理の予定です。

まだまだ先は長いですが順に実装していこうと思います。がんばります。

竹林ソフト 2024/04/24 20:00

NPC をコーディングして領地経営するゲーム開発(フィールドの 3D 表示に着手する)

今のフィールド表示は 2D ヘクスタイル描画なのですが、地形について 3D モデルを用いた描画に切り替えられる仕組みの実装に着手します。

やったこと

切り替えるためのボタンを用意する

悩んだのですが、画面の左側のボタンの下に追加しました。

よいです。

3D の地面を描画する

今回 3D の描画で使おうとしているのは Mini Toon Hexagonal Tiles | Village というアセットです。

そして、中身を確認しようとしてテクスチャがピンクになっているのに気付きました。

いつものやつです。下記サイトを参考にして修正しました。よいです。
https://qiita.com/kazuma_f/items/4d265c5615f1d441ffe9

次に、とりあえず地面を 3D 描画してみました。

↓ 今までの 2D 描画

↓ 作成中の 3D 描画(地面のみ)

そして、ここまでやってみて「なんか、思ったほどじゃないな」と思ってしまいました。
悩ましいですね。
残タスクとしては建物の描画、キャラクターの描画、タスクカードの描画とかいろいろあるのですが、いったんここまでにしようと思います。

まとめと今後の予定

今回は、時間を割いて 3D 描画モードの試作してみました。
ただ、まだ見た目を作り込んでないせいか「いいじゃん!」という驚きがないのと「もろもろの 3D 対応が大変そう」という気持ちになってしまいました。

とりあえず着手したことは大変よいので、今後この 3D 描画の開発を続けるかは少し時間をかけて考えてみます。

次回は、Python 対応か雑多なタスクに着手していこうと思います。がんばります。

竹林ソフト 2024/04/19 20:00

NPC をコーディングして領地経営するゲーム開発(トライアルステージを追加する)

料理を追加していて「この料理を一通り作るためのステージがほしいな」と思ったので、そういう仕組を決めて実装していきます。

やりたいこと

このゲームはコーディングするゲームで、一度作ったスクリプトは別ステージでも使い回せます。なので例えば「高級料理を1つずつ作るシェフ用のスクリプト」を作れば他のステージでも便利に使えます。

ただ、そういう「あったら便利なスクリプト」は必須でないゲームバランスにしたい気持ちと、せっかくだから作って使ってほしい気持ちとがあります。考えた結果そういうスクリプトを作ってもらうステージを「トライアル」というワールドのステージとして提供することにしました。

例えば「高級料理が1つずつ城塞にある状態にしよう」というのをクリア目標にしたステージを用意する感じです。

トライアルまわりの実現において、

  • ワールドを開放する仕組み(すでに実装した気がする)
  • トライアルのステージ自体

を作っていこうと思います。

やったこと

ワールドを開放する仕組みを実装する

確認したところ、ワールドには「このワールドがクリアされたらプレイ可能にする」という機能が実装されていました。トライアルステージは、チュートリアルの2章と3章のクリア時にプレイできるようにしたかったので、この機能を利用しました。

↓ チュートリアル1,2,3とトライアル1,2が表示されている様子

ただ、トライアルのワールドはプレイできないときには非表示にしたかったので「プレイ可能でないときには表示しない」というオプションをワールドの設定 YAML ファイルに追加しました。

↓ 隠すための HideIfCannnotPlay を追加した設定ファイル

↓ その設定の処理を実装した後の動作

実装して動作しました。よいです。

トライアルステージの作成

実際にステージを追加してプレイできるようにする作業は後でやります。
トライアルのステージを作ってクリアすることは「高級料理を実際に作れて食べられるか」などの開発中の動作確認も兼ねるつもりです。

コンポーネントがスクロールしないのを修正した

ここまでの内容とは関係ないのですが、オーダーを表示するスクロールエリアについて、スクロールバー以外の場所にカーソルがあるとホイールでスクロールしないようになっていたのを修正しました。

↓ 問題が起きていたオーダー表示

これは調べたら↓この記事と同じ現象でした。記事を参考にして修正しました。よいです。
https://note.com/gevvoihorry/n/nfb1fb3ae0f7b

まとめと今後の予定

今回は必須じゃないけどコーディングしてみてほしい要素のためにトライアルの概念を追加して実装しました。よいです。

次回は Python 対応か雑多なタスクか、フィールドの 3D 表示対応に着手しようと思います。がんばります。

竹林ソフト 2024/04/17 20:00

NPC をコーディングして領地経営するゲーム開発(料理アイテムの追加)

前回、肉と革を入手するための建物を追加して、ちゃんと動作しないあたりまで実装しました。今回は動作するように修正するのと、料理アイテムの追加を行います。

やったこと

前回からの実装で動作しなかったのを修正した

前回までで動作しなかった箇所をもろもろ実装して動作させて、かつアイコン画像を選んで適用しました。

↓ 肉と革の画像を適用して、それがちゃんと表示されている様子

よいです。

農場で卵をクラフトできるようにした

卵は放し飼いにした鶏から採取できるイメージがあったので、畜舎でなく農場でクラフトできるようにしました。このゲームはファンタジーなので細かいことは気にしないことにします。


よいです。

料理の追加

料理の画像は Fantasy Inn Food Set Pack アセットを利用します。

料理については割り切って

  • 空腹を満たし、各パラメータの経験値を少し上げるための料理を1つずつ
  • 空腹を満たし、各パラメータの経験値を大きく上げるための料理を1つずつ
  • スタミナを小回復する飲み物をいくつか

くらいの種類にする予定です。
そしてとりあえず、

  • Steak ... 空腹を満たし、STR の経験値が少し増える。
  • Boiled Egg ... 空腹を満たし、VIT の経験値が少し増える。

を追加しました。

「INT を上げる料理は甘いものでいいとして、DEX や LUK が上がる料理はなんだろうな?」とか、いろいろ悩ましいです。

料理を追加するたびに、生産する資源と時間の総コストはどのくらいになるんだっけ? を考える必要があって、それを計算してくれる仕組みがほしいと思いました。気が向いたらそういう Python スクリプトを作成しようと思います。

まとめと今後の予定

料理について検討して、いくつかの料理を追加しました。よいです。
引き続き、料理や装備品のクラフトレシピを追加していこうと思います。がんばります。

竹林ソフト 2024/04/12 20:00

NPC をコーディングして領地経営するゲーム開発(牧場、狩り場の追加)

建物やアイテムを追加していきます。

やったこと

牧場の追加

小麦を消費して、肉や革を生産する建物「牧場」を追加します。肉は料理に、革は防具の資源になります。
そういえば、農場で小麦を消費して卵を生産できてもよさそうなので後で追加します。

具体的な作業としては

  • 建物画像の登録(作業済み)
  • 建物パラメータの追加
  • アイテム画像の追加
  • アイテムパラメータの追加
  • アイテムのレシピを追加

になります。
そういえば、牧場とは別に肉や革が入手できる「狩り場」も作ろうと思っていて、これと牧場との区別化をどうするか考えると、

  • 牧場 ... 建築に時間とコストがかかる。小麦がそこそこ必要。生産効率はよい。
  • 狩り場 ... オートカウントでワーカー数は影響しない。生産は遅い。

こんな感じにしようと思います。
そして、これらが作業結果です。

↓ 城塞の左に狩猟小屋、右に牧場が配置出来た様子

そして、ここまで実装したときに「そういえば、1つのアイテムを作る複数の方法を定義できなかったな」と思って機能変更しました。
牧場で小麦を消費して肉をクラフトするレシピと、狩り場で弓を使って肉を入手するレシピとは分けたいのです。

↓ 肉のレシピを複数定義した様子

そして、気軽に変更を始めて、数々のコンパイルエラーや実行時エラーと戦った結果、エラーは発生しなくなりましたが、表示が動作しなくなるところまで作業しました。
この続きは次回にやります。

まとめと今後の予定

肉と革を入手できる建物を追加して、レシピを追加して、かつ1つのアイテムのレシピを複数定義できるように変更しました。よいです。

ただ、変更にともなって表示まわりが動作しなくなったので次回はこの続きから作業します。
動作するようになったら、肉料理や革防具のレシピの追加も行おうと思います。がんばります。

1 2 3 4 5 6 7

月別アーカイブ

限定特典から探す

記事を検索