YamaStudio.net

ゲーム攻略のその先へ。FPS/VR情報&デスクトップツール開発ブログ

【C#開発】ゲームのFPSを落とさない!ゲーマー向け常駐アプリの軽量化テクニック

公開日: 2026年5月20日 | カテゴリ: ツール開発 / C#

バックグラウンド処理がゲームに与える影響を考える

以前Microsoft Storeに公開した「スリープさせない!デスクトップ警備員」。このPCゲーマー向け常駐アプリの開発時に最も気を配ったのが「ゲームのパフォーマンスに一切の悪影響を与えないこと」でした。FPSゲームはCPUとメモリのリソースを極限まで消費するため、常駐アプリが重い処理を行うとマイクロスタッター(カクつき)の原因になります。

C#でのメモリ消費を抑える工夫

C#には不要なメモリを自動で解放するガベージコレクション(GC)がありますが、ゲーム中に発生すると処理落ちの原因になります。ループ処理の中で毎回 new でインスタンスを生成するのを避け、一度作ったものを再利用(プーリング)する設計にしました。また、システムトレイ常駐時はUIの描画処理を完全に停止させ、リソース消費をカットしています。

Windows APIの効率的な呼び出し

スリープを阻害するためには、SetThreadExecutionState などのネイティブAPIをC#から呼び出す(P/Invoke)必要があります。過剰な頻度で呼び出さないようタイマーのインターバルを最適化し、「処理していることをOSに気づかせない」レベルの軽量さを目指しました。他人のPC環境でも邪魔にならないように最適化するプロセスこそが、開発の醍醐味です。

← 記事一覧へ戻る