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

NPC をコーディングして領地経営するゲーム開発(必要な Python モジュールの準備)

ゲームプレイを Lua スクリプトだけでなく Python スクリプトでも行えるあたりの実装をしていきます。
今回は、プレイヤーが記述する Python スクリプトに必要なモジュールファイルの準備を行います。

やったこと

Python が1行ずつ実行されるようにする

以前の記事 で Python を1行ずつ実行するあたりは動作したので、それを取り込みました。

そして現状の edict.py が

import pdb; pdb.set_trace()
chart.addItem(Items.Wheat)

これ↑で、これを実行してゲーム内のコンソールに表示されたものがこれ↓です。

ちゃんと python スクリプトとして評価して「chart ってなに?」というエラーメッセージが表示されているのがわかります。

ここまで動作して大変よいです。

Python としてのエラーを修正する

先ほどの chart やこれから必要になる edict, character, world などは Python のモジュールとして提供することにします。Python は詳しくないので、このあたりからは試行錯誤です。

とりあえず、必要そうなファイルを StreamingAssets ディレクトリ経由で提供することにして、そこをパスに加えます。

やったことをまとめると

  • chart.py, items.py を Assets/Streaming/Assets/Python に追加した。
  • sys.path にパスを追加してから必要なモジュールを import した。

です。
現状の Python スクリプトはこうなりました。

import pdb; pdb.set_trace()
import sys
import os
print(os.getcwd())
sys.path.append('full/path/to/Assets/StreamingAssets/Python')
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
import chart
import items

chart.addItem(items.wheat)

よいです。
最終的にはこの Python スクリプトの前半のコードは、ゲームの実行時に追加するようにします。

まとめと今後の予定

Python スクリプトをゲーム中から実際に実行するあたりに着手しました。よいです。
次に行うべきことは、ゲーム側が提供する API が動作するようにすることで、これは TCP/IP 通信でどうにかしようと思います。

次回は、API が動作するようにするあたりか、アイテムや建物のパラメータ記述をしようと思います。がんばります。

月別アーカイブ

限定特典から探す

記事を検索