いつからか Windows Update の影響で GMS と GMS2製のアプリケーションが処理能力に余裕があるにもかかわらず、30~40FPSに落ちる現象が起きるようになりました。
アップデートの影響でスレッドのスケジューリング処理が変わり、GameMaker との相性が悪くなったのが原因とのこと。
詳細は下のスレッドを参照。
forum.yoyogames.com
本記事ではその解消方法を開発側とユーザー側で分けて書いていきます。
開発側
Sleep Margin
Sleep Margin はフレームレートを調整するためのSleep関数までの間隔です。この値を調整することで解消されます。
Sleep Margin の詳細は下のスレッドを参照。
forum.yoyogames.com
Sleep Margin はオプションから調整可能です。
GMS の場合は Global Game Settings の Windows タブから、
GMS2 の場合は Game Options の Windows から、
GMS では 1ms、GMS2 では 10msがデフォルト値になっていますが、Windows のゲームでは 15~25ms が好ましいとされてるようです。ちなみに 10ms でも特に問題なさそうでした。
ユーザー側
外部ライブラリ
"開発側" でも記述しましたが、有志の方が作ったライブラリでユーザー側でも解消可能です。
基本的には上のリンクからDLLをダウンロードして、EXEファイルと同じディレクトリにDLLを配置すればおkです。
ただ、アプリケーションすべてがパック化されているケースでは上記方法でDLLが読み込まれません。
GMSではアプリケーションを出力する方法として以下の3つがあります。
1.Zip化
2.インストーラー化
3.すべてパック化
GMS2 では1と2の方法のみ出力可能です。
GMS製で且つパック化されているもの以外は上記方法で可能です。(独自でパック化していなければ)
EXEと同じディレクトリに data.win や他のDLLがある場合はパック化されていない可能性が高いです。
パック化されている場合でもZipと同じように解凍すればDLLを読み込めるようになります。