PythonAIはターンごとにpython scriptを実行し、ユニットの移動や攻撃を許可します。このドキュメントでは、AIを有効にする方法、Python scriptで利用できるプロパティとメソッドについて解説します。
特に指定しない限り、全てのプロパティは読み込み専用です。
全てのオブジェクトはwesnoth.gamemapを除いて==演算子がサポートされています。実際には比較はサポートされていますが、結果はイコールテストのみ意味があります。
Python support will be built if HAVE_PYTHON is defined during the build process. Under Unix, this is disabled with the --disable-python configure switch.
Pythonのサポートを一度有効にすると、PythonAIを使う方法が3つできます。いずれにしても、.pyファイルはdataフォルダかuserdataフォルダ内のdata/aisに入っているはずです。例えば、Unix系ならそれらのスクリプトは~/.wesnoth/data/ais/my_ai.pyか、/usr/share/wesnoth/data/ais/my_ai.pyにあるはずです。また、Windowsなら、wesnoth/userdata/data/ais/my_ai.pyか、wesnoth/data/ais/my_ai.pyにあるはずです。
マルチプレイヤーゲームを始める場合は、PythonAIを選択して使う事ができます。そのAIは全てのプレイヤーに提供できるはずです。これを動かすために、メインで使うAIの.pyファイルは最初の1行目に以下のようなコメントを入れる必要があります。
#!WPYまた、安全なPythonAIのみを実行したい場合は、以下のようにコメントを入れます。
>#!UNSAFE_WPYコマンドラインからゲームを始める場合、--multiplayerオプションを使うことが出来ます。以下が例です(実際は1行です)。
wesnoth
--multiplayer
--scenario=multiplayer_Fallenstar_Lake
--controller2=ai
--controller3=ai
--algorithm2=python_ai
--parm2=python_script:test.py
--side2="Knalgan Alliance"
--side3="Rebels"これはシナリオをidで与え、2人のプレイヤーは"test.py"というPythonAIを使うことを示しています。
マップの中に直接pythonAIを指定します。[side]タグの中に、以下のように挿入します。
controller=ai
[ai]
ai_algorithm=python_ai
python_script=path to script
[/ai]この場合、campaignフォルダ内のdata/aisにスクリプトを置く必要があります。
WesnothはPythonが入っていなくても実行できますが、その場合PythonAIは読み込まれません。あなたはpythonのプリプロセッサシンボル使う事ができます(たとえば、ユーザへのメッセージを表示する時など)。PreprocessorRefを見てください。次のセクションも参考になります。
AIを書く上で気をつけておきたい、いくつかの細かい点があります。ひとつのPythonインタプリタは全てのAIで使われ、ゲームで一度初期化されます。このPythonインタプリタは全てのターンでAIスクリプトを実行します。
この結果、AIスクリプトは全てのターンでリロードされるため、メインスクリプトはキャッシュデータをグローバル変数に格納する事ができません。データをターンの間(またはゲームのセーブ、ロードの際)に保存する方法は、get_variable()とset_variable()の項を見てください。
これは自動的に生成されたリファレンスなので、遠慮なく編集して構いません。
これはWesnothAIのモジュールです。pythonスクリプトは、PythonAIがスクリプトを使っている時のターンごとに一度実行されます。