ゲーム中に突然止まるWindows 95

ゲームなどしているとたまに「不正な……」と表示され,急にゲームが止まってしまいます。何がいけないのですか。


本誌6/1号でWindowsがなぜエラーを出すのかについての特集記事を掲載しています。この特集で述べたように,Windowsはさまざまなエラー(落ちる)要因を抱えており,ある種のエラーが何を意味しているかは非常に判断が難しいといえます。しかし,大ざっぱに区分けすると次の三つのケースのいずれかになると思われます。
●ゲームそのものが原因
 どのPCで実行しても,ゲームの同じシチュエーションで同じようにエラーが発生する場合,おそらくゲームそのものにバグが含まれていると考えられます。
 ゲームは,高速な応答性や描画が求められる非常にシビアなソフトです。そのため,さまざまな高度なテクニックが随所で使われています。このことは,同時にバグを作りやすい要因になります。
 また,ゲームプログラマは必ずしもWindowsプログラマばかりではありません。WindowsにはWindows世界のプログラム作法がありますが,ゲームプログラマはWindows作法に習熟していない確率が高いかもしれません。
 そのエラーが必ず出現し,ほかのPCでも同じようにエラーが出る場合,メーカーに連絡してみるといいでしょう。バグを確認し,修正ファイルを送ってくれるかもしれません。
●Windows側に原因
 特集でも取り上げられていましたが,WindowsはバグがないOSではありません。そのゲームが,たまたまWindowsのバグに触れるようなプログラムを含んでいると,上記のようなエラーが出るかもしれません。Windowsそのものが原因である場合,前述のケースと同じように,すべてのWindowsでエラーを再現できます。
 ただ,デバイスドライバ,とくにゲームで多用されるDirectX関連のドライバが原因でエラーが発生しているなら,ほかのPCでエラーが再現できない可能性もあります。
 これらを確認するには,構成が異なるPCでエラーが再現できるか,またWindowsのバージョンの違い(OSR2やOSR2.1など)でエラーの発生条件が変わる(あるいはエラーが解消される)かを調べるとよいでしょう。
 ゲームかWindowsのバグがエラーを発生しているなら,デバッガを使用して詳しい原因まで追跡できます。ただし,デバッガを使用するには最低でもインテルプロセッサのアセンブリ言語の知識が必要です。
●ハードウェアに問題がある
 ゲームはCPUやメモリを酷使します。例えば,CPUの発熱は通常のアプリケーションより相当に多くなり,またメモリアクセスも頻繁に行われます。そのため,オーバークロックをしているPCや,メモリアクセスタイミングをシビアにとっているPCでは,通常のアプリケーションでは発生しないエラーがゲームに限り発生することがあります。
 また,搭載しているサウンドカードやビデオカードのDirectXのインプリメントにバグがないとはいえません。これは先のドライバにも関係していますが,ハードのエラーに分類できます。
 ゲームでエラーが出て,その原因がはっきりしないときは,オーバークロックしているならクロックを下げてみる,メモリの設定を変えてみるなど,ハードウェア関連の設定を見直すとよいでしょう。バグが原因でないのなら,これらの試行錯誤でエラーを追放できるかもしれません。
●エラーをなくすには
 ゲームやアプリケーションが起こすエラーの原因は,バグからハードまで多様です。このうち,ユーザーが修正できるのは(プログラムが読める人ならバグそのものを修正できますが)ハードウェアだけです。
 エラーを少なくするために,まずハードを安定させるよう心がけましょう。CPUのオーバークロックは,たとえ普通のアプリケーションで異常が現れなくても,ゲームではエラーの原因になりかねません。また,サウンドやビデオカードなどのコンフリクトを取り除き,安定した動作が得られるよう日ごろからチューニングしておきます。そうするだけで,相当にエラーを減らすことができるはずです。
(米田 聡)