Ubuntu 12.04の新規インストール以降、ゲームのパフォーマンスが大幅に低下します
私のPCはNvidia Geforce GTX 460、AMD Phenom II X4 965 CPU、および4GBのRAMで構成されており、nvidias独自のドライバーを使用しています。
主に、Linuxクライアントを使用してHeroes of Newerthをプレイします。私はubuntu 9.10以降にこれを行い、プロプライエタリのnvidiaドライバーを使用したときにパフォーマンスの問題を経験したことはありませんでした。私のfpsは常に60のvsyncフレームキャップに最大化されていました。
私はubuntu 12.04を実行しているので、約30〜45 fpsを取得し、ゲーム体験は一般的に非常に遅れています。 ubuntu 12.04ではデフォルトでnvidias 295.40ドライバがデフォルトでインストールされるという問題を抱えている人が多いことを知っています。そのため、最新の安定版295.49、最新のベータ302.07、さらにubuntu 11.10で使用されていた旧バージョン295.33を手動でインストールしました(パフォーマンスに問題はありませんでした)。 4つのドライバーバージョンすべてで同じパフォーマンスの問題が発生していたため、時間の無駄でした。
Unity 2Dを使用すると、fpsは60に戻り、ゲーム全体のパフォーマンスが向上します。したがって、ubuntu 12.04のUnityバージョンを実行しているときにのみ、これらの問題が発生します。
また、ホームディレクトリにある.configおよび.compiz-1フォルダーを削除しようとしましたが、Unityを使用する場合、ゲームのパフォーマンスは混乱します。
次に何を試すべきかわからない...問題をさらにデバッグする方法を知っている人はいますか?たぶん、問題をよりよく分析するためにより多くのデータを提供する方法はありますか?たぶんいくつかのcompiz設定をいじってみてください?
このパフォーマンスの低下は非常にイライラするものであり、ヒーローズオブニューアーズのWindowsクライアントをダウンロードして、デュアルブートに戻ることは考えられません。
任意の助けに感謝します。
これは本当の解決策ではありませんが、少なくとも(願わくば)便利な回避策かもしれません(Unity 2Dを単に使用することは別として)。
ゲームを開始する前に、Nautilus(ファイルマネージャー)を開き、/usr/share/application
に移動します。ターミナルを開き、metacity --replace
と入力してEnterキーを押します。パニックしないでください、Unityインターフェースは消えますが、これは私の意図です。ファイルマネージャーからゲームを起動します(ゲームのランチャーは、私が言及したフォルダーにあるはずです)。ゲームのプレイが終了したら、ターミナルウィンドウでunity --replace
と入力し、Enterキーを押します。デスクトップが元の状態に復元されました。
これはおそらくUnityがバックグラウンドで実行されており、問題を引き起こしているため、機能するはずです。
また、これをバグとして報告します。それは間違いなく修正が必要なものです。バグレポートを送信する場合は、この問題を経験している他の人が「影響を受けている」とマークできるように、ここにリンクを残してください。
常に304.22 Nvidia Betaドライバーに更新して、何が起こるかを確認できます。 Ubuntu 12.04 LTSとNvidia 295.59バージョンと302.07バージョンでいくつかの小さな問題が修正されたようで、パフォーマンスに大きな問題がありました。ほとんどの問題は、最新の304.22ドライバーを更新することで解決されました。 GeForceのパフォーマンスはようやくWindows XPと同等になりましたが、いくつかのアプリケーションからはまだ小さな問題がありますが、状況は本当に改善されています。古い安定したドライバーは、予期しない問題や問題を引き起こす新しいカーネルとUbuntuのローリングアップデートでNvidiaのチームによってテストされていないように見えるため、ベータ版であっても、常に最新のNvidiaドライバーを使用する必要があります。問題は、UbuntuのメンテナーとLinux開発者がすべての同期を維持できるように、Nvidiaがドライバーをオープンソース化する必要があることですが、それはすぐには解決しない進行中の議論です:
入手できます---(http://www.geforce.com/drivers/beta-legacy
304.22ドライバーには、次のような大規模な修正が数多くあります。
IncludeImplicitMetaModes X構成の説明を参照してください
詳細については、READMEのオプション。
編集:Xはxscreensaverを介してロック可能になりました
こんにちは!これを試して、私はそれを使用して、主にゲームのために素晴らしい結果を得ています! Unityで管理できないため、素晴らしい結果が得られるかもしれません!
新しいXセッションを作成し、コマンドを実行するか、ターミナルを開いてそこで実行できるようにするスクリプトを作成しました。
openNewX.sh
#!/bin/bash
function FUNCisX1running {
ps -A -o command |grep -v "grep" |grep -q -x "X :1"
}
useJWM=true
useKbd=true
while [[ ${1:0:2} == "--" ]]; do
if [[ "$1" == "--no-wm" ]]; then #opt SKIP WINDOW MANAGER (run pure X alone)
useJWM=false
shift
Elif [[ "$1" == "--no-kbd" ]]; then #opt SKIP Keyboard setup
useKbd=false
shift
Elif [[ "$1" == "--isRunning" ]]; then #opt check if new X :1 is already running
if FUNCisX1running; then
exit 0
else
exit 1
fi
Elif [[ "$1" == "--help" ]]; then #opt show help info
echo "usage: options runCommand"
# this sed only cleans lines that have extended options with "--" prefixed
sedCleanHelpLine='s"\(.*\"\)\(--.*\)\".*#opt" \2"' #helpskip
grep "#opt" $0 |grep -v "#helpskip" |sed "$sedCleanHelpLine"
exit 0
else
#echoc -p "invalid option $1"
echo "PROBLEM: invalid option $1"
$0 --help
exit 1
fi
done
#echo "going to execute: $@"
#runCmd="$1" #this command must be simple, if need complex put on a script file and call it!
runCmd="$@" #this command must be simple, if need complex put on a script file and call it!
#if ! echoc -q -t 2 "use JWM window manager@Dy"; then
# useJWM=false
#fi
# run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
if ! FUNCisX1running; then
xterm -e "\
echo \"INFO: hit CTRL+C to exit the other X session and close this window\";\
echo \"INFO: running in a thread (child proccess) to prevent ctrl+c from freezing this X session and the machine!\";\
echo \"INFO: hit ctrl+alt+f7 to get back to this X session (f7, f8 etc, may vary..)\";\
echo ;\
echo \"Going to execute on another X session: $runCmd\";\
Sudo X :1"&
fi
#Sudo chvt 8 # this line to force go to X :1 terminal
# wait for X to start
while ! FUNCisX1running; do
sleep 1
done
# run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
if $useJWM; then
if [[ ! -f "$HOME/.jwmrc" ]]; then
echo '<?xml version="1.0"?><JWM><Key mask="4" key="L">exec:xscreensaver-command --lock</Key></JWM>' \
>$HOME/.jwmrc
#if ! jwm -p; then
# rm $HOME/.jwmrc
# echo ".jwmrc is invalid"
#else
echo "see http://joewing.net/programs/jwm/config.shtml#keys"
echo "with Super+L you can lock the screen now"
#fi
fi
jwm -display :1&
fi
kbdSetup="echo \"SKIP: kbd setup\""
if $useKbd; then
kbdSetup="setxkbmap -layout us"
fi
sleep 2
xscreensaver -display :1&
# setxkbmap is good for games that have console access!; bash is to keep console open!
# nothing
#xterm -display :1&
# dead keys
#xterm -display :1 -e "setxkbmap -layout us -variant intl; bash"&
# good for games!
xterm -display :1 -e "$kbdSetup; bash -c \"$runCmd\"; bash"&
#xterm -display :1 -e "$kbdSetup; bash -c \"$@\"; bash"&
また、次の場所に追加します:compiz config settings manager-> window rules-> non closeable windows:
(class=XTerm) & (title=Sudo X :1) & (name=xterm)
これにより、「ウィンドウ」を閉じると現在のXセッションがフリーズするため、そのターミナルを閉じることができなくなります(ctrl + cを使用して他のXセッションとターミナルも閉じます)。
Alt + Enterの全画面表示の問題がなく、Alt + TABの全画面表示の問題もないという利点があります。 Urban Terror(Linuxネイティブ)からWineで実行されるゲームまで、あらゆる3Dゲームをより安定して実行できます! Quakeを使用したFirefoxのような3Dゲームを実行する一部のブラウザでも!
Obs .: jwmパッケージをインストールすることもできますが、必須ではありませんが、そこでウィンドウ管理を行う必要がある場合は違いが生じます。
PS .:それはもちろん改善できます、私の計画はオプションにキーボードのセットアップを追加することですが、私はそれを非常にゆっくり行います;)、誰かがそれを改善/クリーンアップしたら、私のスクリプトを更新できるように投稿してください:)
Unity 3Dを使用する場合、多くの3Dエフェクトなどが有効になっていますか? (キューブ、デスクトップアニメーション、メニューエフェクトなど)これらは、良いマシンであってもパフォーマンスを低下させる可能性があります。
Nvidiaの設定を確認する価値があるかもしれません。ダッシュで「nvidia」を検索するだけで見つけることができます。遅延が発生する前に、nvidiaの設定をかなり微調整する必要がありました。
ゲームの設定を確認し、少し変更して、fpsの変化を確認します。
Ubuntuの最新のアップデートを必ず入手してください。これにより、問題が解決する場合がありますが、あなたの場合、それが役立つとは思いません。