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 が動作するようにするあたりか、アイテムや建物のパラメータ記述をしようと思います。がんばります。