Amazon 初売り

« GitHubのお勉強 | トップページ | 楽しく効果音を作るため、DSP AnimeとDSP Retroを購入してみた »

2015.11.15

EffekseerForDXLibをビルドできるようにしてEffekseerのネットワーク機能を使う

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

EffekseerForDXLibを使いながら
Effekseerのネットワーク機能を使いたい。

Effekseerのネットワーク機能についての
ヘルプに書かれている内容を引用

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

エフェクトの編集作業は、試行錯誤しながら微調整するし
冒険記側の画面に馴染んでいるかを確認する必要もあるため
メニューから.efkを出力する手間がかからずに
リアルタイムに編集内容が反映される仕組みというのは便利なんです!

EffekseerForDXLibではネットワーク機能が未対応とのことで
自分で実装しようと試みたところ、1つ気になる点がありました。

それはエフェクト再生の仕組みが
これまでに組み込んだEffekseerForDXLibを使ったものと
ネットワーク機能向けのEffekseerForDXLibを使っていないものの
2種類になってしまうという点です。

そこでEffekseerのフォーラムに質問を上げたところ
Effekseerの製作者さんがEffekseerForDXLibに
1つ関数を追加してくれました。

ただ、追加してもらった関数は、まだ正式公開版ではないため、
最新ソースがGitHubのリポジトリに上がっている状態です。
使いたい場合、自前でEffekseerForDXLibをビルドする必要があります。

自前でEffekseerForDXLibをビルドできると
今回のようにEffekseerForDXLibの正式リリース前の機能が使えたり
DXライブラリの新しいバージョンが出た時にも
対応するEffekseerForDXLibのビルドが自分でできるなど
何かと良いこともありそうなのでビルド環境を作ることにしました。

が、EffekseerForDXLibをビルドする環境を作るには
いろいろと準備が必要なのでした・・・

結構、大変だなぁと思いましたが
実は、現在の初音ミク冒険記もビルドできるようにするには
DXライブラリの他にも
Lua、EffekseerForDXLib、ssbpLib、ADX2LEが必要だし
それなりに大変なんだよね・・・
(ssbpLibとADX2LEは、サンプルを組み込んだところまでで
 まだ、使いこなせてませんが・・・)

脱線した。
EffekseerForDXLibのビルド環境構築です。

かげさんが作業した時点では
https://github.com/effekseer/EffekseerForDXLib
にある環境構築のところの説明だけだと足りないものがあったので
それを含めた手順をまとめました。
(マシンが故障した時とかに情報を探すのが大変そうなのでまとめてみた)

各種インストーラのハードコピーは撮り忘れたので
インストールの説明は、複雑そうなGit関連を詳しく書いています。

SourceTree(Gitクライアント)のインストールとGitHubの設定、clone

GitHubにあるソースのクローンをしないといけないので
Gitクライアントを導入します。

かげさんは、先日紹介した下記の本で使っているSourceTreeを使うことにしました。

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール

http://www.sourcetreeapp.com/ からダウンロードします。
インストーラに従ってインストールします。

最後の方に出てくる
「ライセンスに同意します」にチェックを入れて
「Download Complated」と表示されるまで待ち「次へ」

かげさんはグローバル無視設定ファイルの確認メッセージでは「Yes」を選択しました。
(バージョン管理ソフトで管理しないほうが良いファイルもあるので)

アカウントの追加画面は「GitHubのアカウント」があれば入力し「OK」
なければ「スキップ」を選択します
SSH Keyの読み込み確認は「No」を選択します。

SourceTreeはフリーソフトですがユーザ登録が必要です。
SourceTreeが起動したら、メニュー「ファイル」-「登録」を選択。
「今すぐ登録 無料」ボタンを押してメールアドレスを入力して「OK」。
名前やパスワードを入力して「登録」。

ここで、かげさんはGitHubのアカウントがなかったので登録しました。
https://github.com/ でニックネーム、メールアドレス、パスワードを入力して
「Sing up for GitHub」をクリック。
(パスワードは7文字以上、1文字以上小文字と数字を混在させる必要あり)
プランは「Free」を選択、「Finish sign up」をクリックでユーザ登録が完了します。

下記の手順でメールアドレスを認証します。
メールアドレスの認証画面が表示されたら「Emails」の画面が表示されるので
「Send verfication email」をクリック

GitHubからメールが届くので記載されたリンクをクリック

メール設定画面で該当のメールアドレスが表示されて
認証済(PrimaryやPublicのボタンが表示されたら)になってたら完了です。

一応、このタイミングでなくても画面右上の
「Setting」のアイコンをクリックすると表示される
アカウント設定画面の「Emails」から登録できます。

