「説明はいいから」という方は、最後のほうへ直接どうぞ


● SMODは重いです

	SMODは、ラグドールがオブジェクトを素通りするのを何とかしたかったのが作るきっかけとなっています。

	おそらく当時のPCスペックを考えた結果、ゲームに影響がないということで、ラグドールをCPU負荷が低い方法にしたんだと思います。
	Valveはできるだけ色々な人にHalfLife2を楽しんでもらいたかったんだと思います。

	でも、本来できるはずのことができないというのは非常に悔しいのでSDKが出てすぐ弄りはじめました。

	結局何が言いたいのかというと、SMODは重くなるべくして生まれたようなものだという事です。
	SMODはやりたい事を"力技"で"非スマート"に実現しています。
	とりあえず実現した後に、こっそり最適化してたりしてます。


● SMODはなんで重い？

	HalfLife2というか大抵のネット対応ゲームはサーバとクライアントに分離してます。
	本来サーバはゲームの処理中心で動作し、クライアントは最低限のメッセージをサーバから受け取りそれを、
	プレイヤーに見える形、すなわちグラフィックとして表現したりする仕組みになっています。
	マルチプレイヤーMODは、サーバからの情報を予測してクライアントで処理したり、メッセージを減らしたり工夫をしながらラグを減らします。

	でも、SMODはシングルプレイヤーMODなので、基本的にクライアントとサーバで仕事を分担する必要がないため、
	サーバ側の情報をフルに使って無茶な計算を行い、クライアントに渡すようにしています。
		
	たとえば、銃で撃ったとき物理オブジェクトのコンクリート片が飛ぶとします。
	通常のマルチプレイMODはこれをクライアント側で処理します。
	こうする理由は、クライアントごとに結果が変わってもゲームに影響がなく、サーバからオブジェクトが発生する
	イベントだけ受け取れば以降メッセージが発生しないため、サーバとネットワークに負荷がかからないためです。
	また、クライアントのオブジェクトはサーバ上のオブジェクトと干渉しないため、計算量は減ります。

	でもSMODではサーバ側で発生させてます。
	なぜかというと、そのコンクリート片を拾ってキックで敵に叩きつけて倒したかったからです。それだけです。
	そういうくだらない、でも普通のMODじゃできない色々なことをしたいがために計算量が増えています。

	■ 重い理由はだいたい次の通りです

		・サーバラグドールを含む、サーバ側で発生させる物理オブジェクトの計算量が増大
		・発生するエフェクト量(計算量)の問題
		・パーティクル(透明度を持つポリゴン)の問題
		・マップ上にNPCなどを大量配置している

	■ 重いとよく起こる問題は次のとおりです

		・カクカクする
		・狙いが定まらない
		・ファンの回転数が上がる
		・電気代が気になりだす
		・ATIのビデオカードがまれにブルースクリーン
		・NVidiaのビデオカードがまれブルースクリーンも出さずにリセット

	■ メモリも多く使います。使う理由は次のとおりです

		・大量の武器をプリキャッシュすることによる、メモリの消費
		・エフェクトに必要なマテリアルのキャッシュ
		・本来存在しないはずのオブジェクトをマップに配置するためモデル情報が多めになる

	■ メモリが不足するとよく起こる問題は次のとおりです

		・HalfLife2自体がメモリが少ないと不安定になる
		・CPUが他の処理に持っていかれると、HalfLife2が非常に不安定になるため、
		　仮想メモリへのアクセスが増えると、結果、結局不安定。

● で、結局どうすればよいのか？

	■ 重いのをどうにかする

		重いことに関しては、SMOD特有の機能を無効にすることで解消できます。
		最近のバージョンアップでほぼ無改造のHalfLife2と同じ状態に戻せるようになりました。

		コンソロール(console)から、「exec default_hl2_gamemode.cfg」と入力すれば、簡単に設定できます。

		この設定をした状態でゲームを始めて、遊びつつ、設定を足していってください。

	■ メモリをどうにかする

		残念ながら、MODの設定からは使用メモリを減らすことが出来ません。
		ハードウェア的に足すしかありません。
		報告例からすると、大体1.5Gが快適かどうかの目安らしいです。

		とりあえず、1G未満のマシンで動作させるのはオススメできません。
		動かないとは言いませんが、不安定でかつロードが死ぬほど長いです。
		でも東京シーナリーほどではありません。
