NPC をコーディングして領地経営するゲーム開発(Python 対応 RPC 通信に着手)
NPC をコーディングして領地経営するゲーム開発を行っています。今回は、Python スクリプトで NPC を制御できるようにするために必要な実装を進めます。
やったこと
少しずつでいいので開発していきます。
ゲーム側のサーバに接続する
とりあえず、簡単そうな下記コマンドが処理されるのを目指します。
character.say('character.move(farm)', 3.0)
これは NPC に吹き出しでメッセージ表示するコマンドです。
この say コマンドと引数の情報は TCP/IP 通信でサーバに送ればいいのですが、これに先立って character.connect(_file_) を実行してサーバに「接続したクライアントはこのスクリプトです」っていうのを渡す仕組みにしました。
そして、試行錯誤してやっとこさ Python クライアントとゲームサーバとで通信できたコードがこれらです。
↓ Python で TCP/IP 通信させるクラス
↓ ゲームサーバ側のコード
↓ Unity エディタでの実行結果
Unity エディタの実行結果から _file_ の情報であるフルパスがクライアントからサーバに渡されたことが確認できます。大変よいです。
接続後の処理の確認
ここまででクライアントとサーバとの接続が動作したので、次にやるべきことは
- _file_ 情報を元にゲーム上の NPC と TCP/IP 接続(クライアント)を関連付ける。
- 関連付けた接続(クライアント)からのコマンドを NPC に対して実行する。
- コマンドを受け取って処理するあたりの通信プロトコルを決めて実装する。
となります。
これらが実装できて始めて character.say() が動作する予定です。次回はこのあたりに着手します。
通信プロトコルというか、送受信するコマンドフォーマットについては Python から「これやって」系の指示を送るコマンドは簡単でいいのですが、「この情報をください」系の場合は処理が複雑になるので、今回のように確認しながら実装します。
まとめと今後の予定
まだまだ先は長いですが、Python 対応のための実装が少しでも進んだので大変よいです。
次回は、引き続き Python で記述したコードで NPC を制御するあたり、およびゲームの情報を Python 側で受け取るあたりに着手します。がんばります。