TDDPD

タスク

 TDDPDは、DirectPlayを簡単に扱うためのコンポーネントです。

 DirectPlayを使ったアプリケーション同士の接続、セッションの作成、プレーヤの管理をサポートします。

 

リファレンス目次

プロパティ

(凡例:    読み取り専用   Published)

接続   ServiceProviders
セッション   Sessions
プレイヤー   Players
  MyPlayer
設定   MaxPlayers
  NoMessageID
  SendGuaranteed
その他   AppGuid
  DebugOption


メソッド

接続 Connect
セッション CreateSession
InspectSession
JoinSession
CloseSession
メッセージ Send
接続ダイアログ Execute

 

イベント

プレイヤーの出入り OnComesNewChallenger
OnEscapeChallenger
メッセージ OnArriveMessage


リファレンス〜プロパティ

ServiceProviders

property ServiceProviders:TStrings;

 DirectPlayによって使用できるサービスプロバイダの一覧を示します。

 

Sessions

property Sessions:TStrings;

 現在接続しているホストで開かれているセッションの一覧を示します。

 Connectメソッドによってどこかのホストに接続されていない場合、このプロパティは無効です。

 

Players

property Players:TDDPDPlayers;

 セッションに参加しているプレイヤーの情報についてのリストを示します。

 CraeteSessionメソッドなどですでにセッションを開いていない状態では、このプロパティは無効です。

 

MyPlayer

property MyPlayer:TDDPDPlayer;

 アプリケーションを直接操作しているプレイヤーについての情報を示します。 

 

MaxPlayers

property MaxPlayers:Integer;

 CreateSessionメソッドでセッションを作成するとき、および、Executeメソッドで表示されるダイアログによってセッションを作成するときの、セッションに収容可能な最大人数を設定します。

 

NoMessageID

property NoMessageID:Boolean;

 Sendメソッドによってデータを送信する際に、メッセージの送り手のIDも付加するかどうかを設定します。Falseにすると、IDが付加されませんが、その分だけ高速にデータの通信が可能です。

 

SendGuaranteed

property SendGuaranteed:Boolean;

 Trueにすると、Sendメソッドによるデータの送信を保証します。データは確実に送り先に到着します。但し、通信速度は低下します。

 Falseにすると、回線の状態などによっては、必ずしも相手のもとに届く保証はありません。

 尚、送ったデータと受け取ったデータが違う、いわゆるデータ化けは、いずれの場合も起こりません。

 このプロパティがTrueの時は、TCP/IPをサービスプロバイダに用いたときのみ通信を行う事が出来ます。

 

AppGuid

property AppGuid:String;

 アプリケーションを識別するためのIDで、

 {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

 という形式の文字列です。 
 X には0〜Fまでの十六進数が入ります。

 Win32SDK付属のGUIDGenというツールで作成出来るほか、DelphiのエディタでCtrl+Shift+Gを押すか、CreateClassID Win32APIを用いれば生成する事が可能です。

 

DebugOption

property DebugOption:TDDPDDebugOption;

TDDPDDebugOption = Set of (dpoHaltOnError, dpoExceptOnError, dpoDebugMessage);

 デバッグ用のメッセージ出力を制御します。

dpoHaltOnError
DirectXモジュールの制御上、何らかのエラーが発生すると、アプリケーションを強制終了します

dpoExceptOnError
DirectXモジュールの制御上、何らかのエラーが発生すると、例外を発生します

dpoDebugMessage
DirectXモジュールの制御上、何らかのエラーが発生すると、エラーの内容について、ddpd.debugというファイル名で、アプリケーションのあるディレクトリと同じディレクトリに書き出します。

 

リファレンス〜メソッド

Connect

function Connect(serviceProviderIndex:Integer):HRESULT;

 ServiceProverdes[serviceProviderIndex]で示されるサービスプロパイダを用いて、DirectPlay接続の初期化を行います。

 成功すると、DP_OKを返します

 

CreateSession

function CreateSession(sessionName:String; shortName,longName:String):HRESULT;

 Connectメソッドによって初期化したDirectPlayを用いて、新規にセッションを作成します。

 sessionNameにこれから作成するセッションの名前
 shortNameにそのセッションに参加させるプレイヤーのショートネーム
 longNameにそのセッションに参加させるプレイヤーのロングネーム

 を指定してください。shortName、longNameの使い分けは、アプリケーションで自由に行ってください。

 成功すると、DP_OKを返します

 すでにセッションに参加している状態でこのメソッドを呼ぶと、参加中のセッションから自動的に抜けてから、新たにセッションを作り、そのセッションに参加します。

 

InspectSession

function InspectSession(sessionIndex:Integer):HRESULT;

 Connectメソッドによって接続したホスト内に存在するセッションに、誰が参加しているかをしらべます。

 つまり、JoinSessionをしなくても、Playersプロパティの更新が行われます。

 但し、すでにセッションに参加している状態でこのメソッドを呼ぶと、参加中のセッションから自動的に抜けてしまいます。

 成功するとDP_OKを返します。

 

JoinSession

function JoinSession(sessionIndex:Integer; shortName,longName:String):HRESULT;

 Sessions[sessionIndex]で示されるセッションに参加します。

 shortNameにそのセッションに参加させるプレイヤーのショートネーム
 longNameにそのセッションに参加させるプレイヤーのロングネーム

 を指定してください。shortName、longNameの使い分けは、アプリケーションで自由に行ってください。

 成功するとDP_OKを返します。

 すでにセッションに参加している状態でこのメソッドを呼ぶと、参加中のセッションから自動的に抜けてから、指定したセッションに参加します。

CloseSession

function CloseSession:HRESULT;

 CrateSession , JoinSessionメソッドによって開かれたセッションをクローズし、セッションから抜けます。

 成功すると、DP_OKが返ります。

 

Send

function Send(toID:DPID; data:Pointer; dataSize:DWord):HRESULT;

 toIDで示されるセッションに参加している他のメンバーに、dataアドレスにある、dataSizeバイトのデータを送信します。

 toIDに、DPID_ALLPLAYERSを指定すると、セッションに参加している自分以外の全員にメッセージを送信します。

 成功するとDP_OKを返します。

注意

 すでにCreateSessionメソッドなどを使って、セッションに参加していないとこのメソッドは実行できません

 MyPlayerで示されるプレイヤー(自分自身)にSendすることはできません

 

Execute

function Execute:Boolean;

 接続の設定に必要なダイアログを表示し、セッションに参加します。

 ダイアログ内部でConnect CreateSession / JoinSession までを自動的に行います。

 接続が成立するとTrueを返します。

 

リファレンス〜イベント

OnComesNewChallenger

procedure OnComesNewChallenger(Sender:TObject; player:TDDPDPlayer; ShortName,LongName:String) of object;	

 他のプレイヤーがセッションに参加してくると、このイベントが発生します。

 

OnEscapeChallenger

procedure OnEscapeChallenger(Sender:TObject; player:TDDPDPlayer; ShortName,LongName:String) of object;	

 他のプレイヤーがセッションから出て行くと、このイベントが発生します。

 

OnArriveMessage

procedure OnArriveMessage(Sender:TObject; from:TDDPDPlayer; data:Pointer; dataSize:DWord) of object;

 他のプレイヤーからのメッセージが届くと、このイベントが発生します。

 NoMessageIDプロパティがTrueの時は、from引数にはNilが入ります。