アットウィキロゴ

ReferencePythonAPI

ReferencePythonAPI

PythonAIはターンごとにpython scriptを実行し、ユニットの移動や攻撃を許可します。このドキュメントでは、AIを有効にする方法、Python scriptで利用できるプロパティとメソッドについて解説します。

特に指定しない限り、全てのプロパティは読み込み専用です。

全てのオブジェクトはwesnoth.gamemapを除いて==演算子がサポートされています。実際には比較はサポートされていますが、結果はイコールテストのみ意味があります。

Python AIのオプションの指定方法

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にあるはずです。

方法その1

マルチプレイヤーゲームを始める場合は、PythonAIを選択して使う事ができます。そのAIは全てのプレイヤーに提供できるはずです。これを動かすために、メインで使うAIの.pyファイルは最初の1行目に以下のようなコメントを入れる必要があります。

#!WPY

また、安全なPythonAIのみを実行したい場合は、以下のようにコメントを入れます。

>#!UNSAFE_WPY

方法その2

コマンドラインからゲームを始める場合、--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を使うことを示しています。

方法その3

マップの中に直接pythonAIを指定します。[side]タグの中に、以下のように挿入します。

controller=ai
[ai]
ai_algorithm=python_ai
python_script=path to script
[/ai]

この場合、campaignフォルダ内のdata/aisにスクリプトを置く必要があります。

Pythonでできること

WesnothはPythonが入っていなくても実行できますが、その場合PythonAIは読み込まれません。あなたはpythonのプリプロセッサシンボル使う事ができます(たとえば、ユーザへのメッセージを表示する時など)。PreprocessorRefを見てください。次のセクションも参考になります。

PythonAIを実現するために

AIを書く上で気をつけておきたい、いくつかの細かい点があります。ひとつのPythonインタプリタは全てのAIで使われ、ゲームで一度初期化されます。このPythonインタプリタは全てのターンでAIスクリプトを実行します。

この結果、AIスクリプトは全てのターンでリロードされるため、メインスクリプトはキャッシュデータをグローバル変数に格納する事ができません。データをターンの間(またはゲームのセーブ、ロードの際)に保存する方法は、get_variable()とset_variable()の項を見てください。

wesnothモジュールリファレンス

これは自動的に生成されたリファレンスなので、遠慮なく編集して構いません。

これはWesnothAIのモジュールです。pythonスクリプトは、PythonAIがスクリプトを使っている時のターンごとに一度実行されます。

関数

アタックタイプ

ゲームマップ

ゲームステータス

ロケーション

チーム

ユニット

ユニットタイプ

最終更新:2009年02月12日 15:49