« 2015年5月 | トップページ | 2015年7月 »

2015.06.29

Windows8でEffekseer本体を動かすにはDirectXのエンドユーザランタイムが必要なのね!

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

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

Windows8 の環境でEffekseerを動かそうとすると

描画画面の生成に失敗しました。DirectXのバージョンの問題、メモリの不足等が考えられます。
というエラーメッセージが出てEffekseerが起動しなかった。

ちなみに同じモジュールは Windows7 で動いていた。

なんでだ?

erroro.logが出ているから見てみよう。

System.TypeInitializationException: 'Effekseer.EffekseerNativePINVOKE' のタイプ初期化子が例外をスローしました。 ---> System.TypeInitializationException: 'SWIGExceptionHelper' のタイプ初期化子が例外をスローしました。 ---> System.DllNotFoundException: DLL 'Viewer' を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E) 場所 Effekseer.EffekseerNativePINVOKE.SWIGExceptionHelper.SWIGRegisterExceptionCallbacks_EffekseerNative(ExceptionDelegate applicationDelegate, ExceptionDelegate arithmeticDelegate, ExceptionDelegate divideByZeroDelegate, ExceptionDelegate indexOutOfRangeDelegate, ExceptionDelegate invalidCastDelegate, ExceptionDelegate invalidOperationDelegate, ExceptionDelegate ioDelegate, ExceptionDelegate nullReferenceDelegate, ExceptionDelegate outOfMemoryDelegate, ExceptionDelegate overflowDelegate, ExceptionDelegate systemExceptionDelegate) 場所 Effekseer.EffekseerNativePINVOKE.SWIGExceptionHelper..cctor() --- 内部例外スタック トレースの終わり --- 場所 Effekseer.EffekseerNativePINVOKE.SWIGExceptionHelper..ctor() 場所 Effekseer.EffekseerNativePINVOKE..cctor() --- 内部例外スタック トレースの終わり --- 場所 Effekseer.GUI.DockViewer.DockViewer_Load(Object sender, EventArgs e) 場所 System.Windows.Forms.Form.OnLoad(EventArgs e) 場所 System.Windows.Forms.Form.OnCreateControl() 場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 場所 System.Windows.Forms.Control.CreateControl() 場所 System.Windows.Forms.Control.SetVisibleCore(Boolean value) 場所 System.Windows.Forms.Form.SetVisibleCore(Boolean value) 場所 System.Windows.Forms.Control.set_Visible(Boolean value) 場所 WeifenLuo.WinFormsUI.Docking.DockContentHandler.SetVisible() 場所 WeifenLuo.WinFormsUI.Docking.DockPane.set_ActiveContent(IDockContent value) 場所 WeifenLuo.WinFormsUI.Docking.DockPane.ValidateActiveContent() 場所 WeifenLuo.WinFormsUI.Docking.DockContentHandler.SetDockState(Boolean isHidden, DockState visibleState, DockPane oldPane) 場所 WeifenLuo.WinFormsUI.Docking.DockContentHandler.set_DockState(DockState value) 場所 WeifenLuo.WinFormsUI.Docking.DockContentHandler.Show(DockPanel dockPanel, DockState dockState) 場所 WeifenLuo.WinFormsUI.Docking.DockContent.Show(DockPanel dockPanel, DockState dockState) 場所 Effekseer.GUI.GUIManager.AssignDockWindowIntoDefaultPosition() 場所 Effekseer.GUI.GUIManager.AssignDefaultPosition() 場所 Effekseer.GUI.GUIManager.LoadConfig() 場所 Effekseer.GUI.GUIManager.Initialize() 場所 Effekseer.Program.Exec(Boolean gui, String input, String output, String export, Single magnification) 場所 Effekseer.Program.Main(String[] args)

ん?
DLL 'Viewer' を読み込めません:指定されたモジュールが見つかりません。
って、同じフォルダにViewer.dllがあるんですが・・・

ここから先が分からず、別の作業をしていたら
Effekseerの制作者さんが

DirectXのEndUserRuntimeがはいってないからじゃないかと思います。

と教えてくれた!

さっそくググってみると
Windows8にゲームなどに必要なDirectX9.0cをインストールしてみる
という記事を発見。


サポートされるオペレーティング システムは
Windows 7, Windows Server 2003 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Vista, Windows XP Service Pack 2, Windows XP Service Pack 3
となっているのでWindows8は入っていないが、使えるらしい。
DirectX エンド ユーザー ランタイム Web インストーラ

2016/06/19追記
上記のURLでつながらない場合、下記のリンクだとダウンロードできるかも
DirectX 9.0c End-User Runtime



2016/08/07追記
2016/06/19に追記したURLだとWindows8ではインストールできても
Windows 8.1やWindows 10だと、インストール段階で弾かれるようです。
こちらのリンクにアクセスしてください。
https://www.microsoft.com/ja-jp/download/details.aspx?id=35&


ダウンロードできたら「dxwebsetup.exe」を起動すれば
必要な環境はインストールされるみたい。

そして無事にEffekseerがWindows8でも起動できた!

Effekseerの制作者さん、情報提供ありがとうございます!

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

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

2015.06.27

ゲームエフェクトとセーブに関する疑問

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

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

どこでもセーブできる系のアクションRPGの場合、
エフェクト再生中にセーブして
一度ゲームを終わらせて
セーブしたデータをロードした時、
エフェクトの再生状態はどうやって保持しているんだろう?

普通に考えると
エフェクトハンドルはゲーム起動のたびに変わるはずなので
エフェクトハンドルを保持することに意味はない気がする。

となるとエフェクトにIDをつけて、
エフェクトIDからロードしたエフェクトハンドルを
再度関連付けし直すんじゃないか?
というところまでは想像できた。

でも、再生途中のコマ数とかは、どこで持っているんだろう?

エフェクト再生ハンドルから現在のエフェクトの再生コマ数を取得したり
エフェクト再生時にどのコマから再生するか指定する
ってのがあれば、実現できそうな気がする。

だが、EffekseerForDXLib.hを見た感じだと
エフェクトを更新する関数はあっても、
現在どこまで再生しているかを取得するような関数は無さそうに思う。

ちなみに市販のエフェクトツールのBISHAMONは
どうなっているんだろう?
と思って以下のURLでAPIを確認したが、やはりそれらしいものは無い。

BishamonSDKDocument
Function
http://www.matchlock.co.jp/products/document/sdk_document/unity/group___d_l_l.html

キャンプメニューに入るとか一時的な中断なら
今のままでも問題無いと思っているんだけど
どこでもセーブできること考えると
フレーム数が長いエフェクトほど見た目上の問題が出る気がする。

例えば攻撃のエフェクトの場合、
エフェクト再生中にセーブして、そのデータをロードした時、
攻撃などのタイマーの都合で先に攻撃モーションが切れて
当たり判定が消失するのに
攻撃エフェクトだけ再生されるといったことがある気がする。

逆にロードした時にはエフェクトを再生しないといった場合
目に見えない当たり判定が残ることがありえる。

こういうのがあるから、
アクションゲームだとセーブポイント制が多いのかな?

Wikipediaのセーブポイントゲームによると
https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%BC%E3%83%96%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88_(%E3%82%B2%E3%83%BC%E3%83%A0)

プレイヤーの緊張感を高めるためやプログラム上の都合のため、セーブできる箇所を制限するものがある。
・どこでもセーブできると、挽回できない場面でセーブしてしまう場合がある。
・どこでもセーブできると、場当たり的にセーブしがちである。
 前項のほか貴重アイテムの消費などセーブ前にしてはいけないことについてプレイヤーに考えさせる。
・セーブポイントの設置によって、別のレベルの難易度調整を加えられる。
・再開時にセーブポイントまで大きく戻ることで、ゲームオーバーに避けるべき動機付けをする。
とある。

別にエフェクト再生が、とかは書いていない・・・

そもそも、なぜ初音ミク冒険記で、
いつでもどこでもセーブ方式にしたのか?

実は、かげさんがアクションゲームを
作ったことが無いから、というのが理由だったりする。

アクションゲームの場合だと特定の条件下でしか発生しない
不具合とかが多そうな気がしていて
その不具合が発生する条件の再現がしやすいようにしておきたい!
という思いがあったのだ。
(セーブポイント制だとそのマップまで移動しないといけないから
 デバッグ効率が悪いと思ったので)

実際、初音ミク冒険記では特定のマップでの当たり判定、
イベントフラグの組み合わせパターンの考慮漏れといった
特定条件でしか見つからない不具合も多々残っている。

原因がわからないものとかは、セーブデータとして残しておいて
何か解決の糸口を思いついたら対応するということをしている。

このため、障害チケットには
セーブデータ何番を使って再現テストするといった記載もしている。
追加のセーブ情報としてデバッグ用にセーブデータコメント機能を
つけたのもこの辺りの事情が関係している。

「いつでもどこでもセーブ」と「セーブポイント制」は
こう考えると一長一短に思う。

まぁ、セーブデータの方式の考察は、この記事の本題じゃないから
このくらいにしておこうか、
エフェクトの再生中にセーブしたデータをロードした時の話だ。

おそらく想像では、EffekseerのAPIの内部とかBISHAMONのAPIの内部では
エフェクト再生時のコマ数とかフレーム数は保持していると思う。

かげさんのマシンにインストールされていないBISHAMONは置いておくとして
Effekseerに再生中エフェクトのコマ数の取得や設定ができるか、
何かエフェクト再生状態のセーブ、ロード機能がアレば良いのだが・・・

これが気になったのは、
現在一時的に表示されるエフェクトでコマ数が絡みそうなのが
実は敵の消失エフェクトくらいしか無くて
しかも一時的に表示されるエフェクトはセーブデータに含めていない。

敵の消失なのでロード時にエフェクトが再生されなくても
問題無いと思っていたからだ。

クイックステップやバックステップ、クイックムーブなどは
移動キーを押している状態でないと発動しないので
ロードした直後にキーを押していなければ
解除されるから特に問題視していなかった。

ストライクショットやヒールでは、モーション中は硬直時間があるので
キャンプメニュー等の操作ができないから、コレも問題なかった。

エフェクト再生できるようになるなら、やっぱりセーブしたいんだが・・・

いつでもどこでもセーブにこだわらなければ
現在のリトライと同じくマップ入口スタートにしたり
セーブポイント制にして、
そもそもエフェクト情報をセーブしないようにする
という回避策もあるんだよなぁ・・・

うーむ。

2015/07/19追記
この記事を書いた後のEffekseerの製作者さんとのやりとり



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

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

Effekseerの2Dエフェクトの描画順

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

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

記事にするのを忘れていました。

Effekseerを使うにあたっての疑問
で書いた描画の順番の話です。

一部再掲になりますが
Boukenkideeffekseer2

この画像だとミクの下の赤いエフェクトが
ミクの手前じゃなく、ミクの奥で描画して欲しいといったことはできるんだろうか?

例えば、初音ミク冒険記だと
1.マップレイヤー1(超ゆっくり動く背景)
2.マップレイヤー2(ゆっくり動く背景)
3.マップレイヤー3(ミクと一緒の速さで動く背景)
4.エフェクト1を再生(赤いエフェクト)
5.ミクを描画するレイヤー
6.マップレイヤー4(ミクと一緒の速さで動くけどミクより手前の背景)
7.マップレイヤー5(ミクより早く動くミクより手前の背景)
8.エフェクト2を再生(緑のエフェクト)
というのがあったとして
上から順番の描画順にしたい。

Effekseerの製作者さんに相談したところ
・DrawEffekseer2D_Begin
・DrawEffekseer2D_Draw
・DrawEffekseer2D_End
という関数を作ってくれました!

このため、こんなふうに目的とすることができました!
Boukenkideeffekseer3