アカウントを作ったばかりだと「Userアカウント」になっているはずです。
複数人用の「Organizationアカウント」というのもありますが
この後の作業は「Userアカウント」で問題なく動きます。

次にSSH Keyを設定します。
SourceTreeの上にあるツールバーから「ターミナル」を選択

(既にSSH Keyがあれば、ターミナルで「ls -al -~/.ssh」と入力した時
 id_ras.pubかid_dsa.pubというファイルが表示されます)

SSH Keyがない場合、以下のコマンドを入力(-Cは大文字です)
「ssh-keygen -t ras -C "メールアドレス(email@example.com形式)"」

「Enter file in which to save the key」と表示されたらEnterキーを押し
パスワード(passphrase)を2回入力します

The Key fingerprint is:という表示がされたらSSH Keyができてます。

「clip < ~/.ssh/id_rsa.pub」
と入力してEnterキーを押すとSSH Keyがクリップボードにコピーされます

GitHubにアクセスし画面右上の「Setting」を選択後
左側の「SSH Keys」をクリックし、「Add SSH Key」をクリックします

「Key」に「clip < ~/.ssh/id_rsa.pub」でコピーした内容を貼り付け
「Add Key」をクリックします。

GitHubのパスワードを聞かれるので入力します。

次はターミナル側で
「ssh -T git@github.com」と入力
Are you sure you want to continue connecting (yes/no)?
と表示されたらyesと入力してEnterキーを押す

SSH Keyのパスワード(passphrase)を要求されるので、それを入力すると
「Hi (ユーザ名) ! You've successfully authenticated, but GitHub does not provide shell access」
と出れば、SSH keyの認証は成功です。

https://github.com/effekseer/Effekseer にアクセスし、右側にあるHTTPS clone URLにあるURLをコピーします

SourceTreeのメニュー「ファイル」-「新規/クローンを作成する」を選択
「Source URL」にコピーしたURLを貼り付けます。

「保存先のパス」にパソコン内の展開場所を指定して「クローン」をクリックします。

同様の操作を、下記のURLでも行います。
https://github.com/effekseer/EffekseerForDXLib なお、「保存先のパス」は上記と同じにします。

これでGitHubから最新ソースを取得できるので
https://github.com/effekseer/EffekseerForDXLib
にあるファイル準備の
EffekseerとEffekseerForDXLibをgithubからcloneし同じディレクトリに配置します。
(Root)/Effekseer/
(Root)/EffekseerForDXLib/
まで完了です。

DXライブラリの最新版をダウンロードして解凍し、EffekseerForDXLibの直下に配置します。
(Root)/Effekseer/
(Root)/EffekseerForDXLib/DxLib_VC/

ここからEffekseerForDXLibのコンパイルに必要なソフトをインストールします。

Python 3.x系(ビルド環境構築などで使用するため必須)のインストール

https://www.python.org/downloads/

からダウンロードします。

Windows で Python を使う
http://docs.python.jp/3.3/using/windows.html にも書かれていますが、Pythonの2.x系と3.x系は、互換がありません。

かげさんのマシンにはTracLightningがインストールされているため
Python 2.6系が入っていましたが
Effekseerの処理で使うPythonは3.x系のため、Python 3.5.0をダウンロードしました。

インストーラで
環境変数のPathについて聞かれるページではあえて環境変数には追加しませんでした。

こうすることで、普通にPythonを使おうとすると従来通りの2.6系が動き
TracLightningに影響がないためです。

なお、インストーラでPythonをインストールすると拡張子.pyの関連付けは
最新バージョンになるため、エクスプローラダブルクリックでは
3.x系が動くという風に切り分けました。

cmake(ビルド処理で使うため必須)のインストール

環境構築の説明には書かれていませんが、ビルド処理でエラーがでたので
Effekseerの製作者さんに確認したところ、cmakeは必要とのこと。

https://cmake.org/download/ からダウンロードします。

かげさんは誤ってRelease Candidate (リリース候補)の
cmake-3.4.0-rc3-win32-x86.exeをダウンロードしましたが
Latest Release (最新リリース)のcmake-3.3.2-win32-x86.exeの方が
良いと思います。

インストーラに従ってインストールします。
環境変数のPathの追加について聞かれるページではAll Usersにしました。

なお、EffekseerForDXLibをビルドする手順で使うcmakeは、
cmake.exeとcmake.batと2つあるのですが
以下の違いがあるようです。

また、cmake.batの方で使うchocolateyについては

ということでchocolateyはインストール不要とのこと。

■doxygen(ドキュメント生成ツールのため、無くても良い)のインストール

http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc

ということで無くても良いのはEffekseerの製作者さんに確認しましたが
doxygenは今後使うかもしれないのでインストールすることにしました。

