システム操作実行の可否を決定するクラスです。 [詳解]
#include <NetZ/src/Core/DOCore/SafetyExecutive.h>
公開型 | |
typedef qBool(* | CustomOperationCheck) (const Operation &oOperation) |
操作が実行されてもよいかどうかを決定する関数ポインタ型の定義です。 [詳解] | |
typedef void(* | InvalidOperationCallback) (const Operation &oOperation) |
操作の実行を拒否された場合にどのような処理を実行するのかを決定する関数ポインタ型の定義です。 [詳解] | |
公開メンバ関数 | |
SafetyExecutive () | |
このコンストラクタはアプリケーションから呼び出さないでください。 [詳解] | |
virtual | ~SafetyExecutive () |
このデストラクタはアプリケーションから呼び出さないでください。 [詳解] | |
qBool | LocalStationIsTrusted () const |
ローカルステーションを信用するかどうかを取得します。 [詳解] | |
void | RegisterCustomOperationCheck (CustomOperationCheck pfCustomOperationCheck) |
システム操作(Operation)の可否を決定するためのコールバック関数を登録します。 [詳解] | |
void | RegisterInvalidOperationCallback (InvalidOperationCallback pfInvalidOperationCallback) |
システム操作が拒否されたときに何を実行するのかを決定するためのコールバック関数を登録します。 [詳解] | |
void | TrustLocalStation (qBool bFlag) |
ローカルステーションを信用するかどうかを設定します。 [詳解] | |
静的公開メンバ関数 | |
static SafetyExecutive * | GetInstance () |
SafetyExecutiveのインスタンスへのポインタを取得します。 [詳解] | |
システム操作実行の可否を決定するクラスです。
このクラスはシステム操作が実行される前に、その操作を行うのか、あるいは 不正な操作命令ということで操作の実行を行わないのかを決定するために利用されます。 ゲームコードのバグやチートを行うプレイヤーによって不正な操作が実行されることがあります。 開発途中のゲーム(ベータ版)ではチートは発生しにくいため、不正なシステム操作の 大部分はゲームコードのバグということになります。
オブジェクトの作成、オブジェクトの削除、 マイグレーション(複製オブジェクトコントロールのステーション間移動)などの、 それぞれの操作について、適切な状態で実行されようとしているかどうかをみるために SafetyExecutiveクラスを利用することが出来ます。 アプリケーションの仕様として決まっていること(たとえば、オブジェクトのマイグレーションは 試合開始から30秒しか実行させない、など)がある場合に、 その条件を満たさない(先ほどの例だと、試合開始1分後にマイグレーションが実行されようとした)なら 操作を拒否することで、不正なマイグレーションを防ぐことが可能です。
システム操作がどのように制限されていくのかの詳細を知るためには、 RegisterCustomOperationCheck 関数の解説を参照してください。
このクラスのオブジェクトははシステムによって自動的に作成されます。 アプリケーション側からオブジェクトの作成を行わないでください。 オブジェクトインスタンスを取得するためにはGetInstance 関数を利用してください。
操作が実行されてもよいかどうかを決定する関数ポインタ型の定義です。
これは、RegisterCustomOperationCheck 関数に設定されます。
typedef void(* nn::nex::SafetyExecutive::InvalidOperationCallback) (const Operation &oOperation) |
操作の実行を拒否された場合にどのような処理を実行するのかを決定する関数ポインタ型の定義です。
これは、InvalidOperationCallback 関数に設定されます。
nn::nex::SafetyExecutive::SafetyExecutive | ( | ) |
このコンストラクタはアプリケーションから呼び出さないでください。
セッションが作成されたときにシステムがすべてのステーションについてこのオブジェクトを自動的に作成します。
|
virtual |
このデストラクタはアプリケーションから呼び出さないでください。
セッションが終了したときにシステムが自動的に解放処理を行います。
|
static |
SafetyExecutiveのインスタンスへのポインタを取得します。
操作実行の可否を決定するため、SafetyExecutiveクラスへアクセスするときは、 この関数を利用してインスタンスへのポインタを取得し、 それを経由して関数の呼び出しなどを行ってください。 SafetyExecutiveクラスのインスタンスはセッション開始時に自動的に作成され、 セッションが終了したときに自動的に解放されるようになっています。
void nn::nex::SafetyExecutive::RegisterCustomOperationCheck | ( | CustomOperationCheck | pfCustomOperationCheck | ) |
システム操作(Operation)の可否を決定するためのコールバック関数を登録します。
この関数に指定されたコールバック関数によってシステム操作(Operation)の 操作が不正なものであるかそうでないかの判定処理を行います。 登録されたコールバック関数によって、アプリケーション側コードのバグを回避したり、 プレイヤーのチート行為を抑えることが出来るようになります。
この関数を登録しても、デフォルトではローカルステーション(自分自身)からの システム操作は可否判定処理が行われません。ローカルステーションから実行されようとしている システム操作でもpfCustomOperationCheckで指定されたコールバック関数を 呼び出すようにするためには、TrustLocalStation 関数を呼び出す必要があります。
[in] | pfCustomOperationCheck | 操作の可否を決定するためのコールバック関数を登録します。 与えられた操作について、受け入れる場合はtrueを、そうでない場合はfalseを返す必要があります。 |
void nn::nex::SafetyExecutive::RegisterInvalidOperationCallback | ( | InvalidOperationCallback | pfInvalidOperationCallback | ) |
システム操作が拒否されたときに何を実行するのかを決定するためのコールバック関数を登録します。
この関数を利用して登録されたコールバック関数は、SafetyExecutiveクラスによって システム操作(Operation)が拒否されたときにシステム側から呼び出されます。 システム操作は、RegisterCustomOperationCheck 関数で登録された コールバック関数にてfalseを返すことで実行を拒否することが出来ます。
システム操作が拒否されるということは、ゲームのバグであるか、 ユーザーのチート行為である可能性があります。この関数を使ってコールバック関数を 登録しておき、その中でそれぞれの場合に対処することが可能になります。 たとえば、ゲーム開発中に利用するデバッグビルドでは、 システム操作が拒否されたことをログレポートに表示した後にクラッシュさせ、 プログラマが修正できるようにしておくことが出来ます。 また、製品出荷用のリリースビルドでは、 システム操作が拒否されたことはユーザーのチート行為である可能性があるとみなして サーバーに通知するなどの操作を行うことも出来ます。
[in] | pfInvalidOperationCallback | システム操作が拒否されたときにシステム側から実行されるコールバック関数を指定します。 |
void nn::nex::SafetyExecutive::TrustLocalStation | ( | qBool | bFlag | ) |
ローカルステーションを信用するかどうかを設定します。
ローカルステーション(自分自身)が信用されていると設定された場合(デフォルトは信用する設定)、 ローカルステーションから実行されようとしているすべてのシステム操作は SafetyExecutiveクラスによって事前チェックされなくなります。 信用されていない設定の場合、ローカルステーションから実行されようとしているシステム操作も SafetyExecutiveクラスによる事前チェックの対象となります。
[in] | bFlag | ローカルステーションを信用するかどうかを指定します(デフォルトではtrueが設定されている状態です)。 |
qBool nn::nex::SafetyExecutive::LocalStationIsTrusted | ( | ) | const |
ローカルステーションを信用するかどうかを取得します。
ローカルステーション(自分自身)が信用されていると設定された場合(デフォルトは信用する設定)、 ローカルステーションから実行されようとしているすべてのシステム操作は SafetyExecutiveクラスによって事前チェックされなくなります。 信用されていない設定の場合、ローカルステーションから実行されようとしているシステム操作も SafetyExecutiveクラスによる事前チェックの対象となります。
この関数を利用すると、TrustLocalStation 関数にて設定した 値を取得することが出来ます。