・DrawEffekseer2D_Begin
・DrawEffekseer2D_Draw
・DrawEffekseer2D_End
の3関数の中身としては、
DrawEffekseer2Dの中身を分解した内容とのことで
DrawEffekseer2Dとの併用はしてはいけません。

使い方としてはエフェクトを使いたいところで
以下のようにするイメージです。

DrawEffekseer2D_Begin();
DrawEffekseer2D_Draw(effectHandle);
DrawEffekseer2D_End();

なお、

	while(ProcessMessage() != -1){
// 画面消去(ループの最初に必ずする)処理
ClearDrawScreen();
DrawEffekseer2D_Begin();
数々の描画処理(この間でDrawEffekseer2D_Drawを使う)
DrawEffekseer2D_End();
// 画面入れ替え(ループの最後に必ずする)処理
ScreenFlip();
}

のようにProcessMessageの最初のほうでDrawEffekseer2D_Beginして
最後のほうでDrawEffekseer2D_Endする
というのではなく、エフェクト描画のところだけピンポイントで
DrawEffekseer2D_BeginとDrawEffekseer2D_Endでくくるようにします。

つまり、上の図だと赤いエフェクトと緑のエフェクトで
それぞれ
・DrawEffekseer2D_Begin
・DrawEffekseer2D_Draw
・DrawEffekseer2D_End
を呼び出しています。

さて、ここでかげさんが気になったのは
UpdateEffekseer2Dのタイミングです。

EffekseerのサンプルのプログラムだとUpdateEffekseer2Dは
DrawEffekseer2Dの直前にあります。

・DrawEffekseer2D_Begin
・DrawEffekseer2D_Draw
・DrawEffekseer2D_End
の3関数の中身としては、
DrawEffekseer2Dの中身を分解した内容ということは順番はどうなるの?
順番は入れ替わっても良いの?

ということで、Effekseerの製作者さんに確認しました。
すると

DrawEffekseer2D_Begin
DrawEffekseer2D_Draw
DrawEffekseer2D_End
間に処理がある
DrawEffekseer2D_Begin
DrawEffekseer2D_Draw
DrawEffekseer2D_End
間に処理がある
UpdateEffekseer2D
みたいに、ProcessMessageのループ内で
ScreenFilp前ならどこでも良いみたいです。

うん、疑問が1つ解決してスッキリした!

あ、そういえば、そもそもなぜこんなことを疑問に思ったのかを
書いていなかった気がする・・・

この本にゲームエフェクトの大雑把なカテゴリ分け
というのが載っていたからです。

BISHAMONゲームエフェクトデザイン入門 (GAME DEVELOPER BOOKS)

■キャラクターに属するもの
武器の軌跡や魔法の演出などがあり
アクションエフェクト、バトルエフェクトなどとも呼ばれる。
キャラクターの特定のアニメーションの特定タイミングで表示する事が多い。
常に体が燃えているなどの恒久的なエフェクト(溶岩系の敵とか)や
水辺に入ったら水しぶきといった特定条件下で表示するエフェクトがある。

■背景に属するもの
暖炉の炎、木陰から差し込む光、バリアなど
特定の場所に設置して表示し続けるエフェクト。
マップエフェクト、BGエフェクトなどとも呼ばれる。

■画面に属するもの
画面(カメラ)にたいして表示するエフェクト。
必殺技での集中線とか、雨や雪をカメラの特定部分に降らせるなど。
ポストエフェクトで、がめんそのものに様々な効果を与えることもある。


この中の「背景に属するもの」としてやりたいことが
いくつかありまして、
それもマップ制作が進んでいなかった理由の1つだったりします。

で、Effekseerが使えるなら、やりたかったことが実現できるかも!?
と考えた時に、DrawEffekseer2Dだと
「画面に属するもの」とか「キャラクターに属するもの」はできそうだけど
2Dゲームで「背景に属するもの」をやろうとすると
エフェクトが常に最前面だと困るのです・・・

ちょっと今の初音ミク冒険記だと例が見つからないけど
例えば、先の例だと「暖炉の炎」をやる場合
ミクが暖炉の炎の前を通る時に炎だけ前に出ると困るなぁと思ったのです。

背景エフェクトは、いくつもAstlibraの実装例があるので
それを真似できる所は真似しようと思っていたのですが
そもそもマップのグラフィックが全然出来ていないので
エフェクトの実装どころじゃなかったんですよね・・・

まぁ、それは今も変わんないのですが、
それでもやりたいと思ったことの実現可能性が高まったのは嬉しいです!
Effekseerの製作者さん、関数の追加、ありがとうございます!

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

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

2015.06.23

Visual Studioのバージョン間の違いについて(2008 → 2012)

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

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

軽く書くつもりだったが
また、長文になってしまった・・・

最近の記事を読んでくれている人にとっては
くどいかもしれないけど
現在のかげさんのデスクトップ環境は、
以下のようになっています。

Windws 7:Visual Studio 2008
Windws 8:Visual Studio 2012

以前は、ノートパソコンに
Visual Studio 2010の環境もあったのですが
初音ミク冒険記を2008で作っていた関係で
実家に帰る時にノートパソコンを持って行った時に
2010のソリューションに変換されるといった面倒くさいことがあったので
Visual Studio 2010の環境はアンインストールしちゃいました。

なので、2010に関する情報は残念ながらありません。

2015/07/20追記
2008→2010以上のタイミングが一番面倒なようです。

Windows8に2012を入れることにした段階で

Visual Studio 2012のソリューションファイルを
Visual Studio 2008で開けるようにしたい
と思っていました。

ここからは毎回Visual Studioと入力するのが面倒なので
以下、Visual Studioを「VS」と省略します。

さて、マイクロソフトの情報によると
旧バージョンの Visual C++ からのプロジェクトのアップグレード

というページに
ビルドシステムは
VS2005で導入されたビルドシステムはVCBuild。
それがVS2010からMSBuildに変わったとあります。

つまり、かげさんのメイン開発環境のVS2008は
VCBuildを使ってます。

さらに「ビルド システムの変更点」には

.vcproj → .vcxproj
.vsprops → .prop

とある。

つまり、ソリューションファイルから連携している
プロジェクトファイルは、ファイル形式が変わった。

そして、プロジェクトのプロパティシート
要するにコンパイラやリンカーなどのビルドツールのスイッチ、
ユーザ定義マクロとかが変わったらしい・・・

他にもデバッグと配置の設定のユーザファイル、
VC++ディレクトリの設定が変わったようだ。

もしかして、VS2012にした時にリンクの情報とかが落ちた原因は
コレじゃないだろうか?

Effekseer用にVS2012にした時のことを考えてみる。
・DXライブラリのパスが抜けたのはコンパイラ指定
・リンカーの設定が変わったのはビルドツールのスイッチ
・デバッグ時のコマンドライン引数が消えたのはユーザファイル

うん、上記は、ビルドシステムの変更点から来ている感じがする。

リンカーのSAFESEH のスイッチに関連するリンクエラーは
DXライブラリの掲示板に
VisualStudio2012について」という記事があり書いてあった。

VS2012でReleaseビルドすると起きる問題というのが載っていたので
これはDXライブラリとVSとの関係で発生するみたいなのでOKだ。

「PDB形式に互換性」については
リビルドではなくビルドにした関係で、
2012のビルドで生成されなかったPDBが
2008形式のPDBのまま残っているからだと思うので、これもOKだ。

ということで、VS2008 → VS2012のバージョンアップで
Effekseerの導入に当たって調べた長い道のり?3
に書いた問題の原因は、一通り納得できた感じだ。

ビルドシステムの変更点が中心だったことを考えると
アップグレード時点の指定を何か間違ったのかもしれないな・・・

それとVSのバージョンアップで面倒くさい記憶があったのは
もしかするとノートを2010にした時にこのあたりのことで
面倒だと思ったのかもしれない・・・

さて、ここまでの情報を前提条件として、ちょっと考えてみる。

.vcproj → .vcxproj
.vsprops → .prop

これは、ファイル形式が変わっているみたいなので
おそらくソリューションファイルのアップグレード時点で
バックアップとして従来の古い設定ファイルが残っている気がする。

残っていればプロジェクトファイルとプロジェクトの設定は
問題ないことになる。

ソリューションファイルについて考える
これまでのVSの各バージョンのソリューションファイルの構成から
想像ではVC++のバージョン情報とかVSのバージョン情報のコメントが変わって
プロジェクトファイルの拡張子が
新しい拡張子の方に変わっているだけじゃないだろうか?

この予想の元、VS2008の初音ミク冒険記と
VS2012のEffekseerを導入した初音ミク冒険記のフォルダをDFで比較する。

まず、フォルダを比較すると
バックアップフォルダが新しくできているので、後で確認する。

初音ミク冒険記を起動して作業に使ったフォルダが変わってるのはいいとして
SoundとTextureのフォルダが増えてるのはEffekseerの関連なので問題なし。

他に増えているのは、Effekseerの導入で試しに置いたエフェクトファイルなので
これも問題ない。

変更が入ったソースもEffekseerの導入関連で変更したソースなので問題なし。

そして、変換レポート(UpgradeLog.htm)が見つかった。
そういえば、そんなのがアップグレードした時に表示された気もする。

それによると

HatsuneMikuBoukenki.sln: このバージョンと Visual Studio 2010 SP1 でプロジェクトを問題なく開くことができるように、このプロジェクトには機能とは関係のない変更を加える必要があります。
と書かれている。

うん、結局、変更が必要ってのは最初から書いてあった(笑)

そして、このメッセージから想像すると
VS2010 → VS2012だと問題なく移行できるんじゃないかと思えてきた。

この情報は、もしかするとVS2010 → VS2012に
バージョンアップしようとするときには役立つかもしれない。
(未検証だから、推測の域は出ないけど・・・)

2015/07/20追記
Visual Studioの2010、2012、2013をインストールしたので
VS2010のサービスパックを当ててから
Astlibraの4章の頃のソースを使って
2010でソリューションを作って2013で読み込む実験をした。

ソリューションファイル.slnなどのバージョンアップは
自動で行われるもので問題なくて、
リビルドしただけで2013で動きました。

1箇所SAFESEHの警告が出ましたが、
リンカーの設定を変更することで解決できました。

ソリューションの変換は、C#側も2008→2010が問題が起きやすそうなメッセージが出てた。
VC++だと2012→2013は割と単純みたい。

他には変換レポートには

HatsuneMikuBoukenki.vcproj: VCWebServiceProxyGeneratorTool はサポートされなくなりました。このツールはプロジェクト設定から削除されました。
とあった。
そんなものは使っていないはず、なので問題なし。

HatsuneMikuBoukenki.vcproj: プロジェクト ファイル 'D:\Visual Studio 2008\Projects\HatsuneMikuBoukenkiEffecseer\HatsuneMikuBoukenki.vcproj' を変換しています。 HatsuneMikuBoukenki.vcproj: 新しいプロジェクト ファイル 'D:\Visual Studio 2008\Projects\HatsuneMikuBoukenkiEffecseer\HatsuneMikuBoukenki.vcxproj' に変換されました。
これはvcproj → vcxproj変換がうまく言ったということでOKだ。

それとBackupフォルダができていて、そこに
HatsuneMikuBoukenki.sln
HatsuneMikuBoukenki.v11.suo
がバックアップされていた。

なるほど、ソリューションファイル(.sln)と
ソリューション ユーザ オプション(.suo)が退避されているのね。

それじゃあ本題のソリューションファイルとかを見てみよう。

Vs_version_df01

左がVS2012、右がVS2008だ。

色が白い所は、同一内容のファイル
黄色い所は、違いがあるファイル
灰色の所は、存在しないファイル