上記のツイートにあるようにバッチの途中でcpでエラーが出ますが
気にしなくても良さそうです。

doxygenのバージョン確認のために
Effekseerのdoxygenのテンプレートを見ると1.8.5でしたが
かげさんは最新版のdoxygen-1.8.10-setup.exe をダウンロードしました。
(マイナーバージョンまで同じなので、多分大丈夫だと思ったので)

インストーラに従ってインストールします。

コンパイル

DXライブラリの最新版をダウンロードして解凍し、EffekseerForDXLibの直下に配置します。
(Root)/Effekseer/
(Root)/EffekseerForDXLib/DxLib_VC/

何らかの理由で最新版のDXライブラリを使いたくない場合、
現在DXライブラリを使ったビルドで使っているものを流用でも良いですが
DXライブラリは必ず3.14d以上のバージョンにする必要があります。

Effekseerをコンパイルします。
(Root)/Effekseer/release.bat
を実行します。

※前述したcpなど一部エラーが出ますが、特に気にしなくても良さそうです。

(Root)/EffekseerForDXLib/copy_package.py
を実行します。

※ここではVisualStudio 2015関連でエラーが出ました。
(かげさんの環境にはVisualStudio 2008~2013までは入っていますが、
 2015は入っていないので、おそらくそれが原因だと思います)

なお、copy_package.pyでは
VisualStudioの2012→2013→2015の順に2回処理するので
1回めで失敗した時に続行されるか不安だったので処理順序を
2012の2つの処理→2013の2つの処理→2015の2つの処理
と少し順番を入れ替えました。
(やらなくても問題ないと思いますが、念のため)

(Root)/EffekseerForDXLib/generate_release_package.py
を実行します。

その後
(Root)/EffekseerForDXLib/Dev/EffekseerForDXLib_vs2013.sln
をビルドします。

ここではVisualStudio 2013用ソリューションファイルでビルドしていますが
2012や2015でも良いと思います。
なお、EffekseerForDXLib_vs2013.slnには2つのプロジェクトファイルがありますが
サンプルの方はビルドが失敗しますが、それは気にしなくて良いです。

後は、http://effekseer.github.io/Help_DxLib/index.htmlの記載に従い
作業するだけですが、念のため、かげさんは初音ミク冒険記のビルドで使う
「プロジェクトに追加すべきファイル_VC用」フォルダをバックアップしてから作業しました。

で、コピー元のファイルは下記の通り
(Root)/EffekseerForDXLib/Dev/lib
にあるEffekseerから始まる.lib全部と
(Root)/EffekseerForDXLib/Dev/includeのEffekseerForDXLib.h以外、
(Root)/EffekseerForDXLib/Dev/EffekseerForDXLibのEffekseerForDXLib.h

これを
冒険記のビルドで使うDxLib_VC\プロジェクトに追加すべきファイル_VC用
フォルダにコピーします。

ひとまずコレで冒険記本体のビルドが通ることを確認します。

その後、
http://effekseer.github.io/Help_Runtime/Contents/network.html
(Root)/Effekseer/EffekseerRuntime101/RuntimeSample/NetworkServer
の記載を参考に冒険記側にサーバー機能を組み込みます。

g_server->Regist( (const EFK_CHAR*)L"test", g_effect );
の最後の引数は、Effekseerのエフェクトのインスタンス(実体)変数なので
この行の直前で追加してもらった関数を使います。

g_effect = GetEffekseerEffect(effectHandleServer);

引数で指定するのはLoadEffekseerEffectで取得したエフェクトハンドルです。
ネットワーク機能用のエフェクトハンドル名をかげさんは
effectHandleServerとしました。

これでeffectHandleServerのエフェクト再生処理を書いて
冒険記本体をビルドします。

Effekseerを起動して
effectHandleServerに対応するエフェクトファイルを開きます。

Effekseer側のネットワークの設定は
メニュー「ウィンドウ」-「ネットワーク」にあります。

Effekseernetwork

同じマシンなので、接続先は127.0.0.1。
ポートは60000(冒険記側でもサンプル通り60000を指定してます)
下のチェックボックスは、適宜変更で。
(かげさんは、編集時にデータを送信するをチェックしました)

「接続」ボタンを押すと、冒険記本体と接続されます。
(「切断」ボタンを押したり、冒険記本体を終了すると切断されます)

データを送信する系のチェックを入れていない時や手動でデータを送信する時は
「データ送信」をクリックすることで冒険記側に情報が送られます。

これでリアルタイムに冒険記側に反映されるようになりました!


 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

トラックバック

この記事へのトラックバックの一覧です: EffekseerForDXLibをビルドできるようにしてEffekseerのネットワーク機能を使う:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。