« 2013年10月 | トップページ | 2013年12月 »

2013.11.21

VC++って__func__マクロの名前が違うのね

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

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

Cのマクロに関数名を取得する__func__というのがある。

例えば
printfDx("関数名=[%s]", __func__);
と書くと
現在実行中の関数がdispTalkMessagePreparation4だとすると
関数名=[dispTalkMessagePreparation4]
と画面に出力されるのだ。

ようするにソースファイル名を出力する__FILE__マクロや
ソースの行番号を出力する__LINE__マクロのお友達みたいなものになる。

なんでこんな事を確認しようとしたかというと
現在、作成中のイベントを終了した後、
かげさんが「行カーソル」と呼んでいる水色の▼の
表示位置がおかしくなったためだ。

Screenshot0115

正しくは、こうなるべきなのに・・・
Screenshot0116

実は、初音ミク冒険記のイベント製作中に
この行カーソルがズレるというのは
何度か確認していて、原因は例外なくdispTalkMessagePreparation4などの
dispTalkMessagePreparation系の会話メッセージ表示準備関数を使った後に
メッセージ送りボタンを押した時にendMessageString関数を
呼び出す処理を書き忘れていたことだった。

しかし、今回は、なぜかendMessageString関数をちゃんと呼んで
行カーソルの位置補正をクリアしているのに
最終的に行カーソルの位置補正が行われていて
わけがわからん!

でも行カーソルの位置補正の変数を使っているのは
・dispTalkMessagePreparation4
・dispTalkMessagePreparation5
・endMessageString
の3つだけ。
しかも、今回のLuaスクリプトでは登場人物の説明をするどうかを表示しないので
dispTalkMessagePreparation5を使っていない。

ということは、予期しないパターンで
dispTalkMessagePreparation4
endMessageString
の順に処理された後で
もう一度dispTalkMessagePreparation4を呼んでいるはず。

ただ、dispTalkMessagePreparation4は
ゲームループの都度呼ばれるので
ブレイクポイントは貼りたくない。

ということでDXライブラリの非公開関数の中にある
ログ出力関数を使うことにした。

一応、dispTalkMessagePreparation5が呼ばれていた時のことも考慮し
3つの関数の終わりにログ出力を埋め込む。

ここでそれぞれの関数名をログ出力でコピペするってのも良いんだけど
ErrorLogFmtAdd("関数名=[%s]", __func__);
のように同じ行をコピペするほうが手間がかからないというわけだ。

が・・・

なぜか__func__が使えない。

おかしいなぁ、C99で増えたマクロだから
.NET以降のVC+なら対応していると思ったんだけど・・・

マイクロソフトのサイトに有る定義済みマクロ
によるとどうやらVC++では__FUNCTION__というものになってるらしい・・・

マイクロソフトも、どうせ対応するなら__func__で使えるようにもしておけよ!
後で、どっかのヘッダにdefineしておこうかな。

ということで、結局、調べ物をしたから
かえって時間がかかってしまったけど
期待通りにログを出力できた。

まぁ、今後、関数名を取得するマクロを使えるようになったので良しとしよう。

ログを見ると、やっぱり、endMessageStringの後に
dispTalkMessagePreparation4が1回だけ呼ばれていた



ε-( ̄ヘ ̄)┌ ダミダコリャ…
見なおしたけど、該当のイベントのLua関数は問題ないぞぉ!

ん?
該当のイベントのLua関数?

該当じゃないイベントのLua関数が犯人か?

試しに、怪しいと思われるLua関数にある
最初のdispTalkMessagePreparation4の引数を変えて
ログを出力してみる。

おぉ! 別のやつが呼ばれていたのか・・・
でも、なんで?

あ! そうか、イベントフラグの設定タイミングと
Lua関数の呼び出しタイミングの関係で動いちゃうのね。

しかも、1つ前のLua関数でメッセージ送りボタンを押したかの判定に成功するので
別のLua関数でもメッセージ送りボタンを押したことになって
するっと流れてしまうという話か!

なるほどねぇ。
理由が分かったので無事に直せたよ!

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

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

2013.11.19

リンの画像表示テスト

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

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

Screenshot0113

シナリオ部分を少し作るために
リンの動くモーションとか
顔グラの表情パターンとかを作ってます。

今回もエナメルPのねんどろ風MMDモデルを使って
モーションとか表情の調整をしたものになっている。

閃の軌跡とかをやっていると
もうちょっと表情パターンがあっても良いのかなと思ってみたり。

一応、かげさんのところでは、セリフの都度、
ちょこちょこと表情が変わるようになっていたりします。

まぁ、かげさんが開発している時は
ちゃんとしたグラフィックだけど、
公開する時は、真っ白に変換しちゃうんんだけどねぇ・・・

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

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

2013.11.13

引き続き、閃の軌跡をプレイ中

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

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

ええと、初音ミク冒険記の制作が
中々進まない、かげさんです。

このところ、閃の軌跡を終わらせようとして
チマチマとプレイを続けています。


閃の軌跡も多分終わりの方と思われる第6章に入りました。

