web-dev-qa-db-ja.com

ユニティ(3D)を使用している場合、12.04でゲームのパフォーマンスが低下した場合の対処方法

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クライアントをダウンロードして、デュアルブートに戻ることは考えられません。

任意の助けに感謝します。

9
dong

これは本当の解決策ではありませんが、少なくとも(願わくば)便利な回避策かもしれません(Unity 2Dを単に使用することは別として)。

ゲームを開始する前に、Nautilus(ファイルマネージャー)を開き、/usr/share/applicationに移動します。ターミナルを開き、metacity --replaceと入力してEnterキーを押します。パニックしないでください、Unityインターフェースは消えますが、これは私の意図です。ファイルマネージャーからゲームを起動します(ゲームのランチャーは、私が言及したフォルダーにあるはずです)。ゲームのプレイが終了したら、ターミナルウィンドウでunity --replaceと入力し、Enterキーを押します。デスクトップが元の状態に復元されました。
これはおそらくUnityがバックグラウンドで実行されており、問題を引き起こしているため、機能するはずです。

また、これをバグとして報告します。それは間違いなく修正が必要なものです。バグレポートを送信する場合は、この問題を経験している他の人が「影響を受けている」とマークできるように、ここにリンクを残してください。

3
RobinJ

常に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ドライバーには、次のような大規模な修正が数多くあります。

  • 次のGPUのサポートが追加されました。
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • IncludeImplicitMetaModes Xconfigurationオプションの機能を強化しました:
  • Xの初期化時に複数のディスプレイデバイスが使用されている場合でも、プライマリディスプレイデバイスに暗黙的なメタモードが追加されます。
  • ディスプレイデバイスのモードプールにその解像度のモードがない場合でも、一般的な解像度に対して暗黙的なメタモードが追加されます。
  • IncludeImplicitMetaModes構成オプションの構文を拡張しました。たとえば、どのディスプレイデバイスが
    暗黙のメタモードの作成に使用されます。
  • IncludeImplicitMetaModes X構成の説明を参照してください
    詳細については、READMEのオプション。

  • RandR 1.0/1.1リクエストRRGetScreenInfoおよびRRSetScreenConfigの処理を変更し(例: `xrandr -q --q1`および` xrandr --size ... `および` xrandr --orientation ... `)メタモード。これは、NVIDIA Xドライバーバージョン295.xx以前の動作でしたが、302.xxリリースでは、これらのRandR 1.0/1.1リクエストの処理が変更され、単一のRandR出力のモードで動作するようになりました。
  • IncludeImplicitMetaModesおよびRandR 1.0/1.1の処理に対する上記の変更により、フルスクリーンアプリケーション(たとえば、SDLベースのアプリケーション、Wine)は、より多くの解像度を利用できるようになり、複数のモニター構成との相互作用が向上するはずです。
  • G8x、G9x、およびGT2xx GPUがサスペンドから復帰した後に黒い画面または破損を表示する可能性があったバグを修正しました。
  • Fork(3)を呼び出したときに一部のOpenGLプログラムがハングする可能性のあるいくつかのバグを修正しました。
  • --display-device-stringオプションで作成されたProbeDisplaysクエリの結果が誤ってフォーマットされるnvidia-settingsバグを修正しました。
  • ディスプレイのホットプラグ時のnvidia-settingsコントロールパネルへの更新の応答性を改善しました。
  • いくつかの変換を設定するとき、特に変換された表示をパンするときに表示が破損するバグを修正しました。
  • ディスプレイが最初にホットプラグされたときに余分なRandRイベントが生成されるバグを修正しました。
  • 名前に「@」が含まれるX11モードラインが拒否されるバグを修正しました。
  • グラフィックスボード上の単一のDisplayPortコネクタに複数のディスプレイを接続できるDisplayPort 1.2ブランチデバイスのサポートが追加されました。
  • コンテキストがレンダリングをRGBオーバーレイドロウアブルにバインドしている場合、ほとんどのOpenGLテクスチャのアップロードが遅くなるバグを修正しました。
  • 一部のMCP7x(IGP)GPUでXサーバーを再起動した後、HDMI経由のオーディオが機能しなくなるバグを修正しました。
  • X構成オプション「UseDisplayDevice」を更新して、GPUの値「none」を尊重します。
  • Nvidia-installerでDKMSのサポートが追加されました。 DKMSを介してカーネルモジュールをインストールすると、別のLinuxカーネルに変更したときにモジュールを自動的に再構築できます。 READMEおよびnvidia-installerのヘルプテキストまたは「--dkms」オプションを参照してください。
  • RandR出力プロパティ_ConnectorLocation、ConnectorNumber、ConnectorType、EDID、_GUID、SignalFormatを追加しました。これらのプロパティの詳細については、READMEを参照してください。
  • 最大3つのディスプレイを備えたすべてのG80 + SLI構成へのBase Mosaicの拡張サポート。
  • 複数のDisplayPortモニターが1つのGPUに接続されている場合、一部のモニターがDPMSサスペンドモードからの復帰に失敗するバグを修正しました。
  • Nvidia-settingsコントロールパネルの[X Server XVideo Settings]ページからXVideo属性のコントロールを削除しました。 XVideo属性は、XVideoプレーヤーアプリケーションで、またはxvattrなどのユーティリティを使用して構成できます。
  • XVideoアダプターのすべてのポートが色補正設定を共有するバグを修正しました。
  • 次のX構成オプションのサポートが削除されました。
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh

  • 異なるVTでXサーバーを切り替えるときに、NVIDIA 3D Vision Proが適切に動作しないバグを修正しました。
  • 回転、反射、または変換がディスプレイデバイスに適用されるときのデスクトップパンのサポートが追加されました(RandRまたはMetaMode構文を使用)。その場合、以前はパンは無視されていました。
  • 1
    user79034

    編集: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 .:それはもちろん改善できます、私の計画はオプションにキーボードのセットアップを追加することですが、私はそれを非常にゆっくり行います;)、誰かがそれを改善/クリーンアップしたら、私のスクリプトを更新できるように投稿してください:)

    1
    Aquarius Power

    Unity 3Dを使用する場合、多くの3Dエフェクトなどが有効になっていますか? (キューブ、デスクトップアニメーション、メニューエフェクトなど)これらは、良いマシンであってもパフォーマンスを低下させる可能性があります。

    Nvidiaの設定を確認する価値があるかもしれません。ダッシュで「nvidia」を検索するだけで見つけることができます。遅延が発生する前に、nvidiaの設定をかなり微調整する必要がありました。

    ゲームの設定を確認し、少し変更して、fpsの変化を確認します。

    Ubuntuの最新のアップデートを必ず入手してください。これにより、問題が解決する場合がありますが、あなたの場合、それが役立つとは思いません。

    0
    nisshh