vcprojが変わっているが、これは確認したところ
Vs_version_df02

Win7とWin8でLuaのライブラリのフルパス指定のドライブ文字の違いが
2箇所(includeとlib)だったので、予想通り変更なしと見て良い。

問題のソリューションファイル。

Vs_version_df03

差があるのは2~4行目の3行だ。

行ごとに差分を見てみる。

Vs_version_df04

うん、最初の2行は予想通り、VSとVC++のバージョンが変わってて
最後の1行は、VC++のプロジェクトファイルの拡張子が
.vcproj → .vcxproj となっているだけである。

結論:予想通り

ということで
VS2012側の.slnとvcprojのバックアップを取ってから
VS2012側のフォルダにVS2008フォルダにある
.slnとvcprojを上書きする。

これでWindows7のVS2008側で.slnを開けるはず・・・

うん、開けたね!

これでビルドして2008で「ビルドができなければ」期待通りだ。

現在はEffekseer関連が2012、2013限定なので
Effekseer関連のことでビルドエラーが出るはず。

じゃあ、リビルド!

ん? 予想してたのは、
「VisualStudio(C++)2012,2013のみ対応しています。」という
ビルドエラーなんだけど

fatal error C1083: include ファイルを開けません。'stdint.h': No such file or directory
とか出てる・・・

stdint.hってC99のヘッダじゃなかったっけ?
2008でもありそうなんだけど・・・

まぁ、いいや。
エラーになるのがEffekseer.hということは、
EffekseerForDXLib.hの中からincludeしているからなので
Effekseer関連のエラーといえば、そうとも取れる。

念のため


#if 1900 > _MSC_VER && _MSC_VER >= 1700
#include "EffekseerForDXLib.h"
#else
#error VisualStudio(C++)2012,2013のみ対応しています。
#endif

としてビルドすると期待通り、2008だから
「VisualStudio(C++)2012,2013のみ対応しています。」という
ビルドエラーになった。

よし、Effekseer関連のロジックは
myEffect.cppに固めるつもりをしているから
そこで上記のように、Effekseer関連のロジックを
VC++のバージョンによる分岐を作れば
2008でEffekseer関連のロジックをビルドしないようにできるはず。

今回は、.slnと.vcprojを上書きコピーしたけど
2008側のファイルをEffekseerForDXLibの
サンプルソリューションファイルの名前を真似して
HatsuneMikuBoukenki.sln

HatsuneMikuBoukenki_2008.sln
のように_2008をつけて、_2008.slnの中の.vcprojのファイル名を
_2008付きにしてやれば、同じcppやhを利用して
2008と2012の両方で起動できるようになる。

こうしておけば、cppやhが増えた時とかリンクするlibが増えた時は
増えたソースやライブラリの追加方法をまとめた記事を作っておくことで
XPやVISTA環境で初音ミク冒険記のソースを古いVisual Studioで開けるので
新しいバージョンのVisual Studioをインストール出来ない環境の人も
フォローできるんじゃないかな?

これで、ななしあさん、satoshifukushimaさん、フライさんたちの
マシンのOSがWindows 7以上になっていなかったとしても
初音ミク冒険記のソースを参考にし易いんじゃないかと思う。

Visual Studio 2008で開ける状態を
キープしておきたいのの理由は
エフェクトツールBISHAMON、Effekseer、Prominenceのこととか、いろいろまとめたかったけど、実際は、まとまりきっていないZE☆
にも少し書いたように
初音ミク冒険記に関してのコメント率の高い人たちの
環境がXPやVISTAという話が出ていたからだ。

最近はコメントをもらえていないから
普段は見てもらえていないのかもしれないけど
2012年とか、制作の早い段階から
初音ミク冒険記の開発の励みになるコメントをくれている人たちを
ガン無視する形でVisual Studioをバージョンアップするのだけは
避けたいと思ってたから、なんとか目処が立ちそうで良かったと思う。

とりあえず、Effekseer関連の処理をmyEffect.cppに持って行き
Luaから呼び出せるところまでは、今の環境のまま作業しようと思う。

で、それができたら、
Win8側にVisual Studio Community 2013を入れて
Effekseer関連のビルドに問題が起きないことを確認して
今回みたいにVS2012とVS2013のソリューションや
プロジェクトファイルの比較をしてとやって
その上で、VS2013でビルドが通ったソースのままで
VS2008で開けるというのを検証できてから
メイン開発環境にVS2013を入れようと思う。

若干くどい回り道だが、たぶん検証にも意味はあるでしょうってことで。

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

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

2015.06.21

Effekseerの導入のテスト動画

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

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

ども、EffekseerのDXライブラリのサンプルを参考に
初音ミク冒険記に組み込んでいるかげさんです。

エフェクト作成ツールEffekseerで作られたエフェクトを再生できるんで
せっかくなので組み込み途中のテスト動画を作ってみました。

動画編集は超手抜きです。

AVIUtilとかで解説用字幕の表示タイミング調整とかが面倒だったので
CeVIO Creative StudioのONEで解説を作って適当に調声した上で
それを流しながら1発撮りするとかやってます。

でも、音量調整とかしてないので、ONEの声が小さくなっちゃいました・・・
もうちょっと初音ミク冒険記本体のBGMや効果音の音量下げても良かったかもしれません。
まぁ、雰囲気は伝わるんじゃないかと。

動画を再生するには、videoタグをサポートしたブラウザが必要です。

なお、ブルーワームの弾が途中で消えるのは
たぶん、エフェクトの再生時間の都合だと思います。

Effekseerでエフェクトをバリバリ作れるようになれたら
楽しいことになりそうですね!

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

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

2015.06.20

Effekseerの導入に当たって調べた長い道のり?3

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

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

Visual Studio 2012がインストールできたので
Effekseerのサンプルを動かしてみます。


ここのリンクが、かげさんが検証した時のサンプルの場所になります。
https://t.co/MZOLDCQOnv

2015/06/21修正
上の取り消し線のところでは、
かげさんが検証した時のサンプルの場所をリンクしてましたが
現在は削除されて下記のURLになっているとのことです。

DXライブラリのフォルダの指定が相対指定になっているみたいで
展開された「プロジェクトに追加すべきファイル_VC用」フォルダを
見てくれているようで、サクッと動きました!

こうなると初音ミク冒険記に組み込んでみたくなります!

さて、ここで現状の初音ミク冒険記本体のソースフォルダ
HatsuneMikuBoukenkiをコピーして
コピーしたフォルダ名をHatsuneMikuBoukenkiEffekseerに変更。
(Visual Studioのバージョン違いによる問題が起きた時の対策です)

実は今、記事を書いていてHatsuneMikuBoukenkiEffecseerと
kとcを間違えてたことに気づきました。
いかん、いかん・・・

早速、Visual Studio 2008版のソリューションファイルを開きます。

まずは、おもむろにF5キーで、この段階で動くかの確認です。

はい、予想通りVisual Studio 2008 → Visual Studio 2012に
ソリューションファイルをコンバートする時に
勝手に落とされる情報がありました・・・

プロジェクトのプロパティの項目がいくつか抜け落ちてます。

error C1083: include ファイルを開けません。 'DxLib.h': No such file or Directory

ということで
DXライブラリのパスは、2か所の指定どちらも落ちていたので
DXライブラリのホームページのVisual Studio 2012の設定を
見ながら設定し直しました。

また、Luaのパスは、「..\」を使った相対パスにしていたつもりが
2箇所、「F:\」から始まる絶対パスになっていました。

Windows7とWindows8のデュアルブートだと
ドライブレター(ドライブの文字)が変わるので
Windows7でFドライブだったのは、Windows8ではDドライブになってるので
変更が必要です。

次にリンクエラーの話。

error Lnk2026: モジュールは SAFESEH イメージには安全ではありません。
ってやつだ。 そもそも日本語がおかしい気がするけど これはVisual Sutdio 2012のエラーなんで ツッコミは無しでお願いします

こいつは「構成プロパティ」-「リンカー」-「詳細設定」にある
「安全な例外ハンドラーを含むイメージ」で
いいえ(/SAFESEH:NO)を選択すると回避できました。

error LNK1207: ~の PDB形式に互換性がありません。 削除して再度ビルドして下さい。

初音ミク冒険記は、
基本的にプロジェクト構成をReleaseで作っているのだが、
Releaseフォルダにできるpdbファイルの形式に互換性がないようで、
Relaseフォルダの拡張子pdbのファイルを削除する必要がありました。
(単純にリビルドしたほうが良かったのかもしれません)