一応、5章までは各章のAPの評価はSが続いてます。

軌跡シリーズは、隠しクエストとかを逃さず見つけようとしたら
何かストーリーが進展する都度、NPC全員に話しかけないとダメなので
まともに進めようとすると結構、時間がかかるのです。

絆イベントが1周目では全部見れないみたいなので
今回も周回プレイになるのではないかと思う。

初音ミク冒険記は、軌跡シリーズのキャンプメニューなどを
参考にしているので、メニュー周りの操作に改良が入ると
なるほど、こういう改善方法があったかとか思ったりもして。

今回のシステムでは、
個人的にアクティブボイスのシステムが良いなと思いました。

マップを移動しているとパーティメンバーから
ちょいちょいリアクションが入るので
パーティで冒険をしている感じが出て気に入ってます。

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

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

2013.11.06

なんか日本語入力で変換効率が悪いなと思ったら

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

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

Windows8.1でWebメールでメールを書いていたら
妙に予測変換の変換効率が悪く、期待通りに変換されないなぁと思っていたら
IMEがGoogle日本語入力からMS-IME2012になっていた。

環境を引き継いで8→8.1にアップデートしてるんだから
いらんことするなよ!

最近もOfficeとかの謎のエラー通知などが出て
ググったりしたし
そもそもWindows8にした時だって
IPv6の設定のせいで無駄にディスクアクセスが激しくなって
使い物にならないくらいイラっとしたので思うんだけど
マイクロソフトにはテストの段階でこういうの気づいてほしいな。

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

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

2013.11.04

ノートパソコンをWindows 8.1にしてみた!

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

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

かげさんはWindows8のライセンスを複数持っているので
前にもともとWindows7だったノートパソコンをWindows8にしたのを
Windows8.1にしてみた。

知っている人も多いと思うけど、Windows8→8.1は無料なのだ。

そこで初音ミク冒険記がWindows8.1で正常動作することを検証してみる。

今回は、アップグレード手順のハードコピーを撮り忘れたので
一部文言が間違っていたらごめんなさい。
コメントで指摘していただければ、記事の方を修正するので
間違っていたらコメントお願いします。

まずは、タイルメニューからWindowsストアへ移動。
当然のようにトップ画面にWindows8.1をダウンロードするのがあるので
そいつをクリック。
ダウンロードボタンがあるのでダウンロード。

アップグレードのくせにダウンロードサイズが3ギガもあるだと!?

そのまま放っておくと、ダウンロード後、勝手にインストーラが起動する。

インストールの手順は、基本的にWindows8と同じ感じで
違いといえば、
・アップグレードアシスタントが動かないこと(これでかなり時間が短縮)
・データを引き継ぐかどうかを聞いてこない
といったところなので
Windows 8をインストールした時のこと(まとめ)」の
「■設定」あたりから見てもらうと良いかも。

正直インストールオプションとかは、
前回の引き継いで勝手に進んでほしい気もした。

特にメールアドレスの設定とかは
まっさらから手打ちではなく自動表示されても良いんじゃないかと思った。

でWindows8.1が無事にインストールされて
デスクトップがオレンジの画面に切り替わった。

ここで問題となったのが
いきなり
---------------------------
RunDLL
---------------------------
C:\Windows\System32\LogiLDA.dll を開始中にエラーが発生しました。

指定されたモジュールが見つかりません。


---------------------------
OK
---------------------------

というエラーメッセージが出たこと。

ネットで調べるとロジテックのドライバがどうこうと書かれているが
うちには、ロジクールの物はあるけど
ロジテックの物って無かったような・・・

ついでにWikipediaで調べてみると

Logitechが本社とするスイスを始めとして世界的には「Logitech」ブランドで展開しているが、日本のみ「Logicool」ブランドである。これは、前述の通り、日本ではロジテック株式会社が先に周辺機器メーカーとして展開していたため、名称を混同させないようにブランド名を日本独自のものにしたとされている

ふむ、ロジクールのものが困るのね。

といっても常時使っているロジクールの製品はマウスだけで
問題なく動いているので
そのうち出るドライバアップデートを待つことにする。
毎回メッセージが表示されるのがうざいけど、仕方が無い。


8.1では、画面左下のスタートボタンは復活しているけど
事前情報通り、Windows7のころのものとは違って
クリックするとタイルメニューに移動し
右クリックで、従来のスタートメニューに近いもの(プログラムの一覧は出てこない)が
ポップアップメニューで表示されるといったもの。

まぁ、コントロールパネルなどの設定周りとか、
「エクスプローラ」や「ファイルを指定して実行」、「シャットダウン」が
ココにまとまっているのは、良いかもしれないけどね。

かげさんの場合、「エクスプローラ」はWindowsキー+E、
「ファイルを指定して実行」はWindowsキー+Rで起動させるから
あまり有り難みがないんだけど
シャットダウン用のショートカットは、消しても良くなるかな。

そして、初音ミク冒険記を動かしたところ
問題なく動作したので、次に公開するときのreadme.txtには
Windows8.1対応と書けそうです。

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

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

« 2013年10月 | トップページ | 2013年12月 »