最近の100件  1  2  3  4  5  6  7  8  9  10 

2015.07.01

デスクトップPCのWindows8を8.1にした際のメモとか

Effekseer関連で、ずっとWindows8で作業していたんだが
Windows8.1にするってアナウンスが出たので8.1にした。

Windows10の無料アップデートは、8が対象ではないので
近いうちに8.1にするつもりだったので。

が、45分以上かかるかも?みたいなメッセージが出たが
実際は1時間15分くらいかかった・・・

まぁ、それは待ってれば良いだけなのでおいておくとして
以前ノートパソコンを8.1にした時もそうだったんだけど
意図的に止めていたPeer関連のサービスが8.1になったら復活していた。

Peer関連の3つのサービスは起動しているだけで
ディスクアクセスが増えて、
マシンが重くなるので迷惑以外の何物でもない。

今回は、Windows8にGoogle日本語入力を入れていなかったので
影響はなかったが、ノートの時には
デフォルトの日本語入力をGoogle日本語入力にしてたのが
8.1にしたことでMS-IMEに強制的に変更されてて
最初、なんだコレって思った。

きっと同じことが
Windows10へのアップグレードでも起きると予想してる。

かげさんがWindows8環境を1年半近く放置していたのは
Windows8の無駄なディスクアクセスの多さにある。

常にディスクアクセスしているから
OS自体がもっさりしていて使いたいと思わなかった。

なので、Peerは8.1になった途端に止めなおしました。
あ、IPv6もディスクアクセスが増えるので速攻で止めました。

チャームとかもすごく使いにくかったので
最初のころはWindows8を終わらせるときに
チャームから終わらせるのが面倒で
ショートカットキーのALT+F4を連打して終わらせたりもしていた。
(Windows3.1の頃からあるALT+F4連打が効いたのに驚いたが・・・)

さて、8.1のボヤキはこの程度にして
8.1側のドライバ関連の話。

ミクミキサーAG03-MIKUは、
公式サイトからドライバダウンロードだけで問題なく動いた。
もっと早く対応しとけば良かった。

問題だったのがPS3のコントローラだ。

PS3のDualshock3コントローラで初音ミク冒険記をプレイする
という記事を前に書いたのだが、ドライバがインストールできなかった。

Install MotioninJoy Driver fail.. Error code:0X-1ffffdb9

ってのが出てダメでした・・・
ノートのWindows8.1では使えてるのになぜ?

調べてみたら、
motioninjoyについて質問なのですがmotioninj」に
対処方法があったんだけど、最初にある「ホーム画面」がよくわからなかった。

「ドライバー署名の強制を無効にする方法」ってのがキーワードっぽいので
ググってみたら、下記の記事を発見!
ドライバー署名の強制を無効にする方法 - Windows8の使い方(設定/操作)
図解されているので、なるほど! こういうことね!と理解できた。

「ホーム画面ってなんだよ!」と思ったのですが
チャームのことだったのね・・・coldsweats01

そしてSHIFTキーの再起動でトラブルシューティングって
操作的に分かりにくいよ・・・shock

まとめると
・チャーム→設定→電源を選択
・「SHIFT」キーを押しながら「再起動」を選択
・「オプションの選択」画面が表示されるので、
 「トラブルシューティング」→「詳細オプション」→「スタートアップ設定」→「再起動」を選択
・しばらくしたら表示される「スタートアップ設定」画面で
 7) ドライバー署名の強制を無効にする
ってことね。

ということで早速やってみて
ドライバー署名の強制を無効にできたので
改めてDS3 Toolでドライバをインストールしたところ
うまく言認識されました!happy02

これで、デスクトップの8.1側でも初音ミク冒険記が
PS3コントローラで操作できるようになりました!happy01

PS3のコントローラは、こうしないとダメみたいですが
PS4のコントローラだと刺すだけで使えるみたいですね。

かげさんは、PS4をまだ持っていないのでわかりませんが・・・
(一応、PS4のイースが出るときに購入予定)


面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

2015.06.29

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

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の制作者さん、情報提供ありがとうございます!

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

2015.06.27

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

どこでもセーブできる系のアクション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の製作者さんとのやりとり



面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

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

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

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

一部再掲になりますが
Boukenkideeffekseer2

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

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

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

このため、こんなふうに目的とすることができました!lovely
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つ解決してスッキリした!happy01

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

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

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

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

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

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


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

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

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

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

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

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

2015.06.23

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

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

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

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

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

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

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
に書いた問題の原因は、一通り納得できた感じだ。happy01

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

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

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

.vcproj → .vcxproj
.vsprops → .prop

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

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

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

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

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

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

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

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

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

それによると

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 となっているだけである。

結論:予想通りscissors

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

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

うん、開けたね!happy02

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

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

じゃあ、リビルド!

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

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

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を入れようと思う。

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

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

2015.06.21

Effekseerの導入のテスト動画

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

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

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

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

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

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

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

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

2015.06.20

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

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


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

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

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

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

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

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

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

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

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

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

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のエラーなんで ツッコミは無しでお願いしますcoldsweats01

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

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

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

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

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

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

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

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

やりました!happy02

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

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

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

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

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

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

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にした方が良いと思う。happy01

なお、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のリンクがない・・・coldsweats02

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のサンプルを動かしたりするところを書きます。

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

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

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

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

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

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

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

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

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

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

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

まず、このように動かすためにした環境について書いてみる。
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

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

まず、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 上でってのも思いついたのですが
既にサンプルを動かせるようになってからだったので不採用にcoldsweats01

かげさんは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とか割り当てても問題ないのです。happy01

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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

2015.06.18

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

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エフェクトの描画順

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

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