No.81 Re: バグ報告スレッド 14 | |
|
2024/04/23 21:29 YADO ID:LerLWW459 |
ウディタ[3.324]で動作確認。
■一覧が更新されない不具合
先日報告した「条件(文字列)」のセルフ変数の一覧が更新されない症状と同じような症状を複数箇所で確認しました。
▼イベントの挿入「コモンEv名で呼出」 コモンイベントの画面で、コモン0「○アイテム増減」をコピーし、コモン215に貼り付ける。
コモンイベントのイベントコマンドの設定画面を開き、 イベントの挿入の画面の「コモンEv名で呼出」で「○アイテム増減」を選択すると、 設定画面の下に「コモンEv215」が表示されて、コモン215の「○アイテム増減」が選択されている事が分かります。
イベントコマンドの設定画面を閉じて、貼り付けたコモン215を削除し、 イベントコマンドの設定画面を表示して「コモンEv名で呼出」で「○アイテム増減」を再選択すると、 「コモンEv215」が選択された状態がキープされ、設定欄が何も無い状態になります。
またコモン215に「aaa」と言ったコモン名を設定し、 一度「コモンEv名で呼出」の一覧で「aaa」がある事を確認してからイベントコマンドの設定画面を閉じて、 コモン215を削除し、再び「コモンEv名で呼出」の一覧を確認すると「aaa」が残った状態になります。 コモン215の削除後に更新ボタンを押してから「コモンEv名で呼出」の一覧を確認しても「aaa」が残ります。
▼キャラ選択時のマップイベント名 サンプルマップAを表示し、マップイベントかコモンイベントのイベントコマンドの設定画面を開きます。
「変数操作+」の「キャラ」のキャラ選択をクリックして一覧を表示すると、 主人公、仲間の下に、サンプルマップAのマップイベント名が表示されます。
イベントコマンドの設定画面を閉じ、サンプルマップBへ移動して、 再び「変数操作+」のキャラ選択をクリックすると、サンプルマップAのマップイベント名のままになります。
「キャラエフェクト」や「イベントの一時消去」にあるキャラ選択でも同じ症状が発生します。 「場所移動」や「キャラ動作指定」にあるキャラ選択では、 同じ手順を行っても正常に現在のマップのマップイベント名に更新されます。
▼共通する症状 「条件(文字列)」の時と同様に、一覧が更新されないイベントコマンドの設定画面を表示しながら上記作業を行うと、正常に一覧が更新されます。 また一覧が更新されていない状態で、一度イベントコマンド入力ウィンドウ以外をクリックしてから一覧をクリックすると、正常に表示されます。
■コモン010[○経験値・Lv増減]でレベルアップ表示
可変DB[0:主人公ステータス]のウルファールの項目[21:[成長]防御力増加 /1Lv]を「1」にして、 ■イベントの挿入[名]: ["○経験値・Lv増減"] <コモンEv 10> / 12:ウルファール / 0:レベル増減 / 5 / 1:有り WoditorEvCOMMAND_START [300][6,1]<0>(0,4,12,0,5,1)("○経験値・Lv増減") WoditorEvCOMMAND_END を実行すると、パラメータの増減の表示が 「攻撃力 +15 防御力 +5 精神攻 +20 精神防御 +10」 となり、1行の文字列が長すぎてメッセージウィンドウをはみ出して表示してしまいます。
改善点としては、コモン070[X[移]パラメータ増減]の 防御力と精神攻の間(232行目)と、 命中率と回避率の間(285行目)に改行を入れて、 精神防御と敏捷性の間(258行目)の改行を ■文章:@1\n\>\cself[9] ■文字列操作:CSelf9[表示メッセージ文] = " " WoditorEvCOMMAND_START [101][0,1]<0>()("@1<\n>\>\cself[9]") [122][3,1]<0>(1600009,0,0)(" ") WoditorEvCOMMAND_END に変えて、1行につきパラメータを横に2個並べて表示するようにして、2回に分けて表示する方法が考えられます。
2回目の表示で、敏捷性、命中率、回避率、クリティカルのいずれも増減しない場合は、 文字列が無い空のメッセージウィンドウが表示される状態になりますが、2回目の表示を ■条件分岐(文字): 【1】 CSelf9[表示メッセージ文]が " \n " 以外 -◇分岐: 【1】 [ CSelf9[表示メッセージ文] " \n " 以外 ]の場合↓ |■文章:@1\n\>\cself[9] |■ ◇分岐終了◇ WoditorEvCOMMAND_START [112][2,4]<0>(1,270035465)(" <\n> ","","","") [401][1,0]<0>(1)() [101][0,1]<1>()("@1<\n>\>\cself[9]") [0][0,0]<1>()() [499][0,0]<0>()() WoditorEvCOMMAND_END などと設定すれば、空のウィンドウだけが表示される事が無くなります。
ただ何も増減しなかった事を示す場合は、空のウィンドウの表示が必要になるかもしれません。
■コモンイベント画面のショートカットキー
前にマップイベントであった、 【1】イベント一覧でイベント選択 【2】イベントコマンド設定欄で右クリック→コピーなどを選択 【3】「Del」キーを押すとイベント削除 がコモンイベントの方でも発生します。
例えば 【1】コモンイベント一覧でコモンイベント「○アイテム増減」を選択。 【2】イベントコマンドの上で右クリック→コピー(全て選択などでも良い)。 【3】[Del]キーを押すと、イベントコマンドではなく、コモンイベント「○アイテム増減」を削除。 と言った感じです。
他にも 【1】コモンイベント一覧でコモンイベント「○アイテム増減」をイベントコピー。 【2】コモンイベント「○武器増減」を選択し、イベントコマンドの上で右クリック→コピー。 【3】[V]キーを押すと、イベントコマンドではなく、コモンイベント「○アイテム増減」を貼り付けてしまう。 と言った事にもなります。
別のコモンイベントに切り替えたあとに、一度イベントコマンド設定欄をクリックすると、イベントコマンドのショートカットキーになります。
■コモン136の説明文
コモン136「X[戦]パラメータ取得」の3行目に ▼ このコモンイベントは移動中のみ有効です。 とありますが「戦闘中のみ有効」が正しいと思われます。
|
No.80 Re: バグ報告スレッド 14 | |
|
2024/04/23 15:47 クロノ ID:rpW525 |
お疲れさまです。Ver3.324にて コモンを名前呼び出し以外で セルフ変数を入れると使用中の■がつきませんでした
|
No.79 Re: バグ報告スレッド 14 | |
|
2024/04/23 11:56 SmokingWOLF ID:errreirpL408 |
>>77 SSE2のみの設定でコンパイルしてもやはり昔のPCでは起動せず 引き続きの検証ありがとうございます。 こうなると「CPUが古いことが要因で起きてるけれどAVXなどとは別の場所に問題がある」ケースも考えられそうですが、見当が付きません。
時間と共に問題がなくなっていく話だとは思いますので、 当面は開発者さまへの告知で対応させていただこうと思います。 (ひとまず次からEditorの「ゲームデータ作成」の暗号化欄に、最新暗号化を使うと古いPCで問題が起きるという説明を追記しておきます)
>>78 想定外の画像がちらちら出る ご報告ありがとうございます。 影響がありそうな画像表示周りをここ最近いじった記憶がないこと、このタイルの出方や、 たまに出てくるというお話、他の方(私の環境含む)では起きていないらしい状況から、 お使いのPCのグラフィックメモリに何らかの問題が出ているような印象もあります。 開発上お困りでしたら、以下の対応を取ってみてください。
・グラフィックドライバーの最新版をインストールする。 → 気休めに感じますが意外と直ることがあります。難しい場合はBingのページでCopilotなどに聞いてみてください。
・同梱のConfig.exeを起動し、「グラフィック表示モードを『3Dモード』のまま『DirecXのバージョンを11→9に変える』」→「適用」をおこなってGame.exeを起動してみてください。 それでもだめなら「グラフィック表示モード」を「ソフトウェアモード」にして「適用」→Game.exe起動すると高確率で直ると思います。 (が、見え方が3Dモードと変わる場合があるのでソフトウェアモードは最終手段としてお使いください)
もしかしたら他の箇所での修正が影響していたり、 あるいはVer3.310からゲームに使用している「DXライブラリ」のコードを最新化したために 影響が出ている可能性もあるので、引き続き情報収集してみます。 もし何かこちらで直せる原因がありそうでしたら対応してみます。
|
No.78 Re: バグ報告スレッド 14 | |
|
2024/04/23 10:16 m ID:rirrLirLO224 |
ウディタpro、ver3.324のサンプルゲームプレイ中に馬、タイガ、ターの周辺をうろうろしているとターの頭上に黄色のタイル画像っぽいものがちらちら表示されるのですが、これは何でしょうか? 常に一定の確率で出るわけではなく、移動時に一瞬だけ表示されるという事もありますが、表示される位置はいつもターの頭上です。 スクリーンショットに撮れた時は一定間隔で表示されていたので撮影できました。
|
No.77 Re: バグ報告スレッド 14 | |
|
2024/04/22 05:47 初心者 ID:erprpgF568 |
>>76 いつもありがとうございます。
残念ながら当方の該当ノートPCでは起動しませんでした。
CPU intel i5-480m Windows 10 Pro (2011年頃のノートPC) CPU intel Celeron P4600 Windows 11 Home (2011年頃のノートPC)
P4600上のWindows 11は本来OSがインストールできないPCなのですが無理矢理インストールしているものなのでおまけでテストしています。
2011年頃以前のPCを使用している人がほとんどいないくて影響はないかもしれません。
※Celeron N3050搭載のWindows 10 Home (2016年頃のノートPC)は起動します
当方のノートPCに問題があるかもしれないので ほかの検証結果もあったほうがよいです。
|
No.76 Re: バグ報告スレッド 14 | |
|
2024/04/20 23:00 SmokingWOLF ID:errreirpL408 |
>>75 自動ベクター化 おおーまさにそれです! 非常に貴重な情報ありがとうございます! 隠しオプション、もし動作するならあと5年も耐えればほぼ問題なくなると思いますので今しばらく残っているなら助かりそうです。
ひとまず、手軽で処理負荷への影響が軽かった/d2Qvec-sse2onlyを使ってVer3.324のGame.exeをコンパイルしてみました。 (no_vectorは処理負荷が3〜20倍以上になるのと対応量が現実的ではなさそうでした)
特にコンパイル時のエラーなどは起きなかったのですが、正常にこれで動作可能になっているのかは 古いPCをお持ちの方しか分からないので、 もしよければ2011年頃のPCをお持ちの方はお試しいただけますと幸いです。
【Game_d2Qvec-sse2only.exe】 https://silversecond.com/WolfRPGEditor/Data/20240420_Game_d2Qvec-sse2only.zip 条件:「2011年頃の(AVX命令のないCPU搭載の)PC」で「Ver3.31〜暗号化」を行ったデータでこのGame.exeを実行する → もし動作すれば今回の問題が解決したということになります。
VS2022も17.9.6に更新してみました、ここ数日は17.9.5のままだったようです。
|
No.75 Re: バグ報告スレッド 14 | |
|
2024/04/20 20:15 通りすがり ID:ergeOired350 |
ループ! 昔どこかで見たような…。
自動ベクター化 https://learn.microsoft.com/ja-jp/cpp/parallel/auto-parallelization-and-auto-vectorization?view=msvc-170#auto-vectorizer > 自動ベクター化機能は、/arch スイッチで指定されていない命令を生成することもあります。 > これらの命令は、実行時チェックによって保護され、引き続きコードが正しく実行されることが確認されます。 > たとえば、/arch:SSE2 のコンパイル時に SSE4.2 命令が送出されることがあります。
全部のループ(for|while|do)直前に #pragma loop( no_vector ) を付けるのは気が滅入りますが、 /d2Qvec-sse2only という隠しオプションもあるようです(VS2022で効くかは不明)。 https://stackoverflow.com/questions/47800965/
余談です。 VSは2週に1〜2回更新されていますが、VS自体の更新はされていますでしょうか。 現在17.9.6ですが、17.9.5では 「古い CPU を搭載したマシンで発生するクラッシュを修正しました。」 なんてしょーもない修正もありました(こちらはVS自体がクラッシュするという意味ですが)。
|
No.74 Re: バグ報告スレッド 14 | |
|
2024/04/20 17:51 SmokingWOLF ID:errreirpL408 |
>>73 組み込み命令 おお、情報ありがとうございます! 実はAVX命令が使われていると思われるところは、 ただのfor文が最適化された結果そうなっちゃってるので、 少なくとも私の側のコード内では、組み込み命令を明示的に使っている箇所は1つもなかったりします。
たとえば for(int i=0;i<〜;i++){ a[i] ^= b[i]; } ※少しボカしてます みたいな処理が勝手にAVX命令として最適化されちゃっているみたいで、 こんなのが無数にあって探すのが大変でした。 (コンパイラはSSE2かAVXか分からない何かの最適化をしたとしか教えてくれませんし)
オプションで組み込み関数の使用を一切なしにする(?)ことでもしかしたら解決できるのかもしれませんが、 こういった処理のパフォーマンスが全体的に落ちると考えるとこれまた悩ましいところです。
|
No.73 Re: バグ報告スレッド 14 | |
|
2024/04/20 16:59 通りすがり ID:ergeOired350 |
たとえばAVX命令入りの組み込みを使っている場合は /arch:SSE2を指定していたとしてもAVX命令が使われるようです。 https://devblogs.microsoft.com/oldnewthing/20201026-00/?p=104397 _mm_insert_epi32()はそのままPINSRD(SSE4)になっちゃうよ、という例。
https://learn.microsoft.com/ja-jp/cpp/intrinsics/x86-intrinsics-list にある_m_〜や_mm_〜とかですね。 DxLib等で使われていたら探すのは難しいかもしれませんね…。
|
No.72 Re: バグ報告スレッド 14 | |
|
2024/04/20 15:49 SmokingWOLF ID:errreirpL408 |
>>71 /arch:SSE2に設定するのではダメ? 情報ありがとうございます! 実はここまでの過程でVisual Studioのコンパイラオプションの「拡張命令セットを有効にする」の「/arch:SSE2」オプションを試してみたのですが(>>62 のGame.exeがそれでした)、 なぜかその状態でもAVX機能の最適化がオンになってしまう現象が確認されました。
調べると、/arch:SSE2は「最低でもSSE2を使うよ」という意味らしく(私にもよく分かりません)、 AVXを使わないようにするなら「/arch:IA32(CPU拡張機能を全部オフ)」にしないと ダメっぽいかもという話がありました。
ただ、Game.exe内ではDXライブラリ部分含めSSE命令と思われる最適化が他にもたくさん行われているようなので、 CPUの拡張機能全部オフはさすがに厳しいと思ってカットしていません。 AVX処理をしている部分もデータ処理速度が最適化されない場合の28倍くらいになってるので、 なるべく残して快適にしたいのが心情です。
|
No.71 Re: バグ報告スレッド 14 | |
|
2024/04/20 15:28 通りすがり ID:ergeOired350 |
最適化で使われる命令ってコンパイラオプションの/archで指定できませんでしたっけ? https://learn.microsoft.com/ja-jp/cpp/build/reference/arch-x86
SIMD命令はMMXからAVX512までいっぱいありますがSSE2で十分な気がします。 WindowsはWindows 7の2018年3月のアップデートから SSE2が必須となっています(当時Vistaはサポート終了済み)。 https://support.microsoft.com/ja-jp/topic/110d3a09-810a-c447-72a7-d52c561364cd (アプリケーションの代表例として)ブラウザーは以下のようになっています。 SSE2 Chrome 35 (2014-05-20) SSE2 Firefox 49 (2016-09-20) SSE3 Chrome 89 (2021-03-02)
|
No.70 Re: バグ報告スレッド 14 | |
|
2024/04/19 19:06 SmokingWOLF ID:errreirpL408 |
>>69 動作する状況について 情報ありがとうございます。
3.14暗号化までは動作するとのことで、やはりAVXがどう考えても影響している気がするのですが、理解が難しい状況のようです。 ゲームデータ作成ダイアログにもそういった暗号化別の挙動についての情報を表示することで、 開発者の方にも理解の上で暗号化バージョンを選んでいただこうと思います。
このたびは粘り強い情報提供、誠にありがとうございました。
|
No.69 Re: バグ報告スレッド 14 | |
|
2024/04/19 20:52 初心者 ID:erprpgF568 |
>>68 ありがとうございます。
CPU intel i5 480m Windows10Pro (2011年頃のノートPC) CPU intel Celeron P4600 Windows11Home (2011年頃のノートPC) 手元ですぐに検証できるノートPCを使用しています。
ウディタv3.324フルパッケージサンプルゲームを使用
2機種とも 非暗号化(暗号化無し) 起動可 ----- ゲームデータ作成時暗号化設定のDataフォルダまるごと暗号化(Data.wolfのみ)で出力
2機種とも Ver3.14時点の暗号化 Ver3.00〜3.13時点の暗号化 Ver2.25〜2.29時点の暗号化 起動を確認しています。 (最新の暗号化のみ起動しませんでした)
4/19 20:50追加 検証に使用した同じファイルを Celeron N3050搭載のWindows 10 Home (2016年頃のノートPC) ですべて起動確認をしました。 (最新の暗号化も起動しました)
|
No.68 Re: バグ報告スレッド 14 | |
|
2024/04/19 18:47 SmokingWOLF ID:errreirpL408 |
>>67 やはり古いPCで最新暗号化が起動できない 続報ありがとうございます! となると、CPUとは別の問題があるか、実際の環境だとCPUの機能の判定(AVXがあるかないか)が うまくいっていない可能性などもありそうな気がします。
ひとまず、もう手がないので、今回の問題は 動作環境のところに注意書きとして記載して対応させていただくとして、 最後に以下の情報だけ教えてくださると今後の参考になります。
●暗号化なしならGame.exeは起動できますか?
●Ver3.324で「Ver3.14暗号化」をしたゲームデータならGame.exeが起動できますか?
(「Ver3.14暗号化」はVer3.31暗号化と違ってAVX命令を含まない暗号化が行われます。 もしこれが動作するなら、やはりCPUの問題の可能性が疑われそうです。 ウディタVer3.324で、CPUのAVX命令が使えない場合はその処理を回避するように組んだつもりなのですが、 仮想環境上ではうまくいっても現物では判定がうまくいかないなどあるかもしれません)
|
No.67 Re: バグ報告スレッド 14 | |
|
2024/04/19 18:02 初心者 ID:erprpgF568 |
>>66 対応ありがとうございます。
残念ながら、 CPU intel i5 480m Windows10Pro (2011年頃のノートPC) CPU intel Celeron P4600 Windows11Home (2011年頃のノートPC) では起動できませんでした。
ウディタv3.324フルパッケージサンプルゲームを使用 最新の暗号化(v3.324)でゲームデータ作成時暗号化設定のDataフォルダまるごと暗号化(Data.wolfのみ)で出力 良いお知らせができなく申し訳ないです 一応イベントビューアーでの画像を添付します (i5-480mマシンで取得)
|
No.66 Re: バグ報告スレッド 14 | |
|
2024/04/19 15:20 SmokingWOLF ID:errreirpL408 |
>>59-65 最新暗号化を使うと昔のPCで起動できなくなる Ver3.324で修正を試みました。 AVX命令のないCPUで起動できるところまではいきましたが、「何らかのCPU拡張命令」自体は Game.exe内の起動時以外の場所や、試用しているDXライブラリ内の処理でも多く使われているようなので、 もし動作しないイベントコマンドなどお気づきになられましたらご指摘ください。 (ウディタの開発に使っているVisual Studio2022では、コード内で「CPUの拡張命令」に合わせた 最適化をした場所は教えてくれるのですが、それがSSE命令に合わせた最適化なのか AVX命令に合わせた最適化なのかを知ることはできないようで、区別ができていません)
|
No.65 Re: バグ報告スレッド 14 | |
|
2024/04/18 23:27 SmokingWOLF ID:errreirpL408 |
>>63-64 CPUによっては暗号化データありだと最新版が起動できない 続報ありがとうございます! 2013年頃のCPUなら動作するとのこと、こちらも同じ感触でしたので 裏付けが取れて助かります。
どうにかCPUの機能別に検証できないかと色々探したところ、 仮想環境でCPUの機能をオンオフしながら試せるものがありましたので 色々試してみました。
その結果、2011年の古いCPU「Core i5-480M」の機能に合わせて 『AVXなし VT-xあり VT-dなし AES-NIなし』 というオプションで試したところ、暗号化ファイルありの状況で メモリ違反の書き込み違反で起動に失敗する状況をおそらく再現することができました。
そしてその状態からAVX設定だけ「なし→あり」に変えたところ、 最新暗号化ファイルのある状況で問題なく起動に成功するようになることが判明しましたので、 「CPUのAVX命令が使えるか否か」がエラー原因の重要な差だということが分かりました。 (Game_6S.exeでAVXを使わないように設定したつもりなのですがうまく行っていないか、 そういうオプションじゃなかったのかもしれません。手元で再挑戦してみます)
この情報を元に、対策が打てないか考えてみます。 少なくとも、起動時に「CPUが古いので起動できない」というエラーを出すことは可能になるはずです。
このたびは貴重な情報提供、ありがとうございました。
|
No.64 Re: バグ報告スレッド 14 | |
|
2024/04/18 17:25 初心者 ID:erprpgF568 |
>>59 の追加です(違うところにあったノートPC2台を検証) --- ウディタv3.323フルパッケージサンプルゲームを使用 ゲームデータ作成時暗号化設定のDataフォルダまるごと暗号化(Data.wolfのみ)で出力
最新の暗号化(v3.323)で CPU intel Pentium P6200 起動せず Windows10Pro (2011年頃のノートPC) CPU intel Core i3-3110M 起動可 Windows10Pro(2013年頃のノートPC)
2013年頃のノートPCで起動できました。
|
No.63 Re: バグ報告スレッド 14 | |
|
2024/04/18 00:21 初心者 ID:erprpgF568 |
>>62 ありがとうございます。 検証用のサンプルゲーム最新の暗号化したものに Game_6S.exeを追加して起動テストしたのですが起動しませんでした。 検証に使用したのは先ほどと同じノートPCです
CPU intel i5 480m Windows10Pro (2011年頃のノートPC) CPU intel Celeron P4600 Windows11Home (2011年頃のノートPC)
イベントビューアーで見られる例外コードは 0xc0000005 となっていて変わらないようでした。
原因がわからなくて申し訳ありません。
ちなみに添付画像にエラーが複数ありますがGame_6S.exeを数回起動確認したために記録されているものです。 検証に使用したノートPCはメモリの故障は無いと思います。 ※絶対に故障してないかといえばわからないです
|
No.62 Re: バグ報告スレッド 14 | |
|
2024/04/17 23:39 SmokingWOLF ID:errreirpL408 |
>>61 全部のGame.exeを試したが動作しなかった テスト誠にありがとうございます! どれも動作しなかったとは! おっしゃるAES New Instructions機能も含め、どこかで最新のCPU命令を使っている場所が 入ってしまって昔のCPUで動かない、という可能性は十分考えられそうです。 (AVX機能というのもあやしそうです)
ウディタ全体のパフォーマンスが下がるかもしれませんが、 CPUの拡張命令をSSE2(恐らく2004年頃のCPUに実装されている処理)までしか 使わないように設定したGame_6S.exeを作ってみました。 よければ一度こちらを2011年のPCでお試しください。
silversecond.com/WolfRPGEditor/Data/20240417_Game_6S.zip 3.5MB
もし動作して、全体のパフォーマンスにさほど影響がないようなら 次Verからこの設定にすることも検討してみます。
|