ちなみにReleaseモードでも
ブレイクポイントを使ったデバッグはできるので、
かげさんは初音ミク冒険記の本体の開発では
Debugモードでコンパイルすることはほとんどありません。
(C#側の開発ツールは何も考えずDebugモードですが・・・)

Debugモードでビルドするとデバッグ情報が付く。
Releaseモードの方がexeファイルが小さくなるのはこのためだ。
exeファイルのサイズが小さいとロードが早いし、
Releaseモードでだけポインタ系エラーが出る
なーんてことがあることを経験的に知っているので
VC++の時は、Releaseモードでしか開発していないのです。

これで起動できたものの、今度はデバッグ時に設定されているはずの
コマンドライン引数が外れてました。
初音ミク冒険記はコマンドライン引数に1とか適当なのをつけると
ピアプロ・キャラクター・ライセンスなどの説明を省略して起動できる
開発用モードがあるのです。

ここまでで、Visual Studioのバージョン違いによる問題は解決!

Effekseerのサンプルを見る限り、ほとんどコピペでいけるはずと
思っていたんですが、どこに貼り付けるか考えないといかんのぉ・・・
という状態に。

何気に初音ミク冒険記の初期化処理は
結構いろいろとやっています。

そもそも初期処理にしても、
・プラットフォームのプレ初期処理
・DXライブラリの初期処理
・プラットフォームの初期処理
・ゲームシステムの初期処理
とやってることが多いのです・・・

とりあえずコピペの場所は、
サンプルのDXライブラリの関数を目安にしました。

ソース修正は、終わったので
ビルド前に環境の確認をします。

サンプルのお手軽なところは
DXライブラリの「プロジェクトに追加すべきファイル_VC用」が
そのままあるところです。

DXライブラリの使い方解説は
コチラを参考にどうぞ。

上記リンクのVisual Studioのバージョンごとの説明で出てくる
「プロジェクトに追加すべきファイル_VC用」が展開されたフォルダに
なっています。

念のため、今現在DXライブラリを使っている人は、
今現在の「プロジェクトに追加すべきファイル_VC用」として設定しているフォルダを
名前を変更するなどしてバックアップしておいて
展開された「プロジェクトに追加すべきファイル_VC用」フォルダを
コピーすると良いでしょう。

なお、既にDXライブラリを使っている人だと
DXライブラリのバージョンを変えずに済ませたいという人もいると思います。

が、ココで問題があります。
かげさんはココでハマりました。

error LNK1104: ファイル 'DxDrawFunc_vs2012_x86.lib'を開くことができません
とかが出て、全然、リンクが通りません・・・

たしかにEffekseerのサンプルには、エラーになっているlibファイルがあり
かげさんが元々使っていたDXライブラリ3.13dには存在しません。

なのでエラーが出るファイルを
地道にコピーしてビルドを繰り返していきました。

が、libを開けないの後には

error LNK2005: ~は既に DxLib.lib(DxGraphicsWin.obj)で定義されています
と言ったエラーが大量に出て、今度こそ意味不明な状態に・・・

Effekseerの開発者さんに確認してみたところ
Effekseerから始まるlibではないので
DXライブラリの古いバージョンと新しいバージョンの競合が
原因ではないか?とのこと。

DXライブラリのバージョンを変えずに済ませる時は
readme.txtに書かれている
Effekseerから始まる6個のlibファイルと
Effekseerから始まる3個のhファイルをコピーするんですが
問題は、コピー先にあるDXライブラリのバージョンです。

2015/06/21追記
上のlibファイルの個数ですが、
かげさんが検証した時とは現在違って増えているみたいです。
詳細は、実際にreadme.txtを参照してください。

実は、DXライブラリの3.14cとそれ以前だと
DXライブラリの中の構成が結構変わっているみたいで
3.14cからは、~_vs2012_x86.libという類のlibが大量に増えています。
(過去バージョンのDXライブラリのフォルダ比較で確認しました)

どうやらこれが原因で競合が起きているみたい。
なお、2015/06/20時点ではDXライブラリは3.14cではなく
3.14dを使った方が良いです。
3.14dだと前の記事で書いた2013だと動かない
という問題も解消されます。
(が、かげさんがハマっていた段階では3.14dは公開されていなかった)

ということで、かげさんところの
「プロジェクトに追加すべきファイル_VC用」フォルダを
Effekseerのサンプルにあった
「プロジェクトに追加すべきファイル_VC用」フォルダに
ごっそり入れ替えて実行!

すると
Boukenkideeffekseer

やりました!

実は、かげさん、寝る直前にここまで確認した関係で
テンションが上がりすぎて、全然眠れませんでした・・・

さすがに翌日の仕事に影響しそうで
思わず精神安定剤を飲んで寝たくらいです。

かげさんにとっては、そのくらいの事件だったのです!

そして
Effekseerを使うにあたっての疑問」につながるのでした。

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

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

Effekseerの導入に当たって調べた長い道のり?2

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

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

Windows アップデートをした後は
Visual Studio 2012の入手なんですが
そもそもVisual Studio 2012にしようとした理由を書いてなかった。

Effekseer003

というのと次の画像はタイムラインの都合で
画像の下から上に向かってみてもらうと良いかもです。
Effekseer004

とこのようにVisual Studio 2013が良いという話の流れでした。

が・・・
実はこの段階ではEffekseerの開発者さんが
DXライブラリの掲示板で
VS2013のLibについて」という
やりとりをしている段階でVisual Studio 2013では
うまく動かなかったようです。

Effekseerの開発者さんも
Effekseer005
というツイートをしていました。

これが2012になった理由です。

この記事を書いている段階では
上記の問題は、解決したとのことで
2013でもイケるから、
Visual Studio Community 2013にした方が良いと思う。

なお、Visual Studio 2012以降じゃないとダメな理由を
Effekseerの開発者さんに教えてもらいました。

Effekseer006

なるほどッて感じです。

えーと、意味がわからない人もいると思うのでちょこっと書くと
C++11というのは、Wikipediaにもあるように2011年時点の
最新C++のISO標準です。
http://ja.wikipedia.org/wiki/C%2B%2B11

C++って、Visual C++、Borland C++、Objective C++など
いろいろありますよね。
それで標準的なC++のルールをまとめようぜってことらしいです。

ブラウザの世界でHTML5が話題になった時にも
Internet Explorerだけ、
めっちゃ波に乗るのが遅かったってのとかにも似てますが
これそれぞれのC++がすぐに完全に対応しているかというと
そうでもないんですよね・・・

たしか今はC++14という2014年時点のC++のISO標準もあったはず。

こんな感じで開発言語自体も洗練化されていっているわけです。

さっきの話に戻すとC++11は、2011年時点のものです。
なのでVisual Studio 2010には反映されているはずもなく
必然的に2012以降じゃないと反映されていないってことになるんです。


ゲームエンジン・アーキテクチャ 第2版

この本でもC++11のことについて書かれているので興味はありました。

また、かげさんも個人的に
C++のenumでコロンコロンしたい。(warning C4482)
と思っていたってのもあります。

warning C4482
C++11以降に関連するんですよねぇ・・・

こういった前提知識があったので、先のツイートに納得だったのです。

さて、2012のインストールの話に戻ります。

最初、かげさんはVisual Studio 2012を
Visual Studio のダウンロード
からしようとしたんですが、Visual Studio 2012のリンクがない・・・

Visual Studio Community 2013や2010のExpressはあるんだが・・・

ということで、このリンクは2013にするのに使うために
この記事に書いておいて
Download Microsoft Visual Studio Express 2012 for Windows」から
改めてダウンロードする。

上のページで濃いオレンジのダウンロードボタンを押して
「VS2012_WDX_JPN.iso」にチェックを入れて次へでダウンロードします。

ちなみにwdexpress_full.exeの方が簡単なんで
wdexpress_full.exeをダウンロードしてダブルクリックでも良いです。

wdexpress_full.exeは
内部で結局VS2012_WDX_JPN.iso相当のものを
ダウンロードするんでどっちでも良いんですが
ダウンロードの後にダウンロードがされるのがしゃくなので(笑)

ちなみにアホかと思うんだけど、IEで上記操作をすると
自社のサイトなのにポップアップブロックが出るんだよねぇ・・・

それを解除するとダウンロードが始まります・・・

ダウンロードしたファイルをつかってインストールします。
Microsoft Visual Studio 2012 Expressのダウンロードとインストール
という記事を参考にしても良いかもしれません。

長く使うかもしれないので、一応プロダクトキーは
もらっておきました。

はい、これでWindows 8 + Visual Studio 2012までは
準備出来ました。

次の記事では、
Effekseerのサンプルを動かしたりするところを書きます。

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

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

Effekseerの導入に当たって調べた長い道のり?1

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

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

最初に1つことわっておきます。

この記事は、かげさんの環境的な都合もあって時間がかかったという話で
この記事を見る人は、もっと簡単に済むかもしれません。

なお、Visual Studio 2012以降をインストール済みの人は
Effekseerの導入に当たって調べた長い道のり?3」へどうぞ。

記事の投稿順としては、
1つ前の記事である「Effekseerを使うにあたっての疑問」よりも
この記事を先に書くべきだったのだが
あの記事はかげさんがEffekseerの開発者さんに教えて欲しかったので
書いたのだったりする。

Effekseerの開発者さんとのやりとりはTwitterを中心にしてました。
さすがに文章量が多すぎてやりとりしづらかったんですよねぇ。

さて、そろそろ、
1つ前の記事「Effekseerを使うにあたっての疑問」を書くまでにしたことや
調査したことをまとめようと思う。

なお、この情報は、2015年06月14日の週の情報です。
この記事を読む段階によっては、情報が古くなっているかもしれません。

ちょっと「エフェクトツールBISHAMON、Effekseer、Prominenceのこととか、いろいろまとめたかったけど、実際は、まとまりきっていないZE☆
の記事と重複するところもあるかもしれないけど、
そこも含めてご容赦を。

すごく前置きがながくなったけど、ここから本題です!

まず、このように動かすためにした環境について書いてみる。
Boukenkideeffekseer2

OS:Windows8
開発環境:Visual Studio 2012 Express
DXライブラリ:3.14c(2015/06/20現在は3.14d以降が良いです)
Effekseerの開発者さんに教えていただいたサンプル

Effekseer001

というツイートがあったので
サンプルソースは、ここを参考にしました。
https://github.com/effekseer/EffekseerForDXLib/blob/master/Dev/Sample2D/main.cpp

が、サンプルソースだけ見ても環境が・・・
と思っていたらすぐにこのツイートが流れてきました。

Effekseer002


ここのリンクが、かげさんが検証した時のサンプルの場所になります。
https://t.co/MZOLDCQOnv

2015/06/21修正
上の取り消し線のところでは、
かげさんが検証した時のサンプルの場所をリンクしてましたが
現在は削除されて下記のURLになっているとのことです。
https://t.co/Qf2fS6w93h

書きやすさの都合で先にサンプルの場所を書いたけど
ちょっと戻って、OSをWindows 8にした理由とか
Visual Studioを2012にした理由も書いてみようと思う。

現在の初音ミク冒険記のメイン開発環境は、以下の通り。
OS:Windows7
開発環境:Visual Studio 2008 Express
DXライブラリ:3.13d

前述の動かすためにした環境とは、全部一致してません。

まず、Windows 8にした理由なんですが、
これは、かげさんの開発環境をVisual Studioを2012にする必要があったためです。

いかん、この書き方だとVisual Studio 2012を使うためには
Windows 8が必要に思うかもしれないと混乱させちゃいますね。

以下は、マイクロソフトの公式サイトの情報です。
開発ツール対応 OS 一覧
http://www.microsoft.com/ja-jp/dev/support/tools.aspx

リンク先を見てもらうと分かりますが
Visual Studio 2012を使う場合、OSはWindows 7以上である必要があります。

ということで、実はVisual Studioを2008→2012にするのに
OSを7→8に変える必要は、ありません。

じゃあ、なんでOSを変えたかというと、
Visual Studioをバージョンアップして
既にあるソリューションファイルを開くと
Visual Studioは、
ソリューションファイル(.sln)とか
プロジェクトファイル(.vcproj)のバージョンを上げようとするのです。

2015/07/20追記
上記の説明は、一部間違っています。
正しい情報は以下のリンクを参照して下さい。
Visual Studio Version Selectorの話

バージョンを上げなくても何とかすることもできるんですが
たしか、バージョンを上げないと、ソリューションファイルを開くたびに
アップデートするかというのを確認されたはず。

そう、何回も開いていると
勢い余ってアップデートしてしまう危険性があるのです。

まずはEffekseerをうまく導入できるのかを検証したいので
そこで間違ってバージョンが上がってしてしまうと
古いVisual Studioではそのソリューションファイルを開けなくなります。
これは避けたいところです。
(厳密には開く方法はあるんだけど、それはまた別の記事にします)

2015/06/23追記
Visual Studioのバージョン間の違いについて(2008 → 2012)

また、経験上、Visual Studioのバージョンを上げた時には
ソリューションファイルやプロジェクトファイルのアップグレードで
何らかの不具合が起きることがあるのを知っているので
そこでハマってしまう可能性も考えると、
メイン開発環境を「直接バージョンアップするのは避けたい」
という意識が最初に働きました。

ちなみにVisual Studioは、
1つのOSに複数バージョンインストールすることもできます。

が、当然、後から入れたバージョンの方に拡張子が関連付けされるので
古いバージョン側を開きたくて新しいバージョンを開いちゃった
とか、よくやりそうな気がします。

ということで、まずはメイン開発環境以外で試してみよう!
という気になりました。

Visual Studio 2012をインストールできるのは
Windows 7以降なので、それを考慮すると
インストール先の候補は3つありました。

1.ノートパソコンのWindows 8.1
2.メイン開発環境とデュアルブートできるWindows 8
3.メイン開発環境のVMWare上のWindows 8環境

実は、後から4つ目の選択肢として
VMWareでWindows 10 Insider Preview 上でってのも思いついたのですが
既にサンプルを動かせるようになってからだったので不採用に

かげさんはWindows 8が出た直後に激安だった時に
Windows 8 Proを3つ購入してたので上のような選択肢がありました。

最初の1つは、マシン購入時がWIndows8発売直前で1,200円
残り2つはそれぞれ3,300円でゲットしてました。

1は、まず最初に対象外としました。
実は以前、Visual Studio 2010を入れていて遅かったので・・・

最初は2ではなく3にしようとしてました。
2だと環境を切り替えるためにマシンの再起動が必要だからです。

VMWareというのは仮想環境を動かすソフトです。
仮想環境って何だ? って人向けに簡単に説明すると
現在起動しているOSを起動したまま、
別のマシンとしてOSを動かすようにするって感じです。

つまり最初にやろうとしたのは
Windows 7でVMWareを起動して、
VMWareで作った仮想マシンにインストールしたWindows8を動かそう
ということです。

Windows 7を起動しながらWindows 8の環境も動かそうぜってこと。

こうすればWindows 7の環境は崩さずに
Windows 8を動かせるのでWindows 8を再起動している最中は
Windows 7で作業を進められます。

この方法の難点は、ディスク容量とメモリです。
ディスク容量は、なんとかなるけどメモリは・・・という人も多いと思いますが
かげさんのマシンは、購入時のキャンペーンでメモリ倍増が無料だった関係で
メモリを32GB積んでいるから仮想マシンに
メモリを4GBとか8GBとか割り当てても問題ないのです。

が、ここで罠が待っていました。
たぶん、原因は、先日グラボをGTX-980に載せ替える時にした
BIOS SWITCHの変更だと思うのですが
これまで何度も起動していたVMWare上のWindows8が起動しないだと!?

Windowsは、マザーボードが変わると
別のマシンに既にインストール済みの
Windowsを載せようとしたと判断します。

起動してくれないことにはOSの認証(アクティベーション)も動かねぇ・・・

しかも、なんか作業中だったのか、
その仮想マシンは電源が入った状態で中断していて・・・

むむむ・・・となりました。

軽く調べたけど理由がわからないので、それは捨てて2の案を採用します。

が、ここでもWindows 8を起動したら問題が発生!

ハードコピーとか撮っていなかったので関連する情報のリンクを張ります。
Windows8 電話によるライセンス認証方法とライセンス移行の注意点

元々XP, Vista, 7まではインストールしても30日間はお試し期間として
勝手に認証されることはなく、ライセンス認証をする際もタスクバーに
「認証してください」の吹き出しが出たり、
ライセンス認証ウィンドウが出て認証するボタンをプッシュする必要がありましたが
Windows8はセットアップ後、インターネットに繋げると勝手にライセンス認証されます。

先に書いたように、かげさんはWindows 8を正規に購入しています。
なので、当然、以前は正規にライセンス認証が通っていました。

が、今回起動したらグラボ交換でBIOSを切り替えた影響で
別のマザーボードとして認識されてライセンス認証が通らないのです・・・

グラボ交換やBIOS切り替えのことは以下の記事に書いてます。
(こうやって書き出すと、スゲー量だな。
 これも別途記事にしたほうが良かったかも・・・)
グラボを交換したんだががが・・・
グラボの件は、購入したところに問い合わせてみた
よくよく考えたら、そうだよね~
うん、ドライバインストールしたら元に戻った
MSIサポートから連絡が来たが・・・
今日、仕事はお休みです
グラボ関連でBIOSアップデートはギブアップした
そして、グラボには異常がなかった
コメントから始まる一筋の光明、BIOSアップデートができた!
無事にMSI GTX-980 GAMING 4Gが動いた!
BIOSスイッチを切り替えた影響だねぇ

つーことで、正規品なのに起動できず、むむむ・・・となりました。
で、
Windows8 電話によるライセンス認証方法とライセンス移行の注意点
にあるようにしぶしぶマイクロソフトに電話しました。

ちなみにオペレーターに繋がるまでの
プッシュボタンの操作(7桁×9個分)が長くて大変でした・・・
何分かかったのだろう・・・

でオペレータさんにつながったので
WIndows 8のライセンス認証をしたい旨、
なんでこんなことになったのかを説明した上で
6桁×8個分の数字を入力してライセンス認証ができました。

グラボ交換のためにBIOS SWITCHを切り替えてたら
マザーボードのメーカーがサードウェーブ(ドスパラの会社)から
本来のマザーボードのメーカーであるMSIにかわったことで
別のマザーボードと認識されたという話をしたら
あっさり納得してくれました。
きっと他にも事例があったのでしょう。

別のマシンにインストールしたわけじゃないので
ダメだと言われても困るんですがね・・・

次はVisual Studio 2012の入手なんですが
ここまでだけでも長くなったので、次の記事にします。

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

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

2015.06.18

Effekseerを使うにあたっての疑問

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

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

6月はサウンド周りのプログラムを想定していたのですが
Effekseerの開発者の方にtwitterで連絡をもらえたので
やりとりをしながら
初音ミク冒険記の画面エフェクトに
Effekseerを使うための修正をしているかげさんです。

Boukenkideeffekseer

サンプルプログラムを参考に、こんな感じで
Effekseerのエフェクトを読み込んで表示できるところまでは行けました。

ここまでたどり着くまでの過程は、
書くと長いんで別の記事にまとめようと思っています。

2015/06/20追記ここから
Effekseerの導入に当たって調べた長い道のり?1
Effekseerの導入に当たって調べた長い道のり?2
Effekseerの導入に当たって調べた長い道のり?3
ここまで

今は、初音ミク冒険記でEffekseerを使いやすくするための
ローカル処理を考えているところです。

そこで疑問に思ったんだけど
2Dゲームで複数レイヤーでエフェクトが動くとどうなるんだろう?

例えば、初音ミク冒険記だと
1.マップレイヤー1(超ゆっくり動く背景)
2.マップレイヤー2(ゆっくり動く背景)
3.マップレイヤー3(ミクと一緒の速さで動く背景)
4.エフェクト1を再生(赤いエフェクト)
5.ミクを描画するレイヤー
6.マップレイヤー4(ミクと一緒の速さで動くけどミクより手前の背景)
7.マップレイヤー5(ミクより早く動くミクより手前の背景)
8.エフェクト2を再生(緑のエフェクト)
というのがあったとして
上から順番の描画順にしたい。
要するに上から順番に描画するので

この時
PlayEffekseer2DEffect
SetPosPlayingEffekseer2DEffect
UpdateEffekseer2D
DrawEffekseer2D
の関係はどうなるんだろう? って話です。

たぶん、PlayEffekseer2DEffectとSetPosPlayingEffekseer2DEffectがセットで
UpdateEffekseer2D、DrawEffekseer2Dがセットだと思うんだけど
画像レイヤー1~3がDrawGraphやDrawExtendGraph、DrawRotaGraph系なんだが
どうしたら描画順番が期待した通りになるのかな?

UpdateEffekseer2D、DrawEffekseer2Dの引数にエフェクトハンドルがないから
ScreenFlipみたいに最後に1回だけで良いのかな?
だとしたら、PlayEffekseer2DEffectとSetPosPlayingEffekseer2DEffectは
描画順序がどうなるのかな?

DXライブラリのDrawGraph系はその時点で描画してしまっていると想定しているのが
描画順序が気になる原因なんだろうか?

Boukenkideeffekseer2

この画像だとミクの下の赤いエフェクトが
ミクの手前じゃなく、ミクの奥で描画して欲しいといったことはできるんだろうか?

それとも、この考え方がおかしくて2Dだと
エフェクトは常に最前面に描画するものなんだろうか?


2015/06/27追記
この疑問が解決した記事はコチラ
Effekseerの2Dエフェクトの描画順

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

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

2015.06.14

エフェクトツールBISHAMON、Effekseer、Prominenceのこととか、いろいろまとめたかったけど、実際は、まとまりきっていないZE☆

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

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

最初に書いておくと
この記事は、過去に書こうと思ったことと
昨夜から今日にかけて調べたことなども交えて
勢いで書いたので、かなりグデグデ、かつ、超長文です。

6月はサウンド周りだな!と過去記事に書きましたが
この記事はエフェクト関連の話が中心です。
(なお、シェーダ周りも調べたことはあるんですが、今回はパスします)


昨日、Astlibraの作者のKEIZOさんとProminenceという
エフェクトツールのことをtwitterでやりとりをしていました。

KEIZOさんの最近のツイートの中では
Effekseer(エフェクシア)の話題もあったようです。
(Effekseerは、新しいサイトを構築中のようなので
 構築の邪魔にならないようにリンク先を現在のURLにしています)

これがキッカケでEffekseerの公式twitterアカウント@Effekseer から
「どのあたりが難しかったでしょうか?」という話を振ってもらったので
情報交換させてもらえました。

twitterの情報は、あっという間に流れてしまうので
重要なのはお気に入りに登録したんですが
ちょっとまとめておこうかなと思います。

まとめ記事のつもりだけど、全然まとまっていないってのは秘密です。

一度ブログの記事にしておくと、
初音ミク冒険記のTracのWikiページからリンクが張れるので
後から見返しやすいのです。
(TracのWikiでまとめページを作ると、検索とかが便利なので)

まぁ、そんな言い訳はいいや、本題、本題。

かげさんとKEIZOさんの共通見解としては

Effekseerは、エフェクトづくりの前段階、自分のゲームにどう組み込むのか
という初期導入が難しく感じていました。

この点はDXライブラリとEffekseerを組み合わせたものの配布の
公開を検討していただけているみたいですので
じきに解消されると思います。

また、かげさんにとっては、Prominenceの方が
8x8とかの連続画像を出力できる分
DXライブラリでLoadDivGraphを使えば良いといった
実装イメージが容易に想像できたってのもありました。

しかし、この点は、完全にかげさんの調査不足でした。

Effekseerでも前から使えたことを教えていただきました。

githubに情報があるので
気になった時にソースが見れて、いろいろと便利かも!
https://github.com/effekseer

後はサンプルソースとかが
クラスを使ったコーディングになっていたので
ほぼクラスを使わない実装にしている今の初音ミク冒険記だと
どうしたものかなぁ?というのがありました。

クラスを使う → オブジェクト指向プログラミングになる → C++を使う
ってことで、C++よりもCの方が実行速度が速いのでC++的なものは
極力使わないようにしていました。

まぁ、オーバーロードとかを使いまくっている時点でアレですし
そもそもC++にするんだったらtolua++を使えるんで
Luaのグルーコード作成には便利なんですがね・・・
さんざん、手でグルーコード作ったんで、手順も確立しているので
もう今さらって感じもします

Effekseerの公式twitterアカウントからの返信にもありましたが
最近のPCのスペックだとクラスを使用しても影響が全くないくらい高速であることと、
機能が充実して開発効率が大分上がっているのでVS2013以降をおすすめ
とのことです。

PCスペックだと確かにその通りだと思う。
でも、元々初音ミク冒険記は、PSP版として作っていたこともあって
開発当初は動作的に軽いというのは、結構重要に思っていたんですよねぇ・・・。

ゲームエンジン・アーキテクチャの本でも普通にC++のことがたくさん載っていますし
商用ゲームだとC++にしない方が管理しづらいとは思います。
オブジェクト指向ならtry~catchの例外トラップもし易いしね!


かげさんはVS2013だと、Express 2013 for Windows Desktopという認識でいました。
DesktopがつかないのはWindows 8.1向けだから、
現在のWindows 7 SP1だと使えないはずだと思っていたからです。
さらにDXライブラリの導入ページでExpress 2013 for Windows Desktopがあった
というのもあります。

これもかげさんの調査不足だったのですが
個人のフリーの開発だったらVisual Studio Community 2013が良いみたいです。

個人限定ですがいままで数万してたバージョンが無料で使えます。
(具体的には小規模なチームのために設計および最適化された
 Visual Studio Professional 2013 のすべての優れた機能が含まれています)
当然、Express 2013 for Windows Desktopでも問題ない

とのこと。

VS2013について調べようと思ったけど
例によってマイクロソフト公式ページは最新バージョンの情報しか無くて探しにくい・・・

公式よりも、こっちのほうが分かりやすいかもしれない。
「Pro相当機能が無料!」と話題になった「Visual Studio Community」の光と“影” - Build Insider

将来的にExpressのアップデートが止まることを考えると
Effekseerの公式twitterアカウントで教えてくれた
「Visual Studio Community」にした方が良さそうに思ってます。
(Pro相当ってことはインストールするのにディスク容量が食いそうだが・・・)

安定したらCommunity 2015にしたいところですが
2015previewだと問題があるようで
DXライブラリの掲示板にこんなスレッドがありました。
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=3427

この問題が解決するまでは、バージョンアップできても2013までかなぁ。

実は前々からVS2008からバージョンアップしたいとは思っているのですが、
めったにないもののネットから切り離しているXPのマシンでコンパイルしたい時があって、
2010以降はXP未対応なのでバージョンアップしていなかったりします。

まぁ、めったにないのでバージョンアップ直前のソースをバックアップしておいて
何とかするんでも良さそうに思ってはいます。

他の理由としては、初音ミク冒険記をWindows版にする時に
コメント率の高い人たちのOSがVISTAだったというのもあります。

2013とかだとVIASTが対象外OSになっていますからね・・・

もっとも、ソリューションファイルとか一部の問題で
現状のソース自体は、2008以降であれば、どのバージョンでも良いんで
そのあたりをフォローする記事を書けば良いかなぁと最近は思ったりしてます。

といっても、
実はバージョンアップしたい理由の1つに
C++11の機能を使いたいというのもありまして、
これを使いはじめると
古いバージョンだと未対応なのでダメなんですよねぇ・・・

C++11というのはWikipediaにもあるように2011年次点の最新C++のISO標準です。
http://ja.wikipedia.org/wiki/C%2B%2B11

いかん、エフェクトツールの話から脱線してきたので話を戻そう。


最近のエフェクトツールは3D対応になっています。
(Prominenceも3DバージョンのProminence3Dが出ています)

一応、初音ミク冒険記の内部では
ゲーム内の座標を3次元で管理できるようにしてるので
3Dじゃなきゃダメとなっても、若干対応しやすいはずなのですが
座標管理はともかくとして、初音ミク冒険記自体は2Dゲームなので、
Effekseerが分割画像以外で2Dゲームでも使えるのか気になって確認しました。

すると、こちらのゲームでは
「カメラを正面に置いて使っている」という情報をもらえました。
http://www.nicovideo.jp/watch/sm25714862
参考になる有益な情報でした。

2013以降を導入した時には、改めてEffekseerも使ってみたいと思いました。


実は、かげさん、初音ミク冒険記で実装するエフェクトを作るにあたり
2年前に以下の3つのエフェクトツールの比較をしていました。

・BISHAMON
・Effekseer
・Prominence

過去記事を検索しましたが
比較についての記事を書いたことがなかったようなので書いてみます。

まず、一番最初に見つけたのは、商用のBlendMagicの流れを組むBISHAMONです。

いろいろな動画やプレゼン資料を見ていて使いたいなぁと思いました。

Bishamon for DXライブラリ
という記事があり、この作者さんがDXライブラリの管理人さんと情報交換している
掲示板記事もあったので
DXライブラリでも使えそうなのがポイントが高かったのです。

が、有償ソフトです。
買い取りで5万、年間契約でも約1万円します。
さらに当時だとDirectX 9.0c対応のSDKの購入が必要で18,000円くらいしました。
最近出た1.8は、DirectX 11のSDKになるようです。
(DirectX 11は、Windows7以降、VISTAでもインストールすれば使えます)

趣味で作っているゲームとしては
買い取りのパターンだとしてイニシャルコストが高く、
買い取りでない場合でもランニングコストが高いという問題がありました。

普通に購入すると高額だった
「Adobe Creative Suite 6 Production Premium」を個人で持っている奴が
何を言っているんだって気もしますが


旧製品なので今は売っていないと思います。

Creative Cloudだとランニングコストが月々数千円するので
Creative Cloudが出始めた時期に通信教育に絡めて安くゲットしました。
安いと言っても、そこそこのPCが購入できる値段でしたが・・・


コスト面が、という話になると
無償のソフトで似たようなものが無いのか? と思います。

そこで見つけたのがEffekseerです。

Effekseerの公式twitterアカウントへはバージョン0.50αの頃に使おうとした
というやりとりをしていたのですが、ダウンロードしたzipファイルを見ると、
どうやら0.17とか0.40とかも調べようとしていたようです。

2013年6月頃に調べようとしてたみたいですが
2013年6月は、復職以降で最も「うつ症状」がひどかった時期なので
(精神安定剤を毎日2~3錠とか飲んでいた時期)
たぶん、調べたことをブログ記事にまとめる元気がなかったのだと思います。

Windows版の初音ミク冒険記の開発環境はVisual Studio Express 2008。

このため、ゲーム制作日記さんの
EffekseerをVisual Studio 2008、DXライブラリ製のゲームに組み込む
という記事を参考にしていました。

この記事が0.17なので、0.17をダウンロードしたみたいです。
なので調査当時の安定バージョンは0.40で、お試し版として0.50αがあったのだと思います。

DirectXのSDKが必要だったり、
0.50αのソリューションファイルがVisual C++ Express 2010だったりして
素直に使えなかったというのがあり、ソリューションファイルのダウングレードとかも
調査したものの、結局うまく行かずに諦めてしまいました。

おそらく精神的に大丈夫な時期なら、もうちょっと調査したと思います。
が、そもそもインフラ系の仕事でうつになった身なので
環境回りでハマった時の精神状態と言ったら、かなりヒドイもので
うつ症状が強く出ていたこの時期だと、
とてもじゃないけど、「もうちょっと」なんていう元気は無かったのです。

そもそも、初音ミク冒険記もエフェクトをゴリゴリ作って
見栄えを良くしていくってのの相当前の段階だったので
(まぁ、現在の作業進捗も似たようなものなんですが・・・)
一旦、そこで調査事態を中断としました。


それでもエフェクトへの興味はあったのでAstlibraを参考に
地震エフェクトとか、フラッシュエフェクト、強調表示の演出とか
VC++側ロジックで組めるものを真似したりしていました。

この作業をしたのは東京に1ヶ月出張していた頃で
毎週、宿泊先が変わるという状況の中で進めた作業で
ほとんどAstlibraのパクリだったので、自分で考えた部分は少ないんですが
それでも、やっていて楽しかった記憶があります。

当時は、宿泊先を転々としていたので、
落ち着いてブログ記事を書いてられなかったので
東京から戻ってから
少し演出のプログラムをしてみた」という記事を書きました。


東京出張から戻ってきて、その後に見つけたのがProminenceです。
今は3D対応のツール(開発コードネームはCoronaでしたが、正式名称はProminence 3Dです)もありますが、2Dでも使いやすそうだったのと
見つけた当時「PhotoshopとProminenceで作るゲームエフェクト」Vol1~3が
セットで単品購入より安価な800円でゲットできたのがポイントでした。

せっかく持っているPhotoShopが役に立ちそうなのと
そもそもテクスチャの作り方からProminenceの使い方までを
一連の流れで理解できるというのが大きかったです。


その後、Prominenceの作者様のサイトやtwitterを継続して見ていたところ
BISHAMONゲームエフェクトデザイン入門」の情報がありまして

BISHAMON ゲームエフェクトデザイン入門
2014年06月30日に書籍のブログ記事を書いたところ
2014年07月01日にProminenceの作者様からツイートしていただきまして
その後、「BISHAMONゲームエフェクトデザイン入門」の著者の一人である
mokoさんからツイートをいただきました。

Kakotweet001_2

その後はmokoさんのツイートからもエフェクト関連の情報収集をしています。

ブログの記事にも書きましたが
BISHAMONゲームエフェクトデザイン入門」は、
600ページ中、260ページまではBISHAMONの説明ではなく
テクスチャとかモデリング、エフェクトの基本の説明が載っています。

また、この本だと、かげさんが持っているAfter Effectsを使った作例もあり
読んでいるだけでも面白かったです。


基本的にかげさんが、まとまった体系的に情報を好む傾向があるので
書籍とかプレゼン資料とかのように、まとまっている情報を好んで調べます。

もっとも書籍を探すにしてもプレゼン資料を探すにしても
入口はネット情報なんで情報が見つけやすいというのも重要だと思います。

Prominenceは、作者さんのサイトにブログ記事もありましたし、
ユーザが作った投稿エフェクトも多数掲載されており見ているだけでも面白かったですし
その投稿エフェクトをブログ記事にしてくれることで
投稿されたエフェクトに見た人がコメントを付けられるというのも
交流している感じがして良いと思います。
(記事にしてもらえた投稿者も嬉しいと思います)

BISHAMONのように掲示板があるというのも
情報がまとまるのでいろいろと調べやすいです。

そこにいくと、ちょっとだけEffekseerは
このあたりが弱かったように思います。
(今思うと、調べ方が甘かったようにも思いますが・・・)

求めている情報
(現在の開発環境のVSのプロジェクトをどう設定すれば
 使えるようになるのかといったこと)
が非常にわかりにくかったような記憶があります。

逆に言うとその辺りが整備されれば、
Effekseerはもっと普及するような気がしてました。
というか、こういうツールを使いたい人はいっぱいいると思ったので。

ちなみにEffekseerの作者さんが現在作成中のサイトは

画像投稿可能なユーザーフォーラム作ろう・・・

というツイートがあったりして
いただいた情報を見ている限り、以前より、かなり「わかりやすそう」に思います。

サンプルプログラムを見ると
クラスを意識しなくて良さそうで処理フローもスッキリした分かりやすいサンプルでした。
https://github.com/effekseer/EffekseerForDXLib/blob/master/Dev/Sample2D/main.cpp
最新情報に注目ですね!

3D対応の面ではProminence3Dが最近出来たこともあり
Prominence3Dより先に進んでいると思います。
エフェクト描画に効果音を合わせられるというのもポイントが高い気がしてます。
どうしても同期が必要なことだと思うので。

Prominence3Dは、
パラメータがEffekseerよりも直感的な気がしているので
エフェクト初心者には使い勝手が良さそうに思っています。
(動画説明のおかげでイメージしやすかったからだと思う)
Effekseerを最初起動した時は、あまりのパラメータの数に
エフェクトツール未体験だったので
何が何だか分からない気がしたから
そう感じたのかもしれません。

ただ、これは新しいバージョンのEffekseerとの比較ではないので
公平な意見とは言えないと自分でも思ってます。

また、BISHAMONの本もそうでしたが、
テクスチャの作成からの一連の流れの説明があった分
分かりやすく感じている部分も大きいと思うからです。

各ツール一長一短がありますが
無償のツールで比較対象があるってのは良いと思うな。
(選択に迷う、ってのもありますが


Effekseerを改めて調べていて
Effekseer ってUnityでも使えるのか!と思って歓喜したら、
Proが必要らしく、ってことは15万オーバーなので、
個人開発では無縁な話だった・・・と最初は思いました。

BISHAMONでもUnity対応はProってなってたから仕方ないのかも?
と思ったからです。

Effekseer+Unityで、なぜ歓喜したかというと、
Oculus Rift+Unityを将来やってみようと思っているので、
(グラボをGTX-980にしたのは、その前準備です)
そっちで使えるのでは!?と期待が膨らんだからです。
でも、Proだと個人では手が出せないな・・・と思いました。

エフェクトツール Effekseerの 最近事情2014
http://www.zengeren.com/content/data/15/15_Effekseer2014.pdf
という、うえしたさんのPDFの29ページを見て
Unity Pro (¥157,500)が必要というのがあったので
そう思ってツイートしたら
上のPDFのうえしたさんからのツイートをもらいまして

Unity5ならPersonalでもEffekseer使える

との情報が!

これは、ヤバイ!
Effekseer、超良いかもしれない!
Oculus Riftをゲットした暁には絶対試さなきゃ!


と、かなりテンションがあがってきたので、ここで若干話題変更。
今の初音ミク冒険記だと
エフェクトの見栄えを考える際には大きな問題も抱えています。

それは画面サイズです。
現状、PSP版の頃からの名残でゲーム画面のサイズは480x272です。

これだと今の高解像度のディスプレイだとエフェクトどころか
文字が小さすぎるという問題があります。
ちまちまフォントサイズを調整したりしているのは
このあたりから来ています。

画面サイズについては、いろいろと考えていることもある分
長くなりそうなので、この記事ではこのあたりにして、
別の記事にしようと思います。
(既にグデグデの記事になっているから記載は残すけど
 この話題自体、書かなきゃ良かったかも?


これまでの初音ミク冒険記の制作の過程から思うこと
・コーディング自体が楽しい → たぶん、職業病です(笑)
・BGMやSEを探していると良い音と出会うことで想像が膨らむ
・アクションボイスなどの声が付くと、なんか楽しい
・画像準備やコーディングが大変なこともあるけど
 画像やエフェクトが付くとテンションが上がる

画像やエフェクトなどで見栄えが良くなるのは
楽しいし、モチベーションアップに非常に有効だと感じてます。

綺麗に見せるためにはアニメーション用の分割画像を多数用意する必要があり
これだとゲームデータに入れる画像サイズが大きくなってしまいます。

KEIZOさんによると現在のAstlibraだと
エフェクトだけで22メガほどの容量になるようです。

これがエフェクトツールを使うことでテクスチャ容量も減った上で
ヌルヌル動くようになるってのは嬉しいです。
(容量を気にしなければ、分割画像方式でもヌルヌル動くはず)

なので、EffekseerとかProminenceといった
エフェクトツールがあると、とても助かります。


今回、Effekseerの公式twitterアカウントとのやりとりで
かげさんの調査不足だった部分を教えてもらえたのも
とても助かりました。

Visual Studioについては、このところを業務で使っていない分、
情報収集が甘かったのが分かり、調べるキッカケをもらえて良かったです。


ちなみに、ヌルヌル動かすという意味では、
初音ミク冒険記で使っているミクの画像は、
元々MikuMikuDanceの3Dモデルのポーズを連続画像にしているので
3Dモデルで動かすほうが良いんですよね。

ただ、2Dより3Dの方が難しいと
「ゲームプログラマになる前に覚えておきたい本」
にも書いてあったってのもありますが
ねんどろ風なこともありグッドスマイルカンパニーの著作権とか
そもそもMikuMikuDanceのモデル製作者さんに正式な許可を取っていない
というあたりからして既に問題なんです・・・

現在公開している初音ミク冒険記でミクたち登場人物が
白抜きなのは、このためです。

著作権的なところの対策としては、
以前から何度もKEIZOさんに言われているように
自分でミクたちの画像を作れば良いんですが
何気にオープニングとかイベントシーンとかでMikuMikuDanceを使った
ムービーを作れたらなぁ、なんて夢みたいなことを考えているので
やるなら自作のMMDモデルを作れるようになりたいんですよね・・・

マシシPのこの本を購入したのも、将来的にはと考えてだったりします。

MikuMikuDance キャラクターモデルメイキング講座 Pさんが教える3Dモデルの作り方

まぁ、一人でやっている分、興味があっちこっちに飛んでて
どれも収拾がついていない状態になっているのがダメダメなんですが・・・
(まともにゲーム1本を作りきったことが無い、
 いろいろとスキル不足なかげさんが
 BGMや効果音全般、現在使用している画像やMMDモデル以外は、
 自分で何とかしようとしてるのが、そもそも無茶苦茶なんですが・・・)

環境とか本の準備だけは、細々とだけど進展しています。


エフェクト関連では、今週、下記の本が出ます。

BISHAMONゲームエフェクトデザインレシピ (GAME DEVELOPER BOOKS)

著者は株式会社アグニ・フレアとマッチロック株式会社の後藤誠さんです。
後藤誠さんは、前述のBISHAMONゲームエフェクトデザイン入門の著者の一人で
BISHAMONの会社の人です。

株式会社アグニ・フレアは、今年行われたBISHAMONエフェクトコンテストで
ニコ生でエフェクト作りのアドバイスをしてくれたり、
選考をしていた会社なので、どちらの著者も、ものすごく安心感があります。

税込みで5,000円近い高価な本なんですが、
クレジットカードのポイントを商品券と交換したのが
数週間で届く予定なので、それが届いてから購入しようと思っています。
それが届けば500円足すとお釣りがくるんで。

それが800ページ近いページ数で
プロはこうやって作っているという作例が全部で26あることを考えると
EffekseerやProminence3Dを使うとしても、
読んで役立つ解説があるように思うのです。

いろいろとエフェクト関連の情報が増えてきているのは
やっぱり嬉しいですね!

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

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

2015.06.13

アクセル・ワールド18巻 黒の双剣士 がちょっと残念な展開だった

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

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


アクセル・ワールド (18) ―黒の双剣士― (電撃文庫)

今週の予定では木あたりに入手予定だったんですが
木、金と仕事を休むような体調不良だったので
ようやく入手しました。

8ヶ月待った新刊だったのですが、なんか微妙な感じでした。

全体的に話が転換するタイミングが悪い印象です。
そこまで話を積み上げてきて、肝心の部分がすっ飛ばされて話が進む感じがしました。

最後の展開にしても、このタイミングじゃなくても良いような気がしましたね・・・

おまけ小説でページ数を稼ぐのではなく、
もうちょっとそれぞれの展開をもう少し掘り下げて
綺麗にまとめて欲しい感じがしました。

特にプチパケの3人との初対面は掘り下げて欲しかったなぁ・・・

ずうっと待っていた分、正直、ちょっとガッカリな内容でした・・・

グレートウォールとの会談やコバマガの話が面白かったので
他が残念な感じですね。

次は冬らしいので、なんか良い展開になってくれるといいんですけど。

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

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

2015.06.08

VOCALOID 4 Editor for Cubase(ボカキュー4)を購入

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

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

記事タイトルに書いたように
かげさんが持っていたVOCALOID 3 Editorのライセンスは
VOCALOID 4 Editor for Cubaseにアップグレードしました。


YAMAHA ヤマハ VOCALOID4 Editor for Cubase

もともと、今月中のどこかでアップグレードしようと思っていたので
(6月までならアップグレードが5,400円なので)
忘れないうちにってことでアップグレードしときました。

仮にボカキューじゃできないような事があった場合でも
「ボカロPになりたい」が全号揃う10月前後には
VOCALOID 4 Editorのライセンスが入手可能なので問題ないでしょう。
(ぼかりすを使いたい時は、VOCALOID 3 Editorを起動すれば良いし)

土曜日はボカキューが起動して動いたところで満足してしまったのですが
ボカキュー4からの追加機能である
「リアルタイムレコーディング」の動作確認を忘れてたので
動作を確認してからアップグレードを決めました。

「リアルタイムレコーディング」以外はPiapro Studioでも確認していたので
忘れていなかったのですが、
ボカキュー4にしか無い機能の確認を怠っていたとは・・・

「リアルタイムレコーディング」を使うとMIDIキーボードで演奏することで
ボカロの音程をリアルタイムに入力できます。

歌声は「あ、い、う、え、お、ら、り、る、れ、ろ」から選ぶので
歌詞を流しこむことはできませんが、
MIDIキーボードの演奏に合わせてミクやルカが歌うのは面白いです。

ポケミクの時も思いましたが、ユーザのアクションで
ミクやルカなどのボーカロイドが歌うというのは良いですね。

ということで、今年前半に揃えたいと思っていた
音関連の環境は一通り揃いました。

今年の後半に揃えたいと思っているものは3つあるんですが
急ぎで欲しいと思っているものはないんですよねぇ。

そのうちの1つは、上述のVOCALOID 4 Editorで
これは順調なら10月か11月あたりに入手できるでしょうし
残り2つのうち1つは、ポイントが溜まったら交換するつもりなので
早くて8月あたりになるんじゃないかな?
もう一つは年内発売予定らしいんですが、まだ詳細情報は出ていなかったりします。

とりあえず大きめの出費は、一段落ってところでしょうか。
ふぅ。

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

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

2015.06.07

utapianoを付けたみた

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

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

このブログの右のサイドバーにutapianoを付けたみました。

こんなのです。

utapianoは、UTAU を使用したピアノっぽいブログパーツです。
コチラから設置できます。

ピアノっぽいところをクリックすると
Utauのライブラリが発音してくれます。

VOのボタンをクリックすると歌声ライブラリの切り替えができるので
テトやモモにすることもできます。

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

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

SlideShareのスライドを保存したい

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

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

初音ミク冒険記の開発とかで調べ物をしていると
SlideShare(スライドシェア)に調べたいことがまとまっていることが
結構あったりする。

TracやJenkinsなどSlideShareにアップされている
プレゼンテーションのスライドで情報収集して
導入に踏み切ったものもあったりします。

ちなみに次に導入を検討しているのは
TestLinkでしょうか・・・

こういった資料は、後から見たくなる事もあるので
できれば保存したいと思うんだけどユーザ登録しないとダメなんだよね。

SlideShareがLinkedInに買収されたのは知ってたので
LinkedInもユーザ登録しないとダメなんじゃないかと思ったりもしてました。

そのうち調べてみようと思っていて放置していたんですが
@ITに「海外Webサービスのトリセツ」というのがまとまっていたのを思い出したので
記事を漁って見たところ
SlideShare(スライドシェア)の使い方(1):登録編
SlideShare(スライドシェア)の使い方(2):活用編
という記事がありました。

詳しく載っているので、詳細はこの記事では書きませんが
無事にユーザ登録したので、スライドを保存できるようになりました。
これで後から見たくなった時に、なんてスライドだったかタイトルが分からなくても
探しやすくなりました。

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

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

SourceMonitor Version 3.5を導入してみた

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

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

おいコラ!
サウンド関連のプログラムをするんじゃなかったのか?
という話もあるんですが、気になって調べたことを忘れないうちに
ブログに書いちゃおうってことでSourceMonitorの話です。

えっと、まずは何でSourceMonitorを使ってみようとしたか
というところから書きますね。


ゲームプログラマのためのコーディング技術

実は最近、上の本を立ち読みしました。
(買ってないんかい! というツッコミは無しです

この本、第1章は、マーチン・ファウラー著の
リファクタリングの本のC++版みたいな感じでした。

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

リファクタリングについては、かげさんは
VisualStudioにリファクタリングメニューが導入される前からやっているので
というか個人的にVB6やVBA用のリファクタリングツールとかを作っていたので
C++だと、そうだよね~というのはあったんですが
新しい収穫は、あまり無かったです。

第2章は、オブジェクト指向設計について書かれていたので
こちらもあまり収穫は無かったです。

第3章は、ソースコードの品質計測ということで
いくつかのツールは知っていたのですが、
参考文献を見るとSourceMonitorについての記載があったので
気になって調べてみたッて感じです。

現在、初音ミク冒険記の開発では、ソースを修正してテストした後、
ソースをバージョン管理のSubversion(以下、SVN)に登録(コミット)してます。

このコミットの時にTraclightningで管理しているチケット番号にリンクさせている他に
Jenkinsに連動してます。

具体的にはJenkinsが10分おきにSVNのコミット状況を監視していて
VC++のソースがコミットされたらCppCheckとStepCounterが自動的に動きます。
(初音ミク冒険記だとシナリオでLuaや開発ツールがC#なので、そっちの時はまた別の処理が動く)

CppCheckについては、このブログでも以下の記事で紹介しています。
今更だけど、Cppcheckを使って初音ミク冒険記のソースを静的テストしてみた JenkinsからのCppcheck このところずっとJenkinsのCppCheckが動いていない気がした原因が判明

StepCounterについては、
Jenkinsの設定をいろいろと変更してみた、が、あと一歩が分かんない でもチラッと紹介していますが
ソース単位で実行行数、コメント行数、空行数を表示できます。

このように一応、ソースの品質管理としての指標は
少しだけど収集していたんですが、
「サイクロマチック複雑度」とか「メソッドのネストの深さ」は分からなかったのです。

サイクロマチック複雑度については
Wikipediaの「循環的複雑度」に掲載されています。

で、どうやらこの辺りの情報収集ができるのがSourceMonitorらしかったので
導入してみました。

■SourceMonitor Version 3.5のダウンロード
http://www.campwoodsw.com/sourcemonitor.html

■導入方法
「大人になったら肺呼吸」というサイトで
C言語やJavaのメトリクス計測ができるSourceMonitorを試してみたよ。」という記事があったので参考にしました。

そういえば、このサイトはCppCheckの導入時にも参考にさせてもらいました。

■メトリクス(計測値の意味)
SourceMonitorは英語のツールなんですが
上記の導入方法の記事では、各項目の意味の説明が残念ながら無かったので
メトリクス計測 SourceMonitor 紹介」という記事を参考にさせてもらいました。

■かげさんが調べた時の参考情報
ソースコードの品質向上のための効果的で効率的なコードレビュー C/C++開発環境

■使ってみた印象
stepcounterで取得している情報の内、空行の扱いがオプションになっていますが
それ以外の情報は取得できています。

下図は、初音ミク冒険記では計測不要と判断した項目を抜いた状態のものです。
Sourcemonitor01

% Branchesが、分岐率
Max Complexityが、最も複雑なメソッドの複雑度
Max Depthが、ネスト階層
Ave Complexityが、サイクロマチック複雑度
です。

<サイクロマチック複雑度>
•10 以下であればよい構造
•30 を越える場合,構造に疑問
•50 を越える場合,テストが不可能(テストするのが難しい)
•75 を越える場合,いかなる変更も誤修正を生む原因を作る

ということで実は上図は、サイクロマチック複雑度が10以上のものを出しています。
結構あるな・・・

確かにショップやオプション関連は分岐も多くて複雑なんだが
かげさん的に一番複雑に感じている
myGame.cppがココには出てこないのが意外でした。

まぁ、上図には微妙に入らないくらいの位置にはなっているんですが・・・

30を超えているソースで今後のメンテでも複雑になりそうなのは
myOption.cpp(オプションメニュー)
myItem.cpp(アイテムメニュー)
myManual.cpp(各種説明メニュー)
myMapEditHookWinProc.cpp(マップクリエーター関連)
といったところかな?

ショップメニューは、ある程度完成形のつもりをしているので
とりあえず放置でも良さそうな気がしている。

ネスト階層が5以上のところは、メソッドの抽出で関数を小分けにした方が
ソースの見通しが良くなりそうだなと思う。

なお、Jenkinsでこのツールの出力情報を取得するプラグインもあるようなんだが
上図で示したようなソースのレベルとか、
もっと詳細なソース内の関数レベルの情報は取得できないようで
トップレベルのベースディレクトリの中全体のレベルのものしか表示できないみたい。

一応、このツールはコマンドラインで情報収集することができるっぽいので
うまくJenkinsと連携させられると良いんだけどな。

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

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

2015.06.06

ミクミキサー(AG03-MIKU)のセッティング

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

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

今日は、ミクミキサー(AG03-MIKU)のセッティングやテストをしてました


YAMAHA ウェブキャスティングミキサー 3チャンネル 「初音ミクおためしセット」 AG03-MIKU

ミクミキサーの設定関連は下記のサイトに動画が7本あって、まとまっています。
http://jp.yamaha.com/products/music-production/webcasting_mixer/miku/#rel-begin

説明書に目を通してから見ると分かりやすくて良いと思います。

ちなみに上のサイトにある動画を見ながら設定をしていく場合、
動画を止めたり戻ったりすることもあると思うので
上記のサイトで直接動画を再生するよりは、YouTube上で見たほうが
作業がしやすいと思います。
(上記のサイトだと一時停止しかできないので・・・)

ちなみに動画の途中でコントロールパネルの「サウンド」の設定で
規定値を設定を選ぶとその段階で動画を再生していたら
音がAG03に奪われて音が聞こえなくなるので、
一度動画を先に見てからサウンドの設定を切り替えた方が良さそうです。

ちなみにサウンドの設定のある次の動画まで見てからサウンドを切り替えると
AG03から音を出すところが分かって良いかもしれません。
(Part2と3は先に見たほうが良いと思う)

動画のPart4.初音ミクおためしセットのインストール!では
http://japan.steinberg.net/getcubaseai
にアクセスしても、動画にあるページには行かず
http://www.steinberg.net/jp/landing_pages/cubase_ai_8/download.html
に転送されて、ダウンロードやログインのリンクもありゃしない・・・

が、その先は、MySteinbergでアカウントを作ってログインするところなので
かげさんの場合、既にCubaseは6と7のLEを持っているので
直接MySteinbergからログインして、動画の画面に追いつく。
(MySteinbergで検索すれば目的の画面に行けます)

その後、動画のとおりに進めていくと

Cubase LE AI Elements 8 インストールのようこその前に
インストールアップデータがあったので途中で
ダウンロードするアップデート
「Cubase LE AI Elements 8 - 8.0.2 Update」をチェックして「ダウンロードとインストール」
する作業が割り込みました。

これが終わると
「Cubase LE AI Elements 8 インストールのようこそ」にたどり着きます。

次が、微妙に面倒なeLicenser Control Centerの設定だ
動画のとおりにサクサク進めば良いのだが、
案の定、いろいろなエラーが出てきてダメだった・・・

たぶん、かげさんが前にCubase LEをインストールする時に
調べながら進めたからおかしな環境になっているんだと思う。

そこで、スタートメニューのeLicenser Control Centerをクリックせずに右クリックし、
「プロパティ」を選択、「互換性」タブにある
「管理者としてこのプログラムを実行する」をチェックして「OK」ボタンを押下。

後は動画の通りに進めてライセンスをゲット。

次にCubase AI 8の起動する時も
「有効なライセンスが見つかりません。プログラムは終了します。」
というメッセージが出て起動できず・・・

これも同様にCubase AI 8のアイコンを右クリックして
「プロパティ」を選択、「互換性」タブにある
「管理者としてこのプログラムを実行する」をチェックして「OK」ボタンを押下。

実はこれでCubase LE 7までは問題なく起動したんだが
AI 8だと、こんなエラーが出やがった・・・

---------------------------
エラー
---------------------------
Steinberg 製品では、Windows の「ベーシックテーマとハイコントラストテーマ」がサポートされていません。Windows の「コントロールパネル」でいずれかの「Aeroテーマ」を使用してください。
---------------------------
OK
---------------------------

仕方が無いのでデスクトップの空いているところを右クリックして
「個人設定」からAeroテーマを選んでやる。
とりあえずAeroテーマは、「Windows7」にしておいた

余談:壁紙を強制変更されたので、
   これまでずっと閃の軌跡Ⅱの壁紙だったのを東亰ザナドゥの適当な壁紙に変更した

で、Cubase AI 8を起動するとオーディオドライバーの設定が出てきたんだが
動画のとは、画面レイアウトが違うのが出てきた
が、レイアウトが違うだけなので
動画通りにYamaha Steinberg USB ASIOを選択する

これでCubaseは起動した。

動画では次は初音ミクお試しセットのインストールなんだが
初音ミクV3は製品をインストール済みなんで、そこはパスしようと思っていた。

が、実は、この初音ミクおためしセットをダウンロードしないと
目的としているVOCALOID 4 Editor for Cubaseの体験版がダウンロード出来ないのだった・・・

つーか、よく考えたらSONICWIREってアカウント作ってなかったような・・・
ということでアカウントを作ったところ
クリプトンサイトアカウントとの統合ができるようだったのでアカウントを統合した。

そこから動画に従いダウンロードして
セットアップできる3セットは
VOCALOID 4 Editor for Cubaseの体験版とSONICWIREの無料サンプルだけインストール。

先に書いたようにミクさんはインストール済みなんで、
初音ミクV3体験版インストールはパスです。

さて、ボカキューを使ってみようと思ったら
実は上述の動画のリンクだとボカキューの説明が全くない・・・

ということで
「ボカキューで始めるVOCALOID」のサイトにある
最初の動画で使い方を見ていく。
http://www.vocaloid.com/learning/start_vocacu.html

AI7の動画だが、AI8でも同じなので、真似して設定してく。

VOCALOIDエディタが起動した後の使い方は
概ねVOCALOID3のエディタと同じなので起動するところまでできたら
後はもういいかなッて感じ。

一応、動画を最後まで見たのでボカキューならではの使い方も
チラッとわかったかな?

ちゃんとVOCALOIDエディタの右側のコンボボックスで
歌声ライブラリも切り替えられるのでミクとルカの声を切り替えたりもできます。

とりあえずAG03-MIKUの使い方も大筋分かったし
Cubase LE 7 → Cubase AI 8とCubaseもバージョンアップできて
ボカキューも基本的な使い方が分かりました。

いろいろと音を混ぜたりもしやすくて
音関係を手元で調整しやすいのが楽で良いですね!

予定はないですが、一応、ニコ生とかも
やってみようと思ったら、できる環境になりました!

■他のAGシリーズについては、このサイトを見ると分かります。
インターネット配信を徹底的にサポートするウェブキャスティングミキサー「AGシリーズ」(DTMマガジン)
https://www.youtube.com/watch?v=w1wOH_h71m4
こちらでもドライバなどのインストールからの手順があるのでコチラを見ても良いですね!

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

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

2015.06.02

サウンド関連の処理を調整中

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

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

5月中にサウンド回りの調整をしようと思っていたんだけど
一番厄介なところのデバッグをするにあたり
そろそろデバッグボイスを使おうかと思って
ボイス関連の仕様をまとめていました。
(とりあえずデバッグ用ボイスは11種類ほど作りました)

結局、関連してゲームエンジン・アーキテクチャの第2版の
「第13章 オーディオ」のキャラクターの対話の部分をまとめたりしてたから
5月末には終わらなかったんだよなぁ・・・

デバッグボイスだけでなく
シナリオボイスでやりたいこともまとめつつ
ゲームエンジン・アーキテクチャの第2版を見ながら実装の方向性を調整し
DXライブラリの関数や初音ミク冒険記の既存処理を
うまく使うような感じで考えてます。

シナリオボイスについては
本当はミクやルカの声で作業したいところなんだけど
VOCALOIDでトークボイスを作るのは時間がかかるし
実装してみた時の感覚をつかむ意味で
最初は、CeVIO Creative Studioの「さとうささら」と「ONE」あたりで
仮ボイスを作ろうかなぁと思ってます。

CeVIO Creative Studioにしようと思ったのは
1画面でトークボイスの切り替えとかセリフをまとめられるので
シナリオボイスの短めのところとかをサクッと作って
お試しで動かしてみやすいと感じたからです。

かげさんの環境だとCeVIO Creative Studioでは
・さとうささら
・すずきつづみ
・タカハシ
・ONE
の4キャラクターが切り替えながら使えるので
いろいろとバリエーションを作れるんじゃないかと。

VOICEROIDの結月ゆかりexやMegpoidTalkもあるから
6キャラクター分までのボイスは作りやすい状態です。

各ソフトに得手/不得手、使い勝手の良いところ/悪いところがあるので
使いながら慣れていく必要がありそうだなぁ。

何かわかったことがあったらtracのWikiページにまとめていくって方針ですかね。

デバッグボイスだけなら、割りと簡単そうだったんだけど
シナリオボイス関連まで考え始めちゃったこともあり、
6月はサウンド関連が中心作業になりそうです。

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

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

« 2015年5月 | トップページ | 2015年7月 »