# ネットワーク

## 概要

Effekseerはアプリケーション側にサーバー機能を組み込むことによって、アプリケーションが起動中にEffekseerからアプリケーションで使用しているエフェクトをリアルタイムに変更することができます。

## サーバー機能の設定

「Runtime/NetworkServer.sln」を参照してください。

サーバーを生成するには「::Effekseer::Server::Create」関数を使用します。サーバーを開始するには「::Effekseer::Server::Start」関数を使用します。開始するときにポート番号を設定することができ、そこにEffekseerが接続することにより、リアルタイムの変更を行います。

    static ::Effekseer::Server* g_server = NULL;

    // サーバーの生成
    g_server = Effekseer::Server::Create();

    // サーバーをポート60000で開始
    g_server->Start( 60000 );

## エフェクトの登録

Effekseerから変更したいエフェクトをサーバーに登録する必要があります。「Effekseeer::Server::Regist」にて登録します。登録する際に文字列を設定する必要があります。この文字列には、編集したいエフェクトの元ファイルの拡張子を入れない名称を指定してください。例えば「test.efkproj」の変更を送る対象には「test」という文字列を設定してください。すなわち、ディレクトリだけ違ってファイル名が一緒の場合は、正しく変更が適用されない可能性があります。

    g_server->Regist( (const EFK_CHAR*)L"test", g_effect );

## サーバーの更新

サーバーは「Effekseer::Manager」を更新する前に毎フレームアップデートする必要があります。

    g_server->Update();

例えば、「test」という名称でエフェクトをサーバーに登録し、「test.efkproj」というファイルを編集すると、Effekseerの設定に応じてリアルタイムにアプリケーションで表示されているエフェクトが変わります。なお、テクスチャの変更は、アプリケーション側にもテクスチャが存在していれば可能となっています。

## クライアント機能の設定

「Runtime/NetworkClient.sln」を参照してください。

滅多に使うことはありませんが、Effekseerからだけでなく、クライアント機能を用いてもエフェクトを変更することができます。 「Effekseer::Client::Create」を用い、クライアントを生成し、「Effekseer::Client::Start」を用いて接続を行います。 データの送信にはEffekseer::Client::Reload」を使用します。

    static ::Effekseer::Client*　g_client = NULL;

    // クライアントの生成
    g_client = Effekseer::Client::Create();

    // クライアントをポート60000で接続
    g_client->Start( "127.0.0.1", 60000 );

    // 送信
    g_client->Reload( g_manager, (const EFK_CHAR*)L"test_reload.efk", (const EFK_CHAR*)L"